This is an archive of the discontinued LLVM Phabricator instance.

[InstCombine] squash is-power-of-2 that uses ctpop
ClosedPublic

Authored by spatel on Jun 21 2019, 11:15 AM.

Details

Summary

This is another intermediate IR step towards solving PR42314:
https://bugs.llvm.org/show_bug.cgi?id=42314

We can test if a value is power-of-2-or-0 using ctpop(X) < 2, so combining that with a non-zero check of the input is the same as testing if exactly 1 bit is set:

(X != 0) && (ctpop(X) u< 2) --> ctpop(X) == 1

Diff Detail

Repository
rL LLVM