diff options
author | Craig Topper <craig.topper@gmail.com> | 2017-03-22 07:22:49 +0000 |
---|---|---|
committer | Craig Topper <craig.topper@gmail.com> | 2017-03-22 07:22:49 +0000 |
commit | ad5c2d04f72551c4cea3f28c7c79e929ccdaecc5 (patch) | |
tree | 41d63bf5faa23620fde0489e71259e6a58e34a49 /llvm/test/Transforms/InstCombine/bitreverse-known-bits.ll | |
parent | 3646e6289d9fc8678f0b53b466974d6010e3a1b8 (diff) | |
download | bcm5719-llvm-ad5c2d04f72551c4cea3f28c7c79e929ccdaecc5.tar.gz bcm5719-llvm-ad5c2d04f72551c4cea3f28c7c79e929ccdaecc5.zip |
[ValueTracking] Make sure we keep range metadata information when calculating known bits for calls to bitreverse intrinsic.
llvm-svn: 298488
Diffstat (limited to 'llvm/test/Transforms/InstCombine/bitreverse-known-bits.ll')
-rw-r--r-- | llvm/test/Transforms/InstCombine/bitreverse-known-bits.ll | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/llvm/test/Transforms/InstCombine/bitreverse-known-bits.ll b/llvm/test/Transforms/InstCombine/bitreverse-known-bits.ll index b73df77b925..cd1523a3b06 100644 --- a/llvm/test/Transforms/InstCombine/bitreverse-known-bits.ll +++ b/llvm/test/Transforms/InstCombine/bitreverse-known-bits.ll @@ -1,5 +1,6 @@ ; RUN: opt < %s -S -instcombine | FileCheck %s +declare i8 @llvm.bitreverse.i8(i8) declare i32 @llvm.bitreverse.i32(i32) ; CHECK-LABEL: @test1 @@ -32,3 +33,19 @@ define i1 @test3(i32 %arg) { %res = icmp eq i32 %and, 0 ret i1 %res } + +; CHECK-LABEL: @add_bitreverse +; Make sure we process range metadata on bitreverse +define i8 @add_bitreverse(i8 %a) { + %b = and i8 %a, 252 + ; known bits for the bitreverse will say the result is in the range [0, 64) + ; but the metadata says [0, 16). So make sure the range metadata wins. + ; add %reverse, 1111 0000 + ; should become + ; or %reverse, 1111 0000 + %reverse = call i8 @llvm.bitreverse.i8(i8 %b), !range !1 + %c = add i8 %reverse, -16 +; CHECK: or i8 %reverse, -16 + ret i8 %c +} +!1 = !{i8 0, i8 16} |