This is an archive of the discontinued LLVM Phabricator instance.

[InstCombine] reduce checks for power-of-2-or-zero using ctpop
ClosedPublic

Authored by spatel on Jun 25 2019, 9:56 AM.

Details

Summary

This follows up the transform from rL363956 to use the ctpop intrinsic when checking for power-of-2-or-zero.

This is matching the isPowerOf2() patterns used in PR42314:
https://bugs.llvm.org/show_bug.cgi?id=42314

But there's at least 1 instcombine follow-up needed to match the alternate form:

(v & (v - 1)) == 0;

We should have all of the backend expansions handled with:
rL364319
(x86-specific changes still needed for optimal code based on subtarget)

And the larger patterns to exclude zero as a power-of-2 are joining with this change after:
rL364153 ( D63660 )
rL364246

Diff Detail

Event Timeline

spatel created this revision.Jun 25 2019, 9:56 AM
Herald added a project: Restricted Project. · View Herald TranscriptJun 25 2019, 9:56 AM
xbolva00 accepted this revision.Jun 25 2019, 10:19 AM

Looks fine

This revision is now accepted and ready to land.Jun 25 2019, 10:19 AM
This revision was automatically updated to reflect the committed changes.