http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58693
Bug ID: 58693 Summary: GCC aarch64 arm_neon.h inconsistent with Apple clang arm64 arm_neon.h Product: gcc Version: 4.9.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: lennox at cs dot columbia.edu Created attachment 30984 --> http://gcc.gnu.org/bugzilla/attachment.cgi?id=30984&action=edit Diff between functions in Apple Clang and GCC aarch64 arm_neon.h Both GCC and Apple clang have extended the standard ARM arm_neon.h header file to support new operations supported by ARMv8 chips running in aarch64 mode. However, GCC and Apple seem to have extended these headers in inconsistent ways. They should presumably be consistent. I don't know what is supposed to be a canonical definition of this header. I can't find any aarch64 definition of arm_neon.h anywhere in the documentation on arm.com. It's not clear to what extent the inconsistencies between GCC and Apple are different names for the same assembly instructions, and to what extent they are defining different operations. (There appears to be some of both.) I've attached a list of the differences in the names of the intrinsic functions between the two compilers (produced by scraping the output of aarch64-unknown-linux-gnu-gcc -E -include arm_neon.h -x c /dev/null and aarch64-unknown-linux-gnu-gcc -E -dM -include arm_neon.h -x c /dev/null, and equivalently with xcrun --sdk iphoneos clang -arch arm64 on a Mac with Xcode 5.) Note that some of these intrinsic functions are to support the ARMv8 crypto extension, not aarch64 per se.