https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91520
Bug ID: 91520 Summary: AVX512 target assembler fails for x86_64 Darwin Product: gcc Version: 10.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: target Assignee: unassigned at gcc dot gnu.org Reporter: iains at gcc dot gnu.org Target Milestone: --- The following tests have failed since their introduction on Darwin targets that have vector instruction support. -m32 FAIL: gcc.target/i386/avx512vl-vcvtpd2dq-2.c (test for excess errors) FAIL: gcc.target/i386/avx512vl-vcvtpd2ps-2.c (test for excess errors) FAIL: gcc.target/i386/avx512vl-vcvtpd2udq-2.c (test for excess errors) FAIL: gcc.target/i386/avx512vl-vcvtqq2ps-2.c (test for excess errors) FAIL: gcc.target/i386/avx512vl-vcvttpd2dq-2.c (test for excess errors) FAIL: gcc.target/i386/avx512vl-vcvttpd2udq-2.c (test for excess errors) FAIL: gcc.target/i386/avx512vl-vcvtuqq2ps-2.c (test for excess errors) -m64 FAIL: gcc.target/i386/avx512vl-vcvtpd2dq-2.c (test for excess errors) FAIL: gcc.target/i386/avx512vl-vcvtpd2udq-2.c (test for excess errors) FAIL: gcc.target/i386/avx512vl-vfpclasspd-2.c (test for excess errors) FAIL: gcc.target/i386/avx512vl-vfpclassps-2.c (test for excess errors) The reason is that the assembler (where it supports AVX) is based on the LLVM backend, which did not support the use of the 'x', 'y' and 'z' markers on instructions when the inns do not require them letters to disambiguate. [ when the instruction includes a memory access, then it *is* necessary to use the letter to disambiguate ]. GAS allows the markers on all the insn variants and GCC emits them. As of LLVM 9.x the LLVM backend has been changed to match what GAS does - but clearly (a) that will take some time to appear in Xcode (which most Darwin folks are using as their 'binutils'). It will also never be made retrospectively available to existing earlier Darwin versions. There are two potential solutions: 1) Arrange that GCC doesn't emit this variant; (either unilaterally, or under some configure-determined flag that determines the required support). I have a prototype patch that can do the change, at least. 2) require that folks on Darwin use patched "binutils" (such as the 'xtools' I maintain).