]> granicus.if.org Git - llvm/commitdiff
[InstCombine] Add test cases demonstrating that we don't optmize select+cmp+cttz...
authorCraig Topper <craig.topper@gmail.com>
Tue, 27 Jun 2017 04:50:47 +0000 (04:50 +0000)
committerCraig Topper <craig.topper@gmail.com>
Tue, 27 Jun 2017 04:50:47 +0000 (04:50 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306365 91177308-0d34-0410-b5e6-96231b3b80d8

test/Transforms/InstCombine/select-cmp-cttz-ctlz.ll

index 894bf6db0a428c0e6637bdd21760fe5440d48690..c5547acdc8c86974e01885159a25da27d7c60e1b 100644 (file)
@@ -318,10 +318,37 @@ entry:
   ret i16 %cond
 }
 
+define i128 @test7(i128 %x) {
+; CHECK-LABEL: @test7(
+; CHECK-NEXT:    [[TMP0:%.*]] = tail call i128 @llvm.ctlz.i128(i128 [[X:%.*]], i1 true), !range !3
+; CHECK-NEXT:    [[TOBOOL:%.*]] = icmp ne i128 [[X]], 0
+; CHECK-NEXT:    [[COND:%.*]] = select i1 [[TOBOOL]], i128 [[TMP0]], i128 128
+; CHECK-NEXT:    ret i128 [[COND]]
+;
+  %1 = tail call i128 @llvm.ctlz.i128(i128 %x, i1 true)
+  %tobool = icmp ne i128 %x, 0
+  %cond = select i1 %tobool, i128 %1, i128 128
+  ret i128 %cond
+}
+
+define i128 @test8(i128 %x) {
+; CHECK-LABEL: @test8(
+; CHECK-NEXT:    [[TMP0:%.*]] = tail call i128 @llvm.cttz.i128(i128 [[X:%.*]], i1 true), !range !3
+; CHECK-NEXT:    [[TOBOOL:%.*]] = icmp ne i128 [[X]], 0
+; CHECK-NEXT:    [[COND:%.*]] = select i1 [[TOBOOL]], i128 [[TMP0]], i128 128
+; CHECK-NEXT:    ret i128 [[COND]]
+;
+  %1 = tail call i128 @llvm.cttz.i128(i128 %x, i1 true)
+  %tobool = icmp ne i128 %x, 0
+  %cond = select i1 %tobool, i128 %1, i128 128
+  ret i128 %cond
+}
 
 declare i16 @llvm.ctlz.i16(i16, i1)
 declare i32 @llvm.ctlz.i32(i32, i1)
 declare i64 @llvm.ctlz.i64(i64, i1)
+declare i128 @llvm.ctlz.i128(i128, i1)
 declare i16 @llvm.cttz.i16(i16, i1)
 declare i32 @llvm.cttz.i32(i32, i1)
 declare i64 @llvm.cttz.i64(i64, i1)
+declare i128 @llvm.cttz.i128(i128, i1)