-
Notifications
You must be signed in to change notification settings - Fork 13.5k
[AArch64] Remove SME/SVE uses of FMVDependencies #93695
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
176cdc2
to
5292a6b
Compare
This reverts commit c0371ab. This was just used to find tests which are broken, it should not be part of this patch.
@llvm/pr-subscribers-clang @llvm/pr-subscribers-backend-aarch64 Author: Tomas Matheson (tmatheson-arm) ChangesWhen FMV was added to AArch64, it added a dependency expansion step after the -cc1 command line was parsed but before Sema, in The dependency expansion can be considered broken at this stage because dependency expansion is already performed by the driver to generate the This patch fixes a large number of those tests, specifically ones where only a dependent feature (e.g.
The tests have been updated in a mechanical change with the following script: #!/usr/bin/env python3
import re
FILES = [
"clang/test/CodeGen/aarch64-sme-intrinsics/acle_sme_add-i64.c",
"clang/test/CodeGen/aarch64-sme-intrinsics/acle_sme_mopa-za64.c",
"clang/test/CodeGen/aarch64-sme-intrinsics/acle_sme_mops-za64.c",
"clang/test/CodeGen/aarch64-sme2-intrinsics/aarch64-sme2-attrs.cpp",
"clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_add_sub_za16.c",
"clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_add.c",
"clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_bmop.c",
"clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_clamp.c",
"clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_cvt.c",
"clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_cvtn.c",
"clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_fmlas16.c",
"clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_fp_dots.c",
"clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_frint.c",
"clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_int_dots.c",
"clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_luti2_lane_zt_x2.c",
"clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_luti2_lane_zt_x4.c",
"clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_luti2_lane_zt.c",
"clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_luti4_lane_zt_x2.c",
"clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_luti4_lane_zt_x4.c",
"clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_luti4_lane_zt.c",
"clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_max.c",
"clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_maxnm.c",
"clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_min.c",
"clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_minnm.c",
"clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_mla.c",
"clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_mlal.c",
"clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_mlall.c",
"clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_mls.c",
"clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_mlsl.c",
"clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_mop.c",
"clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_mopa_nonwide.c",
"clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_read.c",
"clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_reinterpret_svcount_svbool.c",
"clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_sqdmulh.c",
"clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_sub.c",
"clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_unpkx2.c",
"clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_unpkx4.c",
"clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_vdot.c",
"clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_vector_add.c",
"clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_vector_qrshr.c",
"clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_vector_rshl.c",
"clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_vector_selx2.c",
"clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_vector_selx4.c",
"clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_vector_uzpx2.c",
"clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_vector_uzpx4.c",
"clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_vector_zipx2.c",
"clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_vector_zipx4.c",
"clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_write.c",
"clang/test/CodeGen/aarch64-sme2p1-intrinsics/acle_sme2p1_zero.c",
"clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_create2-bfloat.c",
"clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_create3-bfloat.c",
"clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_create4-bfloat.c",
"clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_get2-bfloat.c",
"clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_get3-bfloat.c",
"clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_get4-bfloat.c",
"clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_set2-bfloat.c",
"clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_set3-bfloat.c",
"clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_set4-bfloat.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_aba.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_abalb.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_abalt.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_abdlb.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_abdlt.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_adalp.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_adclb.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_adclt.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_addhnb.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_addhnt.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_addlb.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_addlbt.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_addlt.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_addp.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_addwb.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_addwt.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_aesd.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_aese.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_aesimc.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_aesmc.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_bcax.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_bdep.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_bext.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_bgrp.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_bsl.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_bsl1n.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_bsl2n.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_cadd.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_cdot.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_cmla.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_cvtlt.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_cvtnt.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_cvtx.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_cvtxnt.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_eor3.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_eorbt.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_eortb.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_hadd.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_histcnt.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_histseg.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_hsub.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_hsubr.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_ldnt1.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_ldnt1sb.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_ldnt1sh.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_ldnt1sw.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_ldnt1ub.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_ldnt1uh.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_ldnt1uw.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_logb.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_match.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_maxnmp.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_maxp.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_minnmp.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_minp.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_mla.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_mlalb.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_mlalt.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_mls.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_mlslb.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_mlslt.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_movlb.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_movlt.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_mul.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_mullb.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_mullt.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_nbsl.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_nmatch.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_pmul.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_pmullb_128.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_pmullb.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_pmullt_128.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_pmullt.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_qabs.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_qadd.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_qcadd.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_qdmlalb.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_qdmlalbt.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_qdmlalt.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_qdmlslb.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_qdmlslbt.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_qdmlslt.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_qdmulh.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_qdmullb.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_qdmullt.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_qneg.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_qrdcmlah.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_qrdmlah.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_qrdmlsh.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_qrdmulh.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_qrshl.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_qrshrnb.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_qrshrnt.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_qrshrunb.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_qrshrunt.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_qshl.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_qshlu.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_qshrnb.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_qshrnt.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_qshrunb.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_qshrunt.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_qsub.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_qsubr.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_qxtnb.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_qxtnt.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_qxtunb.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_qxtunt.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_raddhnb.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_raddhnt.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_rax1.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_recpe.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_revd.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_rhadd.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_rshl.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_rshr.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_rshrnb.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_rshrnt.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_rsqrte.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_rsra.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_rsubhnb.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_rsubhnt.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_sbclb.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_sbclt.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_shllb.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_shllt.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_shrnb.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_shrnt.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_sli.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_sm4e.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_sm4ekey.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_sqadd.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_sra.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_sri.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_stnt1.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_stnt1b.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_stnt1h.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_stnt1w.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_subhnb.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_subhnt.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_sublb.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_sublbt.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_sublt.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_subltb.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_subwb.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_subwt.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_tbl2-bfloat.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_tbl2.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_tbx-bfloat.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_tbx.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_uqadd.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_whilege.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_whilegt.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_whilerw-bfloat.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_whilerw.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_whilewr-bfloat.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_whilewr.c",
"clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_xar.c",
"clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_bfadd.c",
"clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_bfclamp.c",
"clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_bfmax.c",
"clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_bfmaxnm.c",
"clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_bfmin.c",
"clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_bfminnm.c",
"clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_bfmla_lane.c",
"clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_bfmla.c",
"clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_bfmls_lane.c",
"clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_bfmls.c",
"clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_bfmlsl.c",
"clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_bfmul_lane.c",
"clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_bfmul.c",
"clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_bfsub.c",
"clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_cntp.c",
"clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_create2_bool.c",
"clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_create4_bool.c",
"clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_dot.c",
"clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_dupq.c",
"clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_extq.c",
"clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_fclamp.c",
"clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_fp_reduce.c",
"clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_get2_bool.c",
"clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_get4_bool.c",
"clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_int_reduce.c",
"clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_ld1_single.c",
"clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_ld1.c",
"clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_ldnt1.c",
"clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_loads.c",
"clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_pext.c",
"clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_pfalse.c",
"clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_pmov_to_pred.c",
"clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_pmov_to_vector.c",
"clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_psel_svcount.c",
"clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_psel.c",
"clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_ptrue.c",
"clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_qcvtn.c",
"clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_qrshr.c",
"clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_sclamp.c",
"clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_set2_bool.c",
"clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_set4_bool.c",
"clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_st1_single.c",
"clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_st1.c",
"clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_stnt1.c",
"clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_store.c",
"clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_tblq.c",
"clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_tbxq.c",
"clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_uclamp.c",
"clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_undef_bool.c",
"clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_uzpq1.c",
"clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_uzpq2.c",
"clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_while_pn.c",
"clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_while_x2.c",
"clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_zipq1.c",
"clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_zipq2.c",
"clang/test/CodeGen/arm-vector_type-params-returns.c",
"clang/test/Sema/aarch64-incompat-sm-builtin-calls.c",
"clang/test/Sema/aarch64-sme-func-attrs.c",
"clang/test/Sema/aarch64-sme2-intrinsics/acle_sme2_b16b16.cpp",
"clang/test/Sema/aarch64-sme2-intrinsics/acle_sme2_imm.cpp",
"clang/test/Sema/aarch64-sme2p1-diagnostics.c",
"clang/test/Sema/aarch64-sve2-intrinsics/acle_sve2_bfloat.cpp",
"clang/test/Sema/aarch64-sve2-intrinsics/acle_sve2_imm_n.cpp",
"clang/test/Sema/aarch64-sve2p1-intrinsics/acle_sve2p1_imm.cpp",
]
def update_runline(runline: str):
target_features = re.findall(r"-target-feature ([+-][\w-]+)\b", runline)
if not target_features:
# Nothing to do
return runline
print(f"Features: {target_features}")
print(f"old runline: {runline}")
sme2_dependent = (
"+sme2p1" in target_features
or "+sme-f64f64" in target_features
or "+sme-i16i64" in target_features
)
sve2_dependent = (
"+sve2p1" in target_features
or "+sve2-aes" in target_features
or "+sve2-bitperm" in target_features
or "+sve2-sha3" in target_features
or "+sve2-sm4" in target_features
)
sme2 = "+sme2" in target_features
sve2 = "+sve2" in target_features
sme = "+sme" in target_features
sve = "+sve" in target_features
bf16 = "+bf16" in target_features
if sme2_dependent and not sme2:
runline = re.sub(
r"(?=-target-feature \+[\w-]+\b)", "-target-feature +sme2 ", runline, 1
)
sme2 = True
if sve2_dependent and not sve2:
runline = re.sub(
r"(?=-target-feature \+[\w-]+\b)", "-target-feature +sve2 ", runline, 1
)
sve2 = True
if sme2 and not sme:
runline = re.sub(
r"(?=-target-feature \+[\w-]+\b)", "-target-feature +sme ", runline, 1
)
sme = True
if sve2 and not sve:
runline = re.sub(
r"(?=-target-feature \+[\w-]+\b)", "-target-feature +sve ", runline, 1
)
sve = True
if sme and not bf16:
runline = re.sub(
r"(?=-target-feature \+[\w-]+\b)", "-target-feature +bf16 ", runline, 1
)
bf16 = True
print(f"new runline: {runline}")
return runline
def main():
for filename in FILES:
print(f"-------- {filename} --------")
with open(filename, "r") as input_file:
lines = input_file.readlines()
with open(filename, "w") as output_file:
for line in lines:
if line.startswith("// RUN: "):
line = update_runline(line)
output_file.write(line)
if __name__ == "__main__":
main() The list of erroneous tests was generated by applying c0371ab, which effectively disables dependency expansion at this stage except for FMV attributes ( c0371ab is not part of this patch, because it would break tests for the Here is a list of tests broken by c0371ab that are not fixed in this PR: # These look like tests that can't be fixed automatically like this.
# diagnostics seen but not expected:
"clang/test/CodeGen/aarch64-targetattr-crypto.c",
"clang/test/Sema/aarch64-sme-func-attrs-without-target-feature.cpp",
"clang/test/Sema/aarch64-sme2-sve2p1-diagnostics.c",
"clang/test/Sema/aarch64-sve-intrinsics/acle_sve_target.cpp",
"clang/test/Sema/arm-sve-target.cpp",
# Tests where the target features string has changed:
"clang/test/CodeGen/aarch64-cpu-supports-target.c",
"clang/test/CodeGen/aarch64-sme-intrinsics/aarch64-sme-attrs.cpp",
"clang/test/CodeGen/aarch64-targetattr.c",
"clang/test/CodeGen/attr-target-clones-aarch64.c", Patch is 571.01 KiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/93695.diff 280 Files Affected:
diff --git a/clang/test/CodeGen/aarch64-sme-intrinsics/acle_sme_add-i64.c b/clang/test/CodeGen/aarch64-sme-intrinsics/acle_sme_add-i64.c
index b911c27914414..c341ff9bb29e6 100644
--- a/clang/test/CodeGen/aarch64-sme-intrinsics/acle_sme_add-i64.c
+++ b/clang/test/CodeGen/aarch64-sme-intrinsics/acle_sme_add-i64.c
@@ -1,10 +1,10 @@
// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py UTC_ARGS: --version 3
// REQUIRES: aarch64-registered-target
-// RUN: %clang_cc1 -fclang-abi-compat=latest -triple aarch64 -target-feature +sme-i16i64 -O1 -Werror -emit-llvm -o - %s | FileCheck %s -check-prefixes=CHECK,CHECK-C
-// RUN: %clang_cc1 -fclang-abi-compat=latest -triple aarch64 -target-feature +sme-i16i64 -O1 -Werror -emit-llvm -o - -x c++ %s | FileCheck %s -check-prefixes=CHECK,CHECK-CXX
-// RUN: %clang_cc1 -fclang-abi-compat=latest -DSME_OVERLOADED_FORMS -triple aarch64 -target-feature +sme-i16i64 -O1 -Werror -emit-llvm -o - %s | FileCheck %s -check-prefixes=CHECK,CHECK-C
-// RUN: %clang_cc1 -fclang-abi-compat=latest -DSME_OVERLOADED_FORMS -triple aarch64 -target-feature +sme-i16i64 -O1 -Werror -emit-llvm -o - -x c++ %s | FileCheck %s -check-prefixes=CHECK,CHECK-CXX
-// RUN: %clang_cc1 -fclang-abi-compat=latest -triple aarch64 -target-feature +sme-i16i64 -S -O1 -Werror -o /dev/null %s
+// RUN: %clang_cc1 -fclang-abi-compat=latest -triple aarch64 -target-feature +bf16 -target-feature +sme -target-feature +sme2 -target-feature +sme-i16i64 -O1 -Werror -emit-llvm -o - %s | FileCheck %s -check-prefixes=CHECK,CHECK-C
+// RUN: %clang_cc1 -fclang-abi-compat=latest -triple aarch64 -target-feature +bf16 -target-feature +sme -target-feature +sme2 -target-feature +sme-i16i64 -O1 -Werror -emit-llvm -o - -x c++ %s | FileCheck %s -check-prefixes=CHECK,CHECK-CXX
+// RUN: %clang_cc1 -fclang-abi-compat=latest -DSME_OVERLOADED_FORMS -triple aarch64 -target-feature +bf16 -target-feature +sme -target-feature +sme2 -target-feature +sme-i16i64 -O1 -Werror -emit-llvm -o - %s | FileCheck %s -check-prefixes=CHECK,CHECK-C
+// RUN: %clang_cc1 -fclang-abi-compat=latest -DSME_OVERLOADED_FORMS -triple aarch64 -target-feature +bf16 -target-feature +sme -target-feature +sme2 -target-feature +sme-i16i64 -O1 -Werror -emit-llvm -o - -x c++ %s | FileCheck %s -check-prefixes=CHECK,CHECK-CXX
+// RUN: %clang_cc1 -fclang-abi-compat=latest -triple aarch64 -target-feature +bf16 -target-feature +sme -target-feature +sme2 -target-feature +sme-i16i64 -S -O1 -Werror -o /dev/null %s
#include <arm_sme.h>
diff --git a/clang/test/CodeGen/aarch64-sme-intrinsics/acle_sme_mopa-za64.c b/clang/test/CodeGen/aarch64-sme-intrinsics/acle_sme_mopa-za64.c
index 37d5d73e97a6b..61c41450d6457 100644
--- a/clang/test/CodeGen/aarch64-sme-intrinsics/acle_sme_mopa-za64.c
+++ b/clang/test/CodeGen/aarch64-sme-intrinsics/acle_sme_mopa-za64.c
@@ -1,10 +1,10 @@
// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py UTC_ARGS: --version 3
// REQUIRES: aarch64-registered-target
-// RUN: %clang_cc1 -fclang-abi-compat=latest -triple aarch64 -target-feature +sme-f64f64 -target-feature +sme-i16i64 -target-feature +bf16 -O1 -Werror -emit-llvm -o - %s | FileCheck %s -check-prefixes=CHECK,CHECK-C
-// RUN: %clang_cc1 -fclang-abi-compat=latest -triple aarch64 -target-feature +sme-f64f64 -target-feature +sme-i16i64 -target-feature +bf16 -O1 -Werror -emit-llvm -o - -x c++ %s | FileCheck %s -check-prefixes=CHECK,CHECK-CXX
-// RUN: %clang_cc1 -fclang-abi-compat=latest -DSME_OVERLOADED_FORMS -triple aarch64 -target-feature +sme-f64f64 -target-feature +sme-i16i64 -target-feature +bf16 -O1 -Werror -emit-llvm -o - %s | FileCheck %s -check-prefixes=CHECK,CHECK-C
-// RUN: %clang_cc1 -fclang-abi-compat=latest -DSME_OVERLOADED_FORMS -triple aarch64 -target-feature +sme-f64f64 -target-feature +sme-i16i64 -target-feature +bf16 -O1 -Werror -emit-llvm -o - -x c++ %s | FileCheck %s -check-prefixes=CHECK,CHECK-CXX
-// RUN: %clang_cc1 -fclang-abi-compat=latest -triple aarch64 -target-feature +sme-f64f64 -target-feature +sme-i16i64 -target-feature +bf16 -S -O1 -Werror -o /dev/null %s
+// RUN: %clang_cc1 -fclang-abi-compat=latest -triple aarch64 -target-feature +sme -target-feature +sme2 -target-feature +sme-f64f64 -target-feature +sme-i16i64 -target-feature +bf16 -O1 -Werror -emit-llvm -o - %s | FileCheck %s -check-prefixes=CHECK,CHECK-C
+// RUN: %clang_cc1 -fclang-abi-compat=latest -triple aarch64 -target-feature +sme -target-feature +sme2 -target-feature +sme-f64f64 -target-feature +sme-i16i64 -target-feature +bf16 -O1 -Werror -emit-llvm -o - -x c++ %s | FileCheck %s -check-prefixes=CHECK,CHECK-CXX
+// RUN: %clang_cc1 -fclang-abi-compat=latest -DSME_OVERLOADED_FORMS -triple aarch64 -target-feature +sme -target-feature +sme2 -target-feature +sme-f64f64 -target-feature +sme-i16i64 -target-feature +bf16 -O1 -Werror -emit-llvm -o - %s | FileCheck %s -check-prefixes=CHECK,CHECK-C
+// RUN: %clang_cc1 -fclang-abi-compat=latest -DSME_OVERLOADED_FORMS -triple aarch64 -target-feature +sme -target-feature +sme2 -target-feature +sme-f64f64 -target-feature +sme-i16i64 -target-feature +bf16 -O1 -Werror -emit-llvm -o - -x c++ %s | FileCheck %s -check-prefixes=CHECK,CHECK-CXX
+// RUN: %clang_cc1 -fclang-abi-compat=latest -triple aarch64 -target-feature +sme -target-feature +sme2 -target-feature +sme-f64f64 -target-feature +sme-i16i64 -target-feature +bf16 -S -O1 -Werror -o /dev/null %s
#include <arm_sme.h>
diff --git a/clang/test/CodeGen/aarch64-sme-intrinsics/acle_sme_mops-za64.c b/clang/test/CodeGen/aarch64-sme-intrinsics/acle_sme_mops-za64.c
index 72c63bc3389a7..9d205beb05f28 100644
--- a/clang/test/CodeGen/aarch64-sme-intrinsics/acle_sme_mops-za64.c
+++ b/clang/test/CodeGen/aarch64-sme-intrinsics/acle_sme_mops-za64.c
@@ -1,10 +1,10 @@
// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py UTC_ARGS: --version 3
// REQUIRES: aarch64-registered-target
-// RUN: %clang_cc1 -fclang-abi-compat=latest -triple aarch64 -target-feature +sme-f64f64 -target-feature +sme-i16i64 -target-feature +bf16 -O1 -Werror -emit-llvm -o - %s | FileCheck %s -check-prefixes=CHECK,CHECK-C
-// RUN: %clang_cc1 -fclang-abi-compat=latest -triple aarch64 -target-feature +sme-f64f64 -target-feature +sme-i16i64 -target-feature +bf16 -O1 -Werror -emit-llvm -o - -x c++ %s | FileCheck %s -check-prefixes=CHECK,CHECK-CXX
-// RUN: %clang_cc1 -fclang-abi-compat=latest -DSME_OVERLOADED_FORMS -triple aarch64 -target-feature +sme-f64f64 -target-feature +sme-i16i64 -target-feature +bf16 -O1 -Werror -emit-llvm -o - %s | FileCheck %s -check-prefixes=CHECK,CHECK-C
-// RUN: %clang_cc1 -fclang-abi-compat=latest -DSME_OVERLOADED_FORMS -triple aarch64 -target-feature +sme-f64f64 -target-feature +sme-i16i64 -target-feature +bf16 -O1 -Werror -emit-llvm -o - -x c++ %s | FileCheck %s -check-prefixes=CHECK,CHECK-CXX
-// RUN: %clang_cc1 -fclang-abi-compat=latest -triple aarch64 -target-feature +sme-f64f64 -target-feature +sme-i16i64 -target-feature +bf16 -S -O1 -Werror -o /dev/null %s
+// RUN: %clang_cc1 -fclang-abi-compat=latest -triple aarch64 -target-feature +sme -target-feature +sme2 -target-feature +sme-f64f64 -target-feature +sme-i16i64 -target-feature +bf16 -O1 -Werror -emit-llvm -o - %s | FileCheck %s -check-prefixes=CHECK,CHECK-C
+// RUN: %clang_cc1 -fclang-abi-compat=latest -triple aarch64 -target-feature +sme -target-feature +sme2 -target-feature +sme-f64f64 -target-feature +sme-i16i64 -target-feature +bf16 -O1 -Werror -emit-llvm -o - -x c++ %s | FileCheck %s -check-prefixes=CHECK,CHECK-CXX
+// RUN: %clang_cc1 -fclang-abi-compat=latest -DSME_OVERLOADED_FORMS -triple aarch64 -target-feature +sme -target-feature +sme2 -target-feature +sme-f64f64 -target-feature +sme-i16i64 -target-feature +bf16 -O1 -Werror -emit-llvm -o - %s | FileCheck %s -check-prefixes=CHECK,CHECK-C
+// RUN: %clang_cc1 -fclang-abi-compat=latest -DSME_OVERLOADED_FORMS -triple aarch64 -target-feature +sme -target-feature +sme2 -target-feature +sme-f64f64 -target-feature +sme-i16i64 -target-feature +bf16 -O1 -Werror -emit-llvm -o - -x c++ %s | FileCheck %s -check-prefixes=CHECK,CHECK-CXX
+// RUN: %clang_cc1 -fclang-abi-compat=latest -triple aarch64 -target-feature +sme -target-feature +sme2 -target-feature +sme-f64f64 -target-feature +sme-i16i64 -target-feature +bf16 -S -O1 -Werror -o /dev/null %s
#include <arm_sme.h>
diff --git a/clang/test/CodeGen/aarch64-sme2-intrinsics/aarch64-sme2-attrs.cpp b/clang/test/CodeGen/aarch64-sme2-intrinsics/aarch64-sme2-attrs.cpp
index ccf05de7f4e90..15b9ac42cbcf3 100644
--- a/clang/test/CodeGen/aarch64-sme2-intrinsics/aarch64-sme2-attrs.cpp
+++ b/clang/test/CodeGen/aarch64-sme2-intrinsics/aarch64-sme2-attrs.cpp
@@ -1,4 +1,4 @@
-// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sme2 \
+// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +bf16 -target-feature +sme -target-feature +sme2 \
// RUN: -disable-O0-optnone -Werror -emit-llvm -o - %s \
// RUN: | opt -S -passes=mem2reg \
// RUN: | opt -S -passes=inline \
diff --git a/clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_add.c b/clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_add.c
index 1dec2d6957a5f..135bcf743e5e6 100644
--- a/clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_add.c
+++ b/clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_add.c
@@ -2,11 +2,11 @@
// REQUIRES: aarch64-registered-target
-// RUN: %clang_cc1 -fclang-abi-compat=latest -triple aarch64 -target-feature +sme2 -target-feature +sme-i16i64 -target-feature +sme-f64f64 -disable-O0-optnone -Werror -Wall -emit-llvm -o - %s | opt -S -p mem2reg,instcombine,tailcallelim | FileCheck %s
-// RUN: %clang_cc1 -fclang-abi-compat=latest -triple aarch64 -target-feature +sme2 -target-feature +sme-i16i64 -target-feature +sme-f64f64 -disable-O0-optnone -Werror -Wall -emit-llvm -o - -x c++ %s | opt -S -p mem2reg,instcombine,tailcallelim | FileCheck %s -check-prefix=CPP-CHECK
-// RUN: %clang_cc1 -fclang-abi-compat=latest -DSVE_OVERLOADED_FORMS -triple aarch64 -target-feature +sme2 -target-feature +sme-i16i64 -target-feature +sme-f64f64 -disable-O0-optnone -Werror -Wall -emit-llvm -o - %s | opt -S -p mem2reg,instcombine,tailcallelim | FileCheck %s
-// RUN: %clang_cc1 -fclang-abi-compat=latest -DSVE_OVERLOADED_FORMS -triple aarch64 -target-feature +sme2 -target-feature +sme-i16i64 -target-feature +sme-f64f64 -disable-O0-optnone -Werror -Wall -emit-llvm -o - -x c++ %s | opt -S -p mem2reg,instcombine,tailcallelim | FileCheck %s -check-prefix=CPP-CHECK
-// RUN: %clang_cc1 -fclang-abi-compat=latest -triple aarch64 -target-feature +sme2 -target-feature +sme-i16i64 -target-feature +sme-f64f64 -S -disable-O0-optnone -Werror -Wall -o /dev/null %s
+// RUN: %clang_cc1 -fclang-abi-compat=latest -triple aarch64 -target-feature +bf16 -target-feature +sme -target-feature +sme2 -target-feature +sme-i16i64 -target-feature +sme-f64f64 -disable-O0-optnone -Werror -Wall -emit-llvm -o - %s | opt -S -p mem2reg,instcombine,tailcallelim | FileCheck %s
+// RUN: %clang_cc1 -fclang-abi-compat=latest -triple aarch64 -target-feature +bf16 -target-feature +sme -target-feature +sme2 -target-feature +sme-i16i64 -target-feature +sme-f64f64 -disable-O0-optnone -Werror -Wall -emit-llvm -o - -x c++ %s | opt -S -p mem2reg,instcombine,tailcallelim | FileCheck %s -check-prefix=CPP-CHECK
+// RUN: %clang_cc1 -fclang-abi-compat=latest -DSVE_OVERLOADED_FORMS -triple aarch64 -target-feature +bf16 -target-feature +sme -target-feature +sme2 -target-feature +sme-i16i64 -target-feature +sme-f64f64 -disable-O0-optnone -Werror -Wall -emit-llvm -o - %s | opt -S -p mem2reg,instcombine,tailcallelim | FileCheck %s
+// RUN: %clang_cc1 -fclang-abi-compat=latest -DSVE_OVERLOADED_FORMS -triple aarch64 -target-feature +bf16 -target-feature +sme -target-feature +sme2 -target-feature +sme-i16i64 -target-feature +sme-f64f64 -disable-O0-optnone -Werror -Wall -emit-llvm -o - -x c++ %s | opt -S -p mem2reg,instcombine,tailcallelim | FileCheck %s -check-prefix=CPP-CHECK
+// RUN: %clang_cc1 -fclang-abi-compat=latest -triple aarch64 -target-feature +bf16 -target-feature +sme -target-feature +sme2 -target-feature +sme-i16i64 -target-feature +sme-f64f64 -S -disable-O0-optnone -Werror -Wall -o /dev/null %s
#include <arm_sme.h>
diff --git a/clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_add_sub_za16.c b/clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_add_sub_za16.c
index 9a8aa448d3780..6336f435b8687 100644
--- a/clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_add_sub_za16.c
+++ b/clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_add_sub_za16.c
@@ -1,10 +1,10 @@
// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py UTC_ARGS: --version 4
-// RUN: %clang_cc1 -fclang-abi-compat=latest -triple aarch64-none-linux-gnu -target-feature +sme2 -target-feature +sme-f16f16 -target-feature +b16b16 -O2 -Werror -Wall -emit-llvm -o - %s | FileCheck %s
-// RUN: %clang_cc1 -x c++ -fclang-abi-compat=latest -triple aarch64-none-linux-gnu -target-feature +sme2 -target-feature +sme-f8f16 -target-feature +b16b16 -O2 -Werror -Wall -emit-llvm -o - %s | FileCheck %s -check-prefix CHECK-CXX
-// RUN: %clang_cc1 -DSVE_OVERLOADED_FORMS -fclang-abi-compat=latest -triple aarch64-none-linux-gnu -target-feature +sme2 -target-feature +sme-f8f16 -target-feature +b16b16 -O2 -Werror -Wall -emit-llvm -o - %s | FileCheck %s
-// RUN: %clang_cc1 -DSVE_OVERLOADED_FORMS -x c++ -fclang-abi-compat=latest -triple aarch64-none-linux-gnu -target-feature +sme2 -target-feature +sme-f16f16 -target-feature +b16b16 -O2 -Werror -Wall -emit-llvm -o - %s | FileCheck %s -check-prefix CHECK-CXX
+// RUN: %clang_cc1 -fclang-abi-compat=latest -triple aarch64-none-linux-gnu -target-feature +bf16 -target-feature +sme -target-feature +sme2 -target-feature +sme-f16f16 -target-feature +b16b16 -O2 -Werror -Wall -emit-llvm -o - %s | FileCheck %s
+// RUN: %clang_cc1 -x c++ -fclang-abi-compat=latest -triple aarch64-none-linux-gnu -target-feature +bf16 -target-feature +sme -target-feature +sme2 -target-feature +sme-f8f16 -target-feature +b16b16 -O2 -Werror -Wall -emit-llvm -o - %s | FileCheck %s -check-prefix CHECK-CXX
+// RUN: %clang_cc1 -DSVE_OVERLOADED_FORMS -fclang-abi-compat=latest -triple aarch64-none-linux-gnu -target-feature +bf16 -target-feature +sme -target-feature +sme2 -target-feature +sme-f8f16 -target-feature +b16b16 -O2 -Werror -Wall -emit-llvm -o - %s | FileCheck %s
+// RUN: %clang_cc1 -DSVE_OVERLOADED_FORMS -x c++ -fclang-abi-compat=latest -triple aarch64-none-linux-gnu -target-feature +bf16 -target-feature +sme -target-feature +sme2 -target-feature +sme-f16f16 -target-feature +b16b16 -O2 -Werror -Wall -emit-llvm -o - %s | FileCheck %s -check-prefix CHECK-CXX
-// RUN: %clang_cc1 -fclang-abi-compat=latest -triple aarch64-none-linux-gnu -target-feature +sme2 -target-feature +sme-f16f16 -target-feature +b16b16 -O2 -S -Werror -Wall -o /dev/null
+// RUN: %clang_cc1 -fclang-abi-compat=latest -triple aarch64-none-linux-gnu -target-feature +bf16 -target-feature +sme -target-feature +sme2 -target-feature +sme-f16f16 -target-feature +b16b16 -O2 -S -Werror -Wall -o /dev/null
// REQUIRES: aarch64-registered-target
diff --git a/clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_bmop.c b/clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_bmop.c
index 47ff02eb9fb5a..84521e7e47644 100644
--- a/clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_bmop.c
+++ b/clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_bmop.c
@@ -2,11 +2,11 @@
// REQUIRES: aarch64-registered-target
-// RUN: %clang_cc1 -triple aarch64 -target-feature +sme2 -disable-O0-optnone -Werror -Wall -emit-llvm -o - %s | opt -S -p mem2reg,instcombine,tailcallelim | FileCheck %s
-// RUN: %clang_cc1 -triple aarch64 -target-feature +sme2 -disable-O0-optnone -Werror -Wall -emit-llvm -o - -x c++ %s | opt -S -p mem2reg,instcombine,tailcallelim | FileCheck %s -check-prefix=CPP-CHECK
-// RUN: %clang_cc1 -DSVE_OVERLOADED_FORMS -triple aarch64 -target-feature +sme2 -disable-O0-optnone -Werror -Wall -emit-llvm -o - %s | opt -S -p mem2reg,instcombine,tailcallelim | FileCheck %s
-// RUN: %clang_cc1 -DSVE_OVERLOADED_FORMS -triple aarch64 -target-feature +sme2 -disable-O0-optnone -Werror -Wall -emit-llvm -o - -x c++ %s | opt -S -p mem2reg,instcombine,tailcallelim | FileCheck %s -check-prefix=CPP-CHECK
-// RUN: %clang_cc1 -triple aarch64 -target-feature +sme2 -S -disable-O0-optnone -Werror -Wall -o /dev/null %s
+// RUN: %clang_cc1 -triple aarch64 -target-feature +bf16 -target-feature +sme -target-feature +sme2 -disable-O0-optnone -Werror -Wall -emit-llvm -o - %s | opt -S -p mem2reg,instcombine,tailcallelim | FileCheck %s
+// RUN: %clang_cc1 -triple aarch64 -target-feature +bf16 -target-feature +sme -target-feature +sme2 -disable-O0-optnone -Werror -Wall -emit-llvm -o - -x c++ %s | opt -S -p mem2reg,instcombine,tailcallelim | FileCheck %s -check-prefix=CPP-CHECK
+// RUN: %clang_cc1 -DSVE_OVERLOADED_FORMS -triple aarch64 -target-feature +bf16 -target-feature +sme -target-feature +sme2 -disable-O0-optnone -Werror -Wall -emit-llvm -o - %s | opt -S -p mem2reg,instcombine,tailcallelim | FileCheck %s
+// RUN: %clang_cc1 -DSVE_OVERLOADED_FORMS -triple aarch64 -target-feature +bf16 -target-feature +sme -target-feature +sme2 -disable-O0-optnone -Werror -Wall -emit-llvm -o - -x c++ %s | opt -S -p mem2reg,instcombine,tailcallelim | FileCheck %s -check-prefix=CPP-CHECK
+// RUN: %clang_cc1 -triple aarch64 -target-feature +bf16 -target-feature +sme -target-feature +sme2 -S -disable-O0-optnone -Werror -Wall -o /dev/null %s
#include <arm_sme.h>
diff --git a/clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_clamp.c b/clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_clamp.c
index 21a8229bbf244..30d963d5425c4 100644
--- a/clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_clamp.c
+++ b/clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_clamp.c
@@ -1,14 +1,14 @@
// NOTE: Assertions have been autogenerated by utils/update_cc_test_checks.py
// REQUIRES: aarch64-registered-target
-// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sme2 -target-feature +b16b16 \
+// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +bf16 -target-feature +sme -target-feature +sme2 -target-feature +b16b16 \
// RUN: -Werror -emit-llvm -disable-O0-optnone -o - %s | opt -S -p mem2reg,instcombine,tailcallelim | FileCheck %s
-// RUN: %clang_cc1 -DSVE_OVERLOADED_FORMS -triple aarch64-none-linux-gnu -target-feature +sme2 -target-feature +b16b16 \
+// RUN: %clang_cc1 -DSVE_OVERLOADED_FORMS -triple aarch64-none-linux-gnu -target-feature +bf16 -target-feature +sme -target-feature +sme2 -target-feature +b16b16 \
// RUN: -Werror -emit-llvm -disable-O0-optnone -o - %s | opt -S -p mem2reg,instcombine,tailcallelim | FileCheck %s
-// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sme2 -target-feature +b16b16 \
+// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +bf16 -target-feature +sme -target-feature +sme2 -target-feature +b16b16 \
// RUN: -Werror -emit-llvm -disable-O0-optnone -o - -x c++ %s | opt -S -p mem2reg,instcombine,tailcallelim | FileCheck %s -check-prefix=CPP-CHECK
-// RUN: %clang_cc1 -DSVE_OVERLOADED_FORMS -triple aarch64-none-linux-gnu -target-feature +sme2 -target-feature +b16b16 \
+// RUN: %clang_cc1 -DSVE_OVERLOADED_FORMS -triple aarch64-none-linux-gnu -target-feature +bf16 -target-feature +sme -target-feature +sme2 -target-feature +b16b16 \
// RUN: -Werror -emit-llvm -disable-O0-optnone -o - -x c++ %s | opt -S -p mem2reg,instcombine,tailcallelim | FileCheck %s -check-prefix=CPP-CHECK
-// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +sme2 -target-feature +b16b16 \
+// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +bf16 -target-feature +sme -target-feature +sme2 -target-feature +b16b16 \
// RUN: -S -disable-O0-optnone -Werror -Wall -o /dev/null %s
#include <arm_sme.h>
diff --git a/clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_cvt.c b/clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_cvt.c
index e26499d3a63cc..686e4f4f99afe 100644
--- a/clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_cvt.c
+++ b/clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_cvt.c
@@ -2,11 +2,11 @...
[truncated]
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The changes look good to me. Good catch spotting the inconsistency in the dependency expansion after the extension set is flattened.
This reverts commit 55d3820. The target attribute still depends on these, in particular for +sve2p1.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I am also supporting this change. We have been trying to refactor attribute parsing for target/target_clones/target_version, as well as the target-feature expansion which happens due to these attributes. It's a huge mess. Sorting such test inconsistencies will help make the next steps.
The dependency expansion step which was introduced by FMV has been erroneously used for non-FMV features, for example when parsing the target attribute. The PR llvm#93695 has rectified most of the tests which were relying on dependency expansion of target features specified on the -cc1 command line. In this patch I am decoupling the dependency expansion of features specified on the target attribute from FMV. To do that first I am expanding FMV dependencies before passing the list of target features to initFeatureMap(). Similarly when parsing the target attribute I am reconstructing an ExtensionSet from the list of target features which was created during the command line option parsing. The attribute parsing may toggle bits of that ExtensionSet and at the end it is converted to a list of target features. Those are passed to initFeatureMap(), which no longer requires an override. A side effect of this refactoring is that features specified on the target_version attribute now supersede the command line options, which is what should be happening in the first place.
The dependency expansion step which was introduced by FMV has been erroneously used for non-FMV features, for example when parsing the target attribute. The PR llvm#93695 has rectified most of the tests which were relying on dependency expansion of target features specified on the -cc1 command line. In this patch I am decoupling the dependency expansion of features specified on the target attribute from FMV. To do that first I am expanding FMV dependencies before passing the list of target features to initFeatureMap(). Similarly when parsing the target attribute I am reconstructing an ExtensionSet from the list of target features which was created during the command line option parsing. The attribute parsing may toggle bits of that ExtensionSet and at the end it is converted to a list of target features. Those are passed to initFeatureMap(), which no longer requires an override. A side effect of this refactoring is that features specified on the target_version attribute now supersede the command line options, which is what should be happening in the first place.
The dependency expansion step which was introduced by FMV has been erroneously used for non-FMV features, for example when parsing the target attribute. The PR #93695 has rectified most of the tests which were relying on dependency expansion of target features specified on the -cc1 command line. In this patch I am decoupling the dependency expansion of features specified on the target attribute from FMV. To do that first I am expanding FMV dependencies before passing the list of target features to initFeatureMap(). Similarly when parsing the target attribute I am reconstructing an ExtensionSet from the list of target features which was created during the command line option parsing. The attribute parsing may toggle bits of that ExtensionSet and at the end it is converted to a list of target features. Those are passed to initFeatureMap(), which no longer requires an override. A side effect of this refactoring is that features specified on the target_version attribute now supersede the command line options, which is what should be happening in the first place.
When FMV was added to AArch64, it added a dependency expansion step after the -cc1 command line was parsed but before Sema, in
AArch64TargetInfo::initFeatureMap
. One effect of this is that-target-features
specified on the-cc1
command line had some level of incomplete and broken dependency expansion. Since then, many tests have been added which depend on this behaviour.The dependency expansion can be considered broken at this stage because dependency expansion is already performed by the driver to generate the
-target-feature
flags using anExtensionSet
. This class does dependency evaluation and then generates a flattened representation of the dependency graph in the form of-target-features
, which are passed to-cc1
in an arbitrary order (determined by the order of bits in the bitset). Any dependency expansion done after-cc1
will be inherently contradictory. It is impossible to accurately treat negative features once the dependency graph has been flattened and the order randomised.This patch fixes a large number of those tests, specifically ones where only a dependent feature (e.g.
-target-feature +sme2p1
) was added to the test-cc1
command, and not the necessary dependencies (e.g.-target-feature +sme
). Here is an example of the typical error that occurs with such tests when the dependency expansion is removed:The tests have been updated in a mechanical change with the following script:
The list of erroneous tests was generated by applying c0371ab, which effectively disables dependency expansion at this stage except for FMV attributes (
target_versions
andtarget_clonse
), and seeing which tests break.c0371ab is not part of this patch, because it would break tests for the
target
attribute, which now also depends on the same mechanism to work. To fix this, dependency expansion needs to be added to the handling of thetarget
attribute and removed frominitFeatureMap
, but that will be a separate PR. Fixing these tests is NFC from a user-perspective and will make future work easier.Here is a list of tests broken by c0371ab that are not fixed in this PR: