https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120032
Bug ID: 120032 Summary: Fails to pattern match clz from DeBruijn Product: gcc Version: 15.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: tree-optimization Assignee: unassigned at gcc dot gnu.org Reporter: rguenth at gcc dot gnu.org Target Milestone: --- __attribute__((noinline)) unsigned int ZSTD_countLeadingZeros32_fallback(unsigned int val) { #ifdef USEBMI return __builtin_clz(val); #elif USECMPBMI return lzcntl_cmovbl(val); #else { static const unsigned int DeBruijnClz[32] = {0, 9, 1, 10, 13, 21, 2, 29, 11, 14, 16, 18, 22, 25, 3, 30, 8, 12, 20, 28, 15, 17, 24, 7, 19, 27, 23, 6, 26, 5, 4, 31}; val |= val >> 1; val |= val >> 2; val |= val >> 4; val |= val >> 8; val |= val >> 16; return 31 - DeBruijnClz[(val * 0x07C4ACDDU) >> 27]; } #endif }