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
```

Reply via email to