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)
commit1f3d3ca7698c09f2362930ff0732957e74c9b115
treec429f15848b567a1bbf4c08e4de4b1f5c750ea33
parent6ced97aaae91bf7a05d3b79814c91cd943df7e4a
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

llvm-svn: 174929
llvm/lib/Target/ARM/ARMISelLowering.cpp
llvm/test/CodeGen/ARM/vector-DAGCombine.ll