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?

War es hilfreich?

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

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top