https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112740
--- Comment #5 from Andrew Pinski <pinskia at gcc dot gnu.org> --- x86_64 IR: c.0_6 = c_5(D); _2 = (__int128 unsigned) c.0_6; _1 = {_2}; _10 = VIEW_CONVERT_EXPR<__int128 unsigned>(v_7(D)); _11 = _10 >= _2; _12 = (int128_t) _11; _13 = -_12; _14 = (<signed-boolean:128>) _13; _3 = {_14}; _15 = _12 + -1; _16 = (<signed-boolean:128>) _15; _4 = {_16}; _8 = VIEW_CONVERT_EXPR<V>(_4); aarch64 (and I think riscv) IR: c.0_6 = c_5(D); _2 = (__int128 unsigned) c.0_6; _1 = {_2}; _10 = VIEW_CONVERT_EXPR<__int128 unsigned>(v_7(D)); _11 = _10 >= _2; _12 = (int128_t) _11; _13 = -_12; _14 = (<signed-boolean:128>) _13; _3 = {_14}; _4 = ~_3; _15 = VIEW_CONVERT_EXPR<<signed-boolean:128>>(_4); _16 = _15 != 0; _17 = (__int128 unsigned) _16; _18 = -_17; _8 = {_18};