ARM Cortex-A8: Wie Verwendung sowohl von NEON und vfpv3 machen
-
26-09-2019 - |
Frage
Ich bin mit Cortex-A8-Prozessor und verstehe ich nicht, wie die -mfpu
Flagge verwenden.
Auf dem Cortex-A8 gibt es sowohl vfpv3 und Neon Co-Prozessoren. Zuvor war ich nicht zu wissen, wie Neon zu verwenden, so ich nur mit
gcc -marm -mfloat-abi=softfp -mfpu=vfpv3
Jetzt habe ich verstanden, wie SIMD-Prozessoren laufen, und ich habe einige Code NEON intrinsics geschrieben. Zur Verwendung Neon-Koprozessor jetzt meine -mfpu Flagge hat Änderungen zu -mfpu=neon
, so meine Compiler-Befehlszeile wie folgt aussieht
gcc -marm -mfloat-abi=softfp -mfpu=neon
Nun Bedeutet dies, dass meine vfpv3
wird nicht mehr verwendet? Ich habe eine Menge Code, den Gebrauch von NEON ist nicht zu machen, haben die Teile keinen Gebrauch von vfpv3
machen.
Wenn sowohl Neon und vfpv3 noch verwendet werden, dann habe ich keine Probleme, aber wenn nur einer von ihnen verwendet wird, wie kann ich den Einsatz von beiden machen?
Lösung
NEON impliziert auch die traditionellen VFP Träger. VFP kann für „normale“ (non-Vektor) Gleitkommaberechnungen verwendet werden. Auch dann, wenn NEON nicht mit doppelter Genauigkeit FP unterstützen, so dass nur VFP Anweisungen können dafür verwendet werden.
Was können Sie tun, ist add -S zu Befehlszeile des gcc und die Montage überprüfen. Anweisungen beginnend mit V (z.B. vld1.32, vmla.f32) sind NEON Anweisungen, und die mit F (fldd, fmacd) sind ausgehend VFP. (Obwohl ARM docs bevorzugt jetzt den V-Präfix auch für VFP Anweisungen, hat GCC das nicht tun.)