https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114607
Bug ID: 114607 Summary: aarch64: Incorrect expansion of svsudot Product: gcc Version: 14.0 Status: UNCONFIRMED Keywords: wrong-code Severity: normal Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: rsandifo at gcc dot gnu.org Target Milestone: --- Target: aarch64*-*-* svsudot is supposed to expand to USDOT with the second and third arguments swapped. However, there is a thinko in the code that does the reversal, making it a no-op. Unfortunately, the tests simply accept the buggy form. :-( For example, gcc.target/aarch64/sve/acle/asm/sudot_s32.c contains: /* ** sudot_s32_tied1: ** usdot z0\.s, z2\.b, z4\.b ** ret */ TEST_TRIPLE_Z (sudot_s32_tied1, svint32_t, svint8_t, svuint8_t, z0 = svsudot_s32 (z0, z2, z4), z0 = svsudot (z0, z2, z4)) where the usdot z2 and z4 operands should be in the opposite order.