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
}

Reply via email to