summaryrefslogtreecommitdiffstats
path: root/llvm/test/Transforms/InstCombine/vec_shuffle.ll
diff options
context:
space:
mode:
authorSerge Pavlov <sepavloff@gmail.com>2014-05-14 09:05:09 +0000
committerSerge Pavlov <sepavloff@gmail.com>2014-05-14 09:05:09 +0000
commite6de9e39a8ac60a213538ea51e5ca07f517bfc5a (patch)
tree333e73a865f1b5e28aa230949dd08be5f6a7a983 /llvm/test/Transforms/InstCombine/vec_shuffle.ll
parent9f9492b657358da8f7787e652b2f425fc5570208 (diff)
downloadbcm5719-llvm-e6de9e39a8ac60a213538ea51e5ca07f517bfc5a.tar.gz
bcm5719-llvm-e6de9e39a8ac60a213538ea51e5ca07f517bfc5a.zip
Fix the case when reordering shuffle and binop produces a constant.
This resolves PR19737. llvm-svn: 208762
Diffstat (limited to 'llvm/test/Transforms/InstCombine/vec_shuffle.ll')
-rw-r--r--llvm/test/Transforms/InstCombine/vec_shuffle.ll11
1 files changed, 11 insertions, 0 deletions
diff --git a/llvm/test/Transforms/InstCombine/vec_shuffle.ll b/llvm/test/Transforms/InstCombine/vec_shuffle.ll
index 2e6f787f833..fc0f8bd0aa9 100644
--- a/llvm/test/Transforms/InstCombine/vec_shuffle.ll
+++ b/llvm/test/Transforms/InstCombine/vec_shuffle.ll
@@ -394,3 +394,14 @@ define <8 x i8> @pr19730(<16 x i8> %in0) {
%shuffle1 = shufflevector <8 x i8> %shuffle, <8 x i8> undef, <8 x i32> <i32 7, i32 6, i32 5, i32 4, i32 3, i32 2, i32 1, i32 0>
ret <8 x i8> %shuffle1
}
+
+define i32 @pr19737(<4 x i32> %in0) {
+; CHECK-LABEL: @pr19737(
+; CHECK: [[VAR:%[a-zA-Z0-9.]+]] = extractelement <4 x i32> %in0, i32 0
+; CHECK: ret i32 [[VAR]]
+ %shuffle.i = shufflevector <4 x i32> zeroinitializer, <4 x i32> %in0, <4 x i32> <i32 0, i32 4, i32 2, i32 6>
+ %neg.i = xor <4 x i32> %shuffle.i, <i32 -1, i32 -1, i32 -1, i32 -1>
+ %and.i = and <4 x i32> %in0, %neg.i
+ %rv = extractelement <4 x i32> %and.i, i32 0
+ ret i32 %rv
+}
OpenPOWER on IntegriCloud