ARM Cortex-A8: Как использовать как Neon, так и VFPV3
-
26-09-2019 - |
Вопрос
Я использую процессор Cortex-A8, и я не понимаю, как использовать -mfpu
флаг.
На Cortex-A8 есть оба VFPV3. а также неон Совместные процессоры. Ранее я не знал, как использовать неоновый, поэтому я использовал только
gcc -marm -mfloat-abi=softfp -mfpu=vfpv3
Теперь я понял, как Camd Processors бегают, и я написал определенный код, используя неоновые вторники. Использовать Neon Co-Processor, теперь мой флаг -MFPU должен изменить -mfpu=neon
, так что моя командная строка компилятора выглядит так
gcc -marm -mfloat-abi=softfp -mfpu=neon
Теперь это означает, что мой vfpv3
больше не используется? У меня много кода, который не использует Neon, делают эти части не используют vfpv3
.
Если оба Neon и VFPV3 все еще используются, у меня нет проблем, но если только один из них используется, как можно использовать обоими?
Решение
Neon подразумевает, что имея традиционную поддержку VFP. VFP можно использовать для «нормальных» (не векторных) расчетов с плавающей запятой. Кроме того, Neon не поддерживает двойную точность FP, поэтому для этого можно использовать только инструкции VFP.
То, что вы можете сделать, это добавить -S в командную строку GCC и проверять сборку. Инструкции, начиная с V (например, VLD1.32, VMLA.F32) - неоновые инструкции, а те, которые начинаются с f (FLDD, FMACD), являются VFP. (Хотя документы ARM теперь предпочитают использовать префикс V даже для инструкций VFP, GCC не делает этого.)