From: Craig Topper Date: Tue, 27 Jun 2017 04:50:47 +0000 (+0000) Subject: [InstCombine] Add test cases demonstrating that we don't optmize select+cmp+cttz... X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=6309a52c0bccb0629d87132646af2cdabdb879a6;p=llvm [InstCombine] Add test cases demonstrating that we don't optmize select+cmp+cttz/ctlz when the bitwidth is larger than 64 bits. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@306365 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/test/Transforms/InstCombine/select-cmp-cttz-ctlz.ll b/test/Transforms/InstCombine/select-cmp-cttz-ctlz.ll index 894bf6db0a4..c5547acdc8c 100644 --- a/test/Transforms/InstCombine/select-cmp-cttz-ctlz.ll +++ b/test/Transforms/InstCombine/select-cmp-cttz-ctlz.ll @@ -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)