https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112306
Bug ID: 112306 Summary: [AArch64][neon] incorrect combine the (a -1)* b into fnmsub for fixed vector type Product: gcc Version: 13.1.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c Assignee: unassigned at gcc dot gnu.org Reporter: zhongyunde at huawei dot com Target Milestone: --- * test: https://gcc.godbolt.org/z/sr6Mevf9G ``` float32x4_t test2_float_vec (float32x4_t a, float32x4_t b) { return -b + a * b; } ``` * it seems not right for gcc to generate the a single **fnmsub s0, s0, s1, s1**, because the variables of a and b are vector type, while the output use a scalar float type registers ?