Combine bit test + conditional or into simple math
authorDavid Majnemer <david.majnemer@gmail.com>
Thu, 18 Apr 2013 07:30:07 +0000 (07:30 +0000)
committerDavid Majnemer <david.majnemer@gmail.com>
Thu, 18 Apr 2013 07:30:07 +0000 (07:30 +0000)
commita40a3a59818d1fe394f23cda1df940762e30ea65
tree955cb6028bd96331f3d0893d7816b0bcc5137e30
parent0556900b260eed881a2f47a2b5267ae3a7cc7ae0
Combine bit test + conditional or into simple math

Simplify:
(select (icmp eq (and X, C1), 0), Y, (or Y, C2))

Into:
(or (shl (and X, C1), C3), y)

Where:
C3 = Log(C2) - Log(C1)

If:
C1 and C2 are both powers of two

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