diff options
author | Evan Cheng <evan.cheng@apple.com> | 2011-06-17 20:47:21 +0000 |
---|---|---|
committer | Evan Cheng <evan.cheng@apple.com> | 2011-06-17 20:47:21 +0000 |
commit | 6d6c55bc270d1bee8561d3ce00d2ca9ced3bb506 (patch) | |
tree | 518bfdb23f4b26111ba5be5099aeb9c0780d88c9 /test/CodeGen | |
parent | 362fee90b9a1d64ac091755466caf6a94ade22eb (diff) | |
download | llvm-6d6c55bc270d1bee8561d3ce00d2ca9ced3bb506.tar.gz llvm-6d6c55bc270d1bee8561d3ce00d2ca9ced3bb506.tar.bz2 llvm-6d6c55bc270d1bee8561d3ce00d2ca9ced3bb506.tar.xz |
Add an alternative rev16 pattern. We should figure out a better way to handle these complex rev patterns. rdar://9609108
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@133289 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/CodeGen')
-rw-r--r-- | test/CodeGen/ARM/rev.ll | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/test/CodeGen/ARM/rev.ll b/test/CodeGen/ARM/rev.ll index 5739086267..c210a55b66 100644 --- a/test/CodeGen/ARM/rev.ll +++ b/test/CodeGen/ARM/rev.ll @@ -67,3 +67,20 @@ entry: %or = or i32 %shr, %and ret i32 %or } + +; rdar://9609108 +define i32 @test6(i32 %x) nounwind readnone { +entry: +; CHECK: test6 +; CHECK: rev16 r0, r0 + %and = shl i32 %x, 8 + %shl = and i32 %and, 65280 + %and2 = lshr i32 %x, 8 + %shr11 = and i32 %and2, 255 + %shr5 = and i32 %and2, 16711680 + %shl9 = and i32 %and, -16777216 + %or = or i32 %shr5, %shl9 + %or6 = or i32 %or, %shr11 + %or10 = or i32 %or6, %shl + ret i32 %or10 +} |