ARM Cortex-A8: Comment utiliser les deux NEON et vfpv3
-
26-09-2019 - |
Question
J'utilise le processeur Cortex-A8 et je ne comprends pas comment utiliser le drapeau -mfpu
.
Sur le Cortex-A8 il y a deux vfpv3 et néon co-processeurs. Auparavant, je ne pas savoir comment utiliser le néon donc je n'utilise
gcc -marm -mfloat-abi=softfp -mfpu=vfpv3
Maintenant, je l'ai compris comment les processeurs SIMD courir et je l'ai écrit certain code à l'aide de intrinsics NEON. Pour utiliser coprocesseur néon maintenant mon drapeau -mfpu doit changer pour -mfpu=neon
, donc ma ligne de commande du compilateur ressemble à ceci
gcc -marm -mfloat-abi=softfp -mfpu=neon
Maintenant, ce que cela signifie que mon vfpv3
n'est pas utilisé plus? J'ai beaucoup de code qui ne fait pas usage de NEON, ne les parties utilisent pas vfpv3
.
Si les néons et vfpv3 sont encore utilisés alors je n'ai pas les questions, mais si un seul d'entre eux est utilisé comment puis-je utiliser les deux?
La solution
NEON implique d'avoir le soutien VFP traditionnelle aussi. VFP peut être utilisé pour « normaux » (non-vecteur) calculs à virgule flottante. En outre, NEON ne prend pas en charge double précision FP afin que des instructions VFP peut être utilisé pour cela.
Ce que vous pouvez faire est d'ajouter -S à la ligne de commande de gcc et vérifier l'ensemble. Instructions commençant par V (par exemple vld1.32, vmla.f32) sont des instructions NEON, et ceux commençant par F (fldd, fmacd) sont VFP. (Bien que ARM docs préfèrent maintenant en utilisant le préfixe V, même pour les instructions VFP, GCC ne le fait pas.)