diff options
author | David Majnemer <david.majnemer@gmail.com> | 2014-10-19 08:32:32 +0000 |
---|---|---|
committer | David Majnemer <david.majnemer@gmail.com> | 2014-10-19 08:32:32 +0000 |
commit | 0fd4e2e5a1836e52e0851e0ebb811e301dfd807e (patch) | |
tree | 5e92cc8f997393fa1005bb1d177faa8c44322249 /test/Transforms/InstCombine/sub.ll | |
parent | 242aeb9d840180ab25ab6632d2ee1009998e8aa0 (diff) |
InstCombine: (sub (or A B) (xor A B)) --> (and A B)
The following implements the transformation:
(sub (or A B) (xor A B)) --> (and A B).
Patch by Ankur Garg!
Differential Revision: http://reviews.llvm.org/D5719
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@220163 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/Transforms/InstCombine/sub.ll')
-rw-r--r-- | test/Transforms/InstCombine/sub.ll | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/test/Transforms/InstCombine/sub.ll b/test/Transforms/InstCombine/sub.ll index 1d1bedc0a7b..95a61b1747c 100644 --- a/test/Transforms/InstCombine/sub.ll +++ b/test/Transforms/InstCombine/sub.ll @@ -530,3 +530,13 @@ define i32 @test44(i32 %x) { ; CHECK-NEXT: [[ADD:%.*]] = add nsw i32 %x, -32768 ; CHECK: ret i32 [[ADD]] } + +define i32 @test45(i32 %x, i32 %y) { + %or = or i32 %x, %y + %xor = xor i32 %x, %y + %sub = sub i32 %or, %xor + ret i32 %sub +; CHECK-LABEL: @test45( +; CHECK-NEXT: %sub = and i32 %x, %y +; CHECK: ret i32 %sub +} |