InstCombine: ((A | ~B) ^ (~A | B)) to A ^ B
authorDavid Majnemer <david.majnemer@gmail.com>
Thu, 14 Aug 2014 06:46:25 +0000 (06:46 +0000)
committerDavid Majnemer <david.majnemer@gmail.com>
Thu, 14 Aug 2014 06:46:25 +0000 (06:46 +0000)
commiteb323b2b3c7d72ae00bf6d9998fcb8b027102965
treefc5fe00ae7782370a144a3793d5d369394100384
parent8c651f5c2686a9e330c06c0bf5ecd6edd9d00f3f
InstCombine: ((A | ~B) ^ (~A | B)) to A ^ B

Proof using CVC3 follows:
$ cat t.cvc
A, B : BITVECTOR(32);
QUERY BVXOR((A | ~B),(~A |B)) = BVXOR(A,B);
$ cvc3 t.cvc
Valid.

Patch by Mayur Pandey!

Differential Revision: http://reviews.llvm.org/D4883

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@215621 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Transforms/InstCombine/InstCombineAndOrXor.cpp
test/Transforms/InstCombine/or-xor.ll