ARM Cortex-A8: как использовать неон и vfpv3
Я использую процессор Cortex-A8, и я не понимаю, как использовать -mfpu
флаг.
на коре-А8 есть оба vfpv3 и неон сопроцессоры. Раньше я не знал, как использовать неон, поэтому я использовал только
gcc -marm -mfloat-abi=softfp -mfpu=vfpv3
теперь я понял, как работают процессоры SIMD, и я написал определенный код, используя неоновые встроенные компоненты. Для использования neon co-processor теперь флаг my-mfpu должен измениться на -mfpu=neon
, Так что мой командная строка компилятора выглядит так:
gcc -marm -mfloat-abi=softfp -mfpu=neon
теперь, означает ли это, что мой vfpv3
больше не используется? У меня есть много кода, который не использует NEON, эти части не используют vfpv3
.
если оба neon и vfpv3 все еще используются, то у меня нет проблем, но если используется только один из них, как я могу использовать оба?
1 ответов
неон подразумевает наличие традиционной поддержки VFP тоже. VFP можно использовать для" нормальных " (не векторных) вычислений с плавающей запятой. Кроме того, NEON не поддерживает двойную точность FP, поэтому для этого могут использоваться только инструкции VFP.
Что вы можете сделать, это добавить-S в командную строку gcc и проверить сборку. Инструкции, начинающиеся с V (например, vld1.32, vmla.F32) являются неоновыми инструкциями, а те, которые начинаются с F (fldd, fmacd), являются VFP. (Хотя ARM docs теперь предпочитают использовать префикс V даже для VFP инструкции, GCC этого не делает.)