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)
commit854a37649ae4580819b5fba86181df5ff4acc250
treea85620131216a093308df923746656ed3699c654
parent821c6f765adbc3079a21ad91d10726cbf8c4cb1b
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.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@224676 91177308-0d34-0410-b5e6-96231b3b80d8
lib/Transforms/InstCombine/InstCombineSelect.cpp
test/Transforms/InstCombine/select.ll