diff options
author | Reid Spencer <rspencer@reidspencer.com> | 2007-03-23 20:48:34 +0000 |
---|---|---|
committer | Reid Spencer <rspencer@reidspencer.com> | 2007-03-23 20:48:34 +0000 |
commit | 5d787bb93e08f0536b1b7b9d53af958508c29de2 (patch) | |
tree | e4cdd2fd607fa3c880ec543506109e5de59b51a2 /test/Transforms/InstCombine/apint-and-xor-merge.ll | |
parent | bca0e38baaee03ef1d6d9c54941cb1f7741c1d9b (diff) | |
download | llvm-5d787bb93e08f0536b1b7b9d53af958508c29de2.tar.gz llvm-5d787bb93e08f0536b1b7b9d53af958508c29de2.tar.bz2 llvm-5d787bb93e08f0536b1b7b9d53af958508c29de2.tar.xz |
Add test case for testing InstCombine with arbitrary precision integer
types. These tests mimic the integer test cases in the normal InstCombine
test suite but use "strange" integer bit widths.
Most tests written by Zhou Sheng, a few by me.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@35284 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/Transforms/InstCombine/apint-and-xor-merge.ll')
-rw-r--r-- | test/Transforms/InstCombine/apint-and-xor-merge.ll | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/test/Transforms/InstCombine/apint-and-xor-merge.ll b/test/Transforms/InstCombine/apint-and-xor-merge.ll new file mode 100644 index 0000000000..d2265ed4b6 --- /dev/null +++ b/test/Transforms/InstCombine/apint-and-xor-merge.ll @@ -0,0 +1,22 @@ +; This test case checks that the merge of and/xor can work on arbitrary +; precision integers. + +; RUN: llvm-as < %s | opt -instcombine | llvm-dis | grep and | wc -l | grep 1 && +; RUN: llvm-as < %s | opt -instcombine | llvm-dis | grep xor | wc -l | grep 2 + +; (x &z ) ^ (y & z) -> (x ^ y) & z +define i57 @test1(i57 %x, i57 %y, i57 %z) { + %tmp3 = and i57 %z, %x + %tmp6 = and i57 %z, %y + %tmp7 = xor i57 %tmp3, %tmp6 + ret i57 %tmp7 +} + +; (x & y) ^ (x | y) -> x ^ y +define i23 @test2(i23 %x, i23 %y, i23 %z) { + %tmp3 = and i23 %y, %x + %tmp6 = or i23 %y, %x + %tmp7 = xor i23 %tmp3, %tmp6 + ret i23 %tmp7 +} + |