ARM Cortex-A8: Wie man sowohl NEON als auch vfpv3 benutzt

8

Ich verwende Cortex-A8-Prozessor und ich verstehe nicht, wie man das -mfpu Flag benutzt.

Auf dem Cortex-A8 gibt es sowohl vfpv3 als auch neon Koprozessoren. Zuvor wusste ich nicht, wie man Neon benutzt, also benutzte ich nur

gcc -marm -mfloat-abi=softfp -mfpu=vfpv3

Jetzt habe ich verstanden, wie SIMD-Prozessoren laufen und ich habe einen bestimmten Code geschrieben, der NEON-Intrinsik verwendet. Um den Neon-Co-Prozessor jetzt zu verwenden, muss mein -mfpu-Flag in -mfpu=neon geändert werden, sodass meine Compiler-Befehlszeile so aussieht

gcc -marm -mfloat-abi=softfp -mfpu=neon

Bedeutet das nun, dass mein vfpv3 nicht mehr benutzt wird? Ich habe eine Menge Code, der NEON nicht nutzt, verwenden diese Teile nicht vfpv3 .

Wenn sowohl neon als auch vfpv3 noch verwendet werden, habe ich keine Probleme, aber wenn nur einer von ihnen verwendet wird, wie kann ich beides nutzen?

    
HaggarTheHorrible 18.11.2010, 10:02
quelle

1 Antwort

10

NEON bedeutet auch, die traditionelle VFP-Unterstützung zu haben. VFP kann für "normale" (Nicht-Vektor-) Gleitkommaberechnungen verwendet werden. Außerdem unterstützt NEON keine Double-Precision-FP, daher können nur VFP-Anweisungen dafür verwendet werden.
Sie können -S zur Befehlszeile von gcc hinzufügen und die Assembly überprüfen. Anweisungen, die mit V beginnen (z. B. vld1.32, vmla.f32), sind NEON-Befehle und diejenigen, die mit F (fldd, fmacd) beginnen, sind VFP. (Obwohl ARM-Dokumente jetzt bevorzugen, das V-Präfix auch für VFP-Anweisungen zu verwenden, macht GCC das nicht.)

    
Igor Skochinsky 18.11.2010, 10:48
quelle

Tags und Links