https://gcc.gnu.org/bugzilla/show_bug.cgi?id=97734
--- Comment #3 from Rafael Avila de Espindola <rafael at espindo dot la> --- I just realized I made a mistake when producing the reduced testcase. The argument x should have been an uint32_t. Unfortunately, with that fix gcc always produces a branch. ICC still produces a cmov: https://gcc.godbolt.org/z/zszrPK I would be very happy with a __builtin_branchless_select.