HomePhabricator

[InstCombine] Relax cttz/ctlz with select on zero

Description

[InstCombine] Relax cttz/ctlz with select on zero

The cttz/ctlz intrinsics have a parameter specifying whether the
result is undefined for zero. cttz(x, false) can be relaxed to
cttz(x, true) if x is known non-zero, and in fact such an optimization
is already performed. However, this currently doesn't work if x is
non-zero as a result of a select rather than an explicit branch.
This patch adds handling for this case, thus allowing
x != 0 ? cttz(x, false) : y to simplify to x != 0 ? cttz(x, true) : y.

Differential Revision: https://reviews.llvm.org/D55786

Details

Committed
nikicJan 5 2019, 1:48 AM
Differential Revision
D55786: [InstCombine] Relax cttz/ctlz with select on zero
Parents
rL350462: [InstCombine] Add vector tests for select + ctlz/cttz; NFC
Branches
Unknown
Tags
Unknown