InstCombine: Squash an icmp+select into bitwise arithmetic
authorDavid Majnemer <david.majnemer@gmail.com>
Sat, 20 Dec 2014 04:45:35 +0000 (04:45 +0000)
committerDavid Majnemer <david.majnemer@gmail.com>
Sat, 20 Dec 2014 04:45:35 +0000 (04:45 +0000)
commitb0362e4ee650853b8f96689ddd8fb858f6824dc7
tree7ef7dc6eff51075a1241ba76c7cf694200667a5b
parent147f8586bebf86f6354a7d0c9c9a47c5b76798c7
InstCombine: Squash an icmp+select into bitwise arithmetic

(X & INT_MIN) == 0 ? X ^ INT_MIN : X  into  X | INT_MIN
(X & INT_MIN) != 0 ? X ^ INT_MIN : X  into  X & INT_MAX

This fixes PR21993.

llvm-svn: 224676
llvm/lib/Transforms/InstCombine/InstCombineSelect.cpp
llvm/test/Transforms/InstCombine/select.ll