https://gcc.gnu.org/bugzilla/show_bug.cgi?id=116257
Bug ID: 116257 Summary: [12/13/14/15 Regression] vmlaq_lane_f32 no longer uses fmla Product: gcc Version: 15.0 Status: UNCONFIRMED Keywords: wrong-code Severity: normal Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: pinskia at gcc dot gnu.org Target Milestone: --- Target: aarch64 Take: ``` #include <arm_neon.h> float32x4_t f(float32x4_t x, float32x2_t vconstants0) { x = vmlaq_lane_f32(x, x, vconstants0, 0); return x; } ``` I would have expected this to produce: ``` f: fmla v0.4s, v0.4s, v1.s[0] ret ``` But starting in GCC 12, fmul/fadd is being produced: ``` f: fmul v1.4s, v0.4s, v1.s[0] fadd v0.4s, v0.4s, v1.4s ret ```