We are wonder to optimize our program with NEON instruction system on TX2, but there are some question to confirm:
1、 is TX2 support NEON instruction system?
2、There are 6 cpu on TX2, two Denver and 4 arm A57, if TX2 support NEON, on which cpu NEON instruction system can be runned?
Thanks! Expected your reply!
NEON is from 32-bit ARMv7-a. This was optional then, so compilers had options whether to use this or not. Jetsons are 64-bit ARMv8-a. As part of a 32-bit compatibility there is a mode which can run ARMv7, though it is called ARMv8 (without the “-a”…ARMv8 can run all armhf, but not all of ARMv8 can run on armhf…ARMv8 is a superset). In ARMv8-a the compatibility mode must have certain hardware, such as NEON, which was optional in ARMv7-a. Thus all TX1/TX2 (ARMv8-a) CPUs have NEON, and do not support any optional support for mandatory hardware in the compiler (this support is always there). However, it might require some 32-bit compatibility libraries if you want to use NEON (the kernel understands this mode, but the default user space environment on Jetsons is 64-bit). I haven’t tried to use NEON under a Jetson, so I’m not sure what is actually required.
Consider a desktop PC which is x86_64. The PC CPUs support a 32-bit compatibility mode, but actually using 32-bit software requires installing the i686 32-bit compatibility libraries (for example, a 32-bit linker and 32-bit glibc in addition to native 64-bit). For a PC x86_64 is native, and i686 (despite being common) is a foreign architecture. In a similar way you can consider 64-bit mode of ARMv8-a to be native, and ARMv8 is a mode which supports a 32-bit foreign architecture (ARMv7-a).
You might be interested in looking here:
…then put “armv8-a” in the search box. Various TRMs will show up.