From aedb54a947bbeef92ebbe501ba0db8ba120f3a00 Mon Sep 17 00:00:00 2001 From: Bill Wendling Date: Thu, 1 Jan 2009 01:18:23 +0000 Subject: Add transformation: xor (or (icmp, icmp), true) -> and(icmp, icmp) This is possible because of De Morgan's law. llvm-svn: 61537 --- llvm/test/Transforms/InstCombine/xor-demorgans.ll | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 llvm/test/Transforms/InstCombine/xor-demorgans.ll (limited to 'llvm/test') diff --git a/llvm/test/Transforms/InstCombine/xor-demorgans.ll b/llvm/test/Transforms/InstCombine/xor-demorgans.ll new file mode 100644 index 00000000000..763794befcb --- /dev/null +++ b/llvm/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 ; [#uses=1] + %1 = icmp sgt i32 %y, 0 ; [#uses=1] + %.demorgan = or i1 %1, %0 ; [#uses=1] + %2 = xor i1 %.demorgan, true ; [#uses=1] + ret i1 %2 +} -- cgit v1.2.3