[ARM-BE] Generate correct NEON intrinsics for big endian systems.
authorJames Molloy <james.molloy@arm.com>
Fri, 27 Jun 2014 11:53:35 +0000 (11:53 +0000)
committerJames Molloy <james.molloy@arm.com>
Fri, 27 Jun 2014 11:53:35 +0000 (11:53 +0000)
commitb452f78ad2669ffa7f26353bc3266189001635af
tree0956dbd1a6ba7a355fe3acbda527c2f5e27ccec3
parent688001f042a2808dcee564519effb15c8e02271b
[ARM-BE] Generate correct NEON intrinsics for big endian systems.

The NEON intrinsics in arm_neon.h are designed to work on vectors
"as-if" loaded by (V)LDR. We load vectors "as-if" (V)LD1, so the
intrinsics are currently incorrect.

This patch adds big-endian versions of the intrinsics that does the
"obvious but dumb" thing of reversing all vector inputs and all
vector outputs. This will produce extra REVs, but we trust the
optimizer to remove them.

llvm-svn: 211893
clang/include/clang/Basic/arm_neon.td
clang/test/CodeGen/arm64-lanes.c
clang/utils/TableGen/NeonEmitter.cpp