diff options
author | Bill Wendling <isanbard@gmail.com> | 2009-01-01 01:18:23 +0000 |
---|---|---|
committer | Bill Wendling <isanbard@gmail.com> | 2009-01-01 01:18:23 +0000 |
commit | 3479be91c42b7e7b24ea481c3a1591f9231ef1ff (patch) | |
tree | 6a1c25e7176e894de9926e18788d76c13d815c19 /test/Transforms | |
parent | d5b207baabf18c03656387aeac87e62b5bb3c12b (diff) | |
download | external_llvm-3479be91c42b7e7b24ea481c3a1591f9231ef1ff.zip external_llvm-3479be91c42b7e7b24ea481c3a1591f9231ef1ff.tar.gz external_llvm-3479be91c42b7e7b24ea481c3a1591f9231ef1ff.tar.bz2 |
Add transformation:
xor (or (icmp, icmp), true) -> and(icmp, icmp)
This is possible because of De Morgan's law.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@61537 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/Transforms')
-rw-r--r-- | test/Transforms/InstCombine/xor-demorgans.ll | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/test/Transforms/InstCombine/xor-demorgans.ll b/test/Transforms/InstCombine/xor-demorgans.ll new file mode 100644 index 0000000..763794b --- /dev/null +++ b/test/Transforms/InstCombine/xor-demorgans.ll @@ -0,0 +1,11 @@ +; RUN: llvm-as < %s | opt -instcombine | llvm-dis | not grep {= or} +; PR3266 + +define i1 @foo(i32 %x, i32 %y) nounwind { +.summary: + %0 = icmp sgt i32 %x, 4 ; <i1> [#uses=1] + %1 = icmp sgt i32 %y, 0 ; <i1> [#uses=1] + %.demorgan = or i1 %1, %0 ; <i1> [#uses=1] + %2 = xor i1 %.demorgan, true ; <i1> [#uses=1] + ret i1 %2 +} |