https://gcc.gnu.org/bugzilla/show_bug.cgi?id=115669
--- Comment #5 from Richard Biener <rguenth at gcc dot gnu.org> --- I think we use a wrong ELSE value: vect_b.19_54 = VIEW_CONVERT_EXPR<vector([4,4]) signed int>(vect_b_lsm.18_53); vect__15.20_56 = .COND_ADD (loop_mask_55, { -1, ... }, vect_b.19_54, { -1, ... }); ^^^ vect__8.21_57 = .COND_SUB (loop_mask_55, vect__15.20_56, vect__5.17_51, vect__15.20_56); vect__9.22_58 = VIEW_CONVERT_EXPR<vector([4,4]) unsigned int>(vect__8.21_57); I'll see how that happens. Possibly an operand order issue.