summaryrefslogtreecommitdiffstats
path: root/llvm/test/Transforms
diff options
context:
space:
mode:
authorCraig Topper <craig.topper@gmail.com>2017-06-28 06:45:36 +0000
committerCraig Topper <craig.topper@gmail.com>2017-06-28 06:45:36 +0000
commit8fe3603ff14b95c337ccd02d8694e119c3bd0f64 (patch)
treee31f64cecdeb1e5e67fe7ca430b9591e65d3867f /llvm/test/Transforms
parent7f124694c594a9a6e1248c2a13c96b981a8aab37 (diff)
downloadbcm5719-llvm-8fe3603ff14b95c337ccd02d8694e119c3bd0f64.tar.gz
bcm5719-llvm-8fe3603ff14b95c337ccd02d8694e119c3bd0f64.zip
[InstCombine] Add test case demonstrating that we don't handle icmp eq (trunc (lshr(X, cst1)), cst->icmp (and X, mask), cst when the shift type is larger than 64-bits. NFC
llvm-svn: 306510
Diffstat (limited to 'llvm/test/Transforms')
-rw-r--r--llvm/test/Transforms/InstCombine/icmp.ll21
1 files changed, 21 insertions, 0 deletions
diff --git a/llvm/test/Transforms/InstCombine/icmp.ll b/llvm/test/Transforms/InstCombine/icmp.ll
index 12e8cc8f8a3..0e2627b1768 100644
--- a/llvm/test/Transforms/InstCombine/icmp.ll
+++ b/llvm/test/Transforms/InstCombine/icmp.ll
@@ -762,6 +762,27 @@ define i1 @test52(i32 %x1) {
ret i1 %A
}
+; TODO we have a 64-bit or less restriction in the handling for this pattern. We should remove that and do the same thing we do above.
+define i1 @test52b(i128 %x1) {
+; CHECK-LABEL: @test52b(
+; CHECK-NEXT: [[CONV:%.*]] = and i128 [[X1:%.*]], 255
+; CHECK-NEXT: [[CMP:%.*]] = icmp eq i128 [[CONV]], 127
+; CHECK-NEXT: [[TMP2:%.*]] = lshr i128 [[X1]], 16
+; CHECK-NEXT: [[TMP3:%.*]] = trunc i128 [[TMP2]] to i8
+; CHECK-NEXT: [[CMP15:%.*]] = icmp eq i8 [[TMP3]], 76
+; CHECK-NEXT: [[A:%.*]] = and i1 [[CMP]], [[CMP15]]
+; CHECK-NEXT: ret i1 [[A]]
+;
+ %conv = and i128 %x1, 255
+ %cmp = icmp eq i128 %conv, 127
+ %tmp2 = lshr i128 %x1, 16
+ %tmp3 = trunc i128 %tmp2 to i8
+ %cmp15 = icmp eq i8 %tmp3, 76
+
+ %A = and i1 %cmp, %cmp15
+ ret i1 %A
+}
+
; PR9838
define i1 @test53(i32 %a, i32 %b) {
; CHECK-LABEL: @test53(
OpenPOWER on IntegriCloud