summaryrefslogtreecommitdiff
path: root/test/Transforms/InstCombine/xor.ll
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2004-02-16 03:53:44 +0000
committerChris Lattner <sabre@nondot.org>2004-02-16 03:53:44 +0000
commit72695f7bb7a79e6c43e6d0966f3dba5855026e7a (patch)
tree1431e9107ca7aed1b58d1ffb8475090a1d3fcd89 /test/Transforms/InstCombine/xor.ll
parentc317d39887940e63b040d6461d305129adb698ad (diff)
downloadllvm-72695f7bb7a79e6c43e6d0966f3dba5855026e7a.tar.gz
llvm-72695f7bb7a79e6c43e6d0966f3dba5855026e7a.tar.bz2
llvm-72695f7bb7a79e6c43e6d0966f3dba5855026e7a.tar.xz
Add a test for the "swap idiom", which LLVM should be able to unravel.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11491 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/Transforms/InstCombine/xor.ll')
-rw-r--r--test/Transforms/InstCombine/xor.ll14
1 files changed, 14 insertions, 0 deletions
diff --git a/test/Transforms/InstCombine/xor.ll b/test/Transforms/InstCombine/xor.ll
index 29f0f10fdd..772c480588 100644
--- a/test/Transforms/InstCombine/xor.ll
+++ b/test/Transforms/InstCombine/xor.ll
@@ -3,6 +3,9 @@
; RUN: llvm-as < %s | opt -instcombine | llvm-dis | not grep 'xor '
+%G1 = global uint 0
+%G2 = global uint 0
+
implementation
bool %test0(bool %A) {
@@ -128,3 +131,14 @@ uint %test19(uint %A, uint %B) {
%D = xor uint %C, %A ; A terms cancel, D = B
ret uint %D
}
+
+void %test20(uint %A, uint %B) { ; The "swap idiom"
+ %tmp.2 = xor uint %B, %A
+ %tmp.5 = xor uint %tmp.2, %B
+ %tmp.8 = xor uint %tmp.5, %tmp.2
+ store uint %tmp.8, uint* %G1 ; tmp.8 = B
+ store uint %tmp.5, uint* %G2 ; tmp.5 = A
+ ret void
+}
+
+