diff options
author | Chris Lattner <sabre@nondot.org> | 2008-06-18 04:33:20 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2008-06-18 04:33:20 +0000 |
commit | 989ba31285dca68def1f0ba8f34923058e0bf070 (patch) | |
tree | 7120daf36e302f012f715ea597726596bc33a550 /test | |
parent | ce9a7b65f3b24bc5c6352613915575286ab1cbee (diff) | |
download | external_llvm-989ba31285dca68def1f0ba8f34923058e0bf070.zip external_llvm-989ba31285dca68def1f0ba8f34923058e0bf070.tar.gz external_llvm-989ba31285dca68def1f0ba8f34923058e0bf070.tar.bz2 |
implement some simple bswap optimizations, rdar://5992453
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@52442 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test')
-rw-r--r-- | test/Transforms/InstCombine/bswap-fold.ll | 31 |
1 files changed, 27 insertions, 4 deletions
diff --git a/test/Transforms/InstCombine/bswap-fold.ll b/test/Transforms/InstCombine/bswap-fold.ll index 3d354a1..87d8b04 100644 --- a/test/Transforms/InstCombine/bswap-fold.ll +++ b/test/Transforms/InstCombine/bswap-fold.ll @@ -1,7 +1,5 @@ -; RUN: llvm-as < %s | opt -instcombine | llvm-dis | \ -; RUN: grep ret | count 3 -; RUN: llvm-as < %s | opt -instcombine | llvm-dis | \ -; RUN: not grep call.*bswap +; RUN: llvm-as < %s | opt -instcombine | llvm-dis | grep ret | count 6 +; RUN: llvm-as < %s | opt -instcombine | llvm-dis | not grep call.*bswap define i1 @test1(i16 %tmp2) { %tmp10 = call i16 @llvm.bswap.i16( i16 %tmp2 ) ; <i16> [#uses=1] @@ -27,3 +25,28 @@ declare i64 @llvm.bswap.i64(i64) declare i16 @llvm.bswap.i16(i16) +; rdar://5992453 +; A & 255 +define i32 @test4(i32 %a) nounwind { +entry: + %tmp2 = tail call i32 @llvm.bswap.i32( i32 %a ) + %tmp4 = lshr i32 %tmp2, 24 + ret i32 %tmp4 +} + +; A +define i32 @test5(i32 %a) nounwind { +entry: + %tmp2 = tail call i32 @llvm.bswap.i32( i32 %a ) + %tmp4 = tail call i32 @llvm.bswap.i32( i32 %tmp2 ) + ret i32 %tmp4 +} + +; a >> 24 +define i32 @test6(i32 %a) nounwind { +entry: + %tmp2 = tail call i32 @llvm.bswap.i32( i32 %a ) + %tmp4 = and i32 %tmp2, 255 + ret i32 %tmp4 +} + |