summaryrefslogtreecommitdiffstats
path: root/llvm/test/Transforms
diff options
context:
space:
mode:
authorDavid Majnemer <david.majnemer@gmail.com>2014-10-19 08:32:32 +0000
committerDavid Majnemer <david.majnemer@gmail.com>2014-10-19 08:32:32 +0000
commit312c3e5f39899e07c7f73e6687b8eeca1d6363cd (patch)
tree5a040f1742e5b1503a967835e13a48fe0e299f5d /llvm/test/Transforms
parent59939acd2684708a1c617f9e42b2206956804bb6 (diff)
downloadbcm5719-llvm-312c3e5f39899e07c7f73e6687b8eeca1d6363cd.tar.gz
bcm5719-llvm-312c3e5f39899e07c7f73e6687b8eeca1d6363cd.zip
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 llvm-svn: 220163
Diffstat (limited to 'llvm/test/Transforms')
-rw-r--r--llvm/test/Transforms/InstCombine/sub.ll10
1 files changed, 10 insertions, 0 deletions
diff --git a/llvm/test/Transforms/InstCombine/sub.ll b/llvm/test/Transforms/InstCombine/sub.ll
index 1d1bedc0a7b..95a61b1747c 100644
--- a/llvm/test/Transforms/InstCombine/sub.ll
+++ b/llvm/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
+}
OpenPOWER on IntegriCloud