https://gcc.gnu.org/bugzilla/show_bug.cgi?id=126810
Bug ID: 126810
Summary: simplify a ctz of a bit reversal
Product: gcc
Version: 17.0
Status: UNCONFIRMED
Keywords: missed-optimization
Severity: enhancement
Priority: P3
Component: tree-optimization
Assignee: unassigned at gcc dot gnu.org
Reporter: ktkachov at gcc dot gnu.org
Target Milestone: ---
int f (unsigned x) { return __builtin_ctz (__builtin_bitreverse32 (x)); }
should be a single clz on aarch64 but GCC generates:
f:
rbit w0, w0
rbit w0, w0
clz w0, w0
ret