Erkennen-ARM-NEON-Verfügbarkeit in der Präprozessor?

Entsprechend der ARM ARM, __ARM_NEON__ definiert ist, wenn die Neon-SIMD-Befehle sind verfügbar. Ich bin mit Mühe GCC zur Verfügung stellen.

Neon auf dieser BananaPi Pro dev board, auf dem Debian 8.2:

$ cat /proc/cpuinfo | grep neon
Features    : swp half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt 

Ich bin mit GCC 4.9:

$ gcc --version
gcc (Debian 4.9.2-10) 4.9.2

Versuchen GCC und -march=native:

$ g++ -march=native -dM -E - </dev/null | grep -i neon
#define __ARM_NEON_FP 4

OK, versuchen Sie, was Google-Anwendungen für Android, wenn die Gebäude für die Neon:

$ g++ -march=armv7-a -mfpu=vfpv3-d16 -mfloat-abi=softfp -dM -E - </dev/null | grep -i neon
#define __ARM_NEON_FP 4

Vielleicht ein ARMv7-a mit einem hard-float:

$ g++ -march=armv7-a -mfloat-abi=hard -dM -E - </dev/null | grep -i neon
#define __ARM_NEON_FP 4

Meine Fragen sind:

  • warum bin ich nicht zu sehen __ARM_NEON__?
  • wie erkenne ich, Neon-Verfügbarkeit in der Präprozessor?

Und vielleicht:

  • was GCC-Schalter sollte ich verwenden, um zu ermöglichen, Neon-SIMD-Befehle?

Verwandte, auf eine LeMaker HiKey, die AARCH64/ARM64 läuft mit Linaro GCC 4.9.2, hier ist die Ausgabe vom Präprozessor:

$ cpp -dM </dev/null | grep -i neon
#define __ARM_NEON 1

Laut, zu ARM, dieses board ist der Erweiterte SIMD-Befehle obwohl:

$ cat /proc/cpuinfo 
Processor   : AArch64 Processor rev 3 (aarch64)
...
Features    : fp asimd evtstrm aes pmull sha1 sha2 crc32
  • -mfpu=neon oder vielleicht -mfpu=neon-vfpv4.
  • Danke @EOF. Ich muss überprüfen Sie die Android-build-flags, um zu sehen, warum es nicht sein verwendet für AOSP toolchains (oder vielleicht ist es, und meine Notizen sind unvollständig/defekt).
InformationsquelleAutor jww | 2016-05-05
Schreibe einen Kommentar