https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114485
--- Comment #3 from Richard Biener <rguenth at gcc dot gnu.org> --- Huh. _75 = [vec_duplicate_expr] pretmp_34; _76 = -_75; _77 = VEC_PERM_EXPR <_75, _76, { 0, POLY_INT_CST [4, 4], 1, POLY_INT_CST [5, 4], 2, POLY_INT_CST [6, 4], ... }>; # c_lsm.7_8 = PHI <_2(9), pretmp_34(19)> vect__2.17_79 = -_77; _2 = -c_lsm.7_8; <bb 28> [local count: 94607391]: # i_101 = PHI <i_17(3)> # vect__2.17_102 = PHI <vect__2.17_79(3)> # loop_mask_103 = PHI <loop_mask_81(3)> # vect_iftmp.24_104 = PHI <vect_iftmp.24_91(3)> _68 = ni_gap.12_67; _93 = .EXTRACT_LAST (loop_mask_103, vect_iftmp.24_104); iftmp.1_59 = _93; _82 = .EXTRACT_LAST (loop_mask_103, vect__2.17_102); it looks OK to me? But maybe the poly-int-cst permute is wrong? Should be an interleave.