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.

Reply via email to