https://gcc.gnu.org/bugzilla/show_bug.cgi?id=128304
Richard Biener <rguenth at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Target| |aarch64
Last reconfirmed| |2026-10-30
Status|UNCONFIRMED |NEW
Ever confirmed|0 |1
Priority|P3 |P2
--- Comment #1 from Richard Biener <rguenth at gcc dot gnu.org> ---
Confirmed. -fno-tree-loop-vectorize fixes it, --param vect-epilogues-nomask=0
fixes it as well, so the epilog is wrong which we end up vectorizing as
vect__54.56_22 = MEM <vector(2) float> [(float *)vectp_d.54_126 + 8B];
vect__50.46_1 = MEM <vector(2) float> [(float *)vectp_x.44_112 + 8B];
vect__51.47_2 = VEC_PERM_EXPR <vect__50.46_1, vect__50.46_1, { 1, 1 }>;
vect__47.51_3 = MEM <vector(2) float> [(float *)vectp_y.49_119 + 8B];
vect__48.52_12 = VEC_PERM_EXPR <vect__47.51_3, vect__47.51_3, { 1, 1 }>;
vect_slp_patt_61.57_11 = .COMPLEX_FMS (vect__51.47_2, vect__48.52_12,
vect__54.56_22);
MEM <vector(2) float> [(float *)vectp_d.54_126 + 8B] =
vect_slp_patt_61.57_11;
note the main loop uses
vect__6.35_95 = .FNMA (vect__21.13_80, vect__25.22_85, vect__12.32_92);
vect__34.37_97 = .FNMA (vect__21.15_81, vect__25.20_84, vect__6.35_95);
_90 = .FMA (vect__21.15_81, vect__25.22_85, vect__12.30_91);
vect__33.33_93 = .FNMA (vect__21.13_80, vect__25.20_84, _90);