diff options
author | Craig Topper <craig.topper@gmail.com> | 2017-06-27 04:50:47 +0000 |
---|---|---|
committer | Craig Topper <craig.topper@gmail.com> | 2017-06-27 04:50:47 +0000 |
commit | f9319a78a54eb37455116f6c9623c7136a8bf36e (patch) | |
tree | db94cb40d99cc7e606970d55d9abe5888c0154da /llvm/test | |
parent | 4b1c48441d8f094d5397a79482ba15dceb387b8c (diff) | |
download | bcm5719-llvm-f9319a78a54eb37455116f6c9623c7136a8bf36e.tar.gz bcm5719-llvm-f9319a78a54eb37455116f6c9623c7136a8bf36e.zip |
[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
Diffstat (limited to 'llvm/test')
-rw-r--r-- | llvm/test/Transforms/InstCombine/select-cmp-cttz-ctlz.ll | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/llvm/test/Transforms/InstCombine/select-cmp-cttz-ctlz.ll b/llvm/test/Transforms/InstCombine/select-cmp-cttz-ctlz.ll index 894bf6db0a4..c5547acdc8c 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) |