ARM Cortex-A8: как использовать как NEON, так и vfpv3 - PullRequest
8 голосов
/ 18 ноября 2010

Я использую процессор Cortex-A8 и не понимаю, как использовать флаг -mfpu.

На Cortex-A8 имеются сопроцессоры vfpv3 и неон . Раньше я не знал, как использовать неон, поэтому я использовал только

gcc -marm -mfloat-abi=softfp -mfpu=vfpv3

Теперь я понял, как работают процессоры SIMD, и я написал определенный код с использованием встроенных функций NEON. Чтобы использовать неоновый сопроцессор, мой флаг -mfpu должен измениться на -mfpu=neon, поэтому моя командная строка компилятора выглядит следующим образом

gcc -marm -mfloat-abi=softfp -mfpu=neon

Теперь, это означает, что мой vfpv3 больше не используется? У меня много кода, который не использует NEON, эти части не используют vfpv3.

Если неон и vfpv3 все еще используются, то у меня нет проблем, но если используется только один из них, как я могу использовать оба?

1 Ответ

10 голосов
/ 18 ноября 2010

NEON подразумевает также наличие традиционной поддержки VFP.VFP можно использовать для «обычных» (не векторных) вычислений с плавающей точкой.Кроме того, NEON не поддерживает FP с двойной точностью, поэтому для этого можно использовать только инструкции VFP.
Что вы можете сделать, это добавить -S в командную строку gcc и проверить сборку.Инструкции, начинающиеся с V (например, vld1.32, vmla.f32), являются инструкциями NEON, а инструкции, начинающиеся с F (fldd, fmacd), являются VFP.(Хотя в документах ARM теперь предпочитают использовать префикс V даже для инструкций VFP, GCC этого не делает.)

...