[llvm] r306365 - [InstCombine] Add test cases demonstrating that we don't optmize select+cmp+cttz/ctlz when the bitwidth is larger than 64 bits.

Craig Topper via llvm-commits llvm-commits at lists.llvm.org
Mon Jun 26 21:50:48 PDT 2017


Author: ctopper
Date: Mon Jun 26 21:50:47 2017
New Revision: 306365

URL: http://llvm.org/viewvc/llvm-project?rev=306365&view=rev
Log:
[InstCombine] Add test cases demonstrating that we don't optmize select+cmp+cttz/ctlz when the bitwidth is larger than 64 bits.

Modified:
    llvm/trunk/test/Transforms/InstCombine/select-cmp-cttz-ctlz.ll

Modified: llvm/trunk/test/Transforms/InstCombine/select-cmp-cttz-ctlz.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/InstCombine/select-cmp-cttz-ctlz.ll?rev=306365&r1=306364&r2=306365&view=diff
==============================================================================
--- llvm/trunk/test/Transforms/InstCombine/select-cmp-cttz-ctlz.ll (original)
+++ llvm/trunk/test/Transforms/InstCombine/select-cmp-cttz-ctlz.ll Mon Jun 26 21:50:47 2017
@@ -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)




More information about the llvm-commits mailing list