ARM NEON: Handle v16i8 and v8i16 reverse shuffles
authorArnold Schwaighofer <aschwaighofer@apple.com>
Tue, 12 Feb 2013 01:58:32 +0000 (01:58 +0000)
committerArnold Schwaighofer <aschwaighofer@apple.com>
Tue, 12 Feb 2013 01:58:32 +0000 (01:58 +0000)
commitd9316dacf5bb8c02631f782c7f2fc24fb8d788f3
tree9c16e53e336572fe9799077ffc632f4e1fd5ca89
parent53e5bb70db34b736eed01c1580af1afd7314a2d8
ARM NEON: Handle v16i8 and v8i16 reverse shuffles

Lower reverse shuffles to a vrev64 and a vext instruction instead of the default
legalization of storing and loading to the stack. This is important because we
generate reverse shuffles in the loop vectorizer when we reverse store to an
array.

  uint8_t Arr[N];
  for (i = 0; i < N; ++i)
    Arr[N - i - 1] = ...

radar://13171760

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@174929 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Target/ARM/ARMISelLowering.cpp
test/CodeGen/ARM/vector-DAGCombine.ll