From f9319a78a54eb37455116f6c9623c7136a8bf36e Mon Sep 17 00:00:00 2001 From: Craig Topper Date: Tue, 27 Jun 2017 04:50:47 +0000 Subject: [PATCH] [InstCombine] Add test cases demonstrating that we don't optmize select+cmp+cttz/ctlz when the bitwidth is larger than 64 bits. llvm-svn: 306365 --- .../InstCombine/select-cmp-cttz-ctlz.ll | 27 +++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/llvm/test/Transforms/InstCombine/select-cmp-cttz-ctlz.ll b/llvm/test/Transforms/InstCombine/select-cmp-cttz-ctlz.ll index 894bf6db0a42..c5547acdc8c8 100644 --- a/llvm/test/Transforms/InstCombine/select-cmp-cttz-ctlz.ll +++ b/llvm/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)