https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92655
--- Comment #2 from Richard Biener <rguenth at gcc dot gnu.org> --- "Fixed" source (MULWU), side-stepping GENERIC folding/narrowing of the subtract: inline uint64_t MULWU(uint64_t k, uint64_t m) { unsigned long xyz = BITS-m; return (( (k)<<(m) & M61) + ( (k) >> (xyz)) ) ; }