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?

Était-ce utile?

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.)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top