[clang] [llvm] [AArch64] Remove SME/SVE uses of FMVDependencies (PR #93695)

via cfe-commits cfe-commits at lists.llvm.org
Thu May 30 07:40:52 PDT 2024


llvmbot wrote:


<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-backend-aarch64

Author: Tomas Matheson (tmatheson-arm)

<details>
<summary>Changes</summary>

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 an `ExtensionSet`. 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:
```
RUN: at line 4: /ssd/llvm/main/build/bin/clang -cc1 -internal-isystem /ssd/llvm/main/build/lib/clang/19/include -nostdsysteminc -fclang-abi-compat=latest -triple aarch64 -target-feature +sve2 -O1 -Werror -Wall -emit-llvm -o - /ssd/llvm/main/clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_rsubhnt.c | /ssd/llvm/main/build/bin/FileCheck /ssd/llvm/main/clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_rsubhnt.c
+ /ssd/llvm/main/build/bin/clang -cc1 -internal-isystem /ssd/llvm/main/build/lib/clang/19/include -nostdsysteminc -fclang-abi-compat=latest -triple aarch64 -target-feature +sve2 -O1 -Werror -Wall -emit-llvm -o - /ssd/llvm/main/clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_rsubhnt.c
+ /ssd/llvm/main/build/bin/FileCheck /ssd/llvm/main/clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_rsubhnt.c
/ssd/llvm/main/clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_rsubhnt.c:28:10: error: SVE vector type 'svint8_t' (aka '__SVInt8_t') cannot be used in a target without sve
   28 | svint8_t test_svrsubhnt_s16(svint8_t op1, svint16_t op2, svint16_t op3)
      |          ^
/ssd/llvm/main/clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_rsubhnt.c:28:10: error: SVE vector type 'svint16_t' (aka '__SVInt16_t') cannot be used in a target without sve
/ssd/llvm/main/clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_rsubhnt.c:28:10: error: SVE vector type 'svint16_t' (aka '__SVInt16_t') cannot be used in a target without sve
/ssd/llvm/main/clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_rsubhnt.c:28:10: error: SVE vector type 'svint8_t' (aka '__SVInt8_t') cannot be used in a target without sve
/ssd/llvm/main/clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_rsubhnt.c:43:11: error: SVE vector type 'svint16_t' (aka '__SVInt16_t') cannot be used in a target without sve
   43 | svint16_t test_svrsubhnt_s32(svint16_t op1, svint32_t op2, svint32_t op3)
      |           ^
```

The tests have been updated in a mechanical change with the following script:

```python
#!/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 c0371abb7d0d3fd7093c117bf15da1e3ed0a1ce2, which effectively disables dependency expansion at this stage _except_ for FMV attributes (`target_versions` and `target_clonse`), and seeing which tests break.

c0371abb7d0d3fd7093c117bf15da1e3ed0a1ce2 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 the `target` attribute and removed from `initFeatureMap`, 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 c0371abb7d0d3fd7093c117bf15da1e3ed0a1ce2 that are not fixed in this PR:
```python
    # 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:

- (modified) clang/test/CodeGen/aarch64-sme-intrinsics/acle_sme_add-i64.c (+5-5) 
- (modified) clang/test/CodeGen/aarch64-sme-intrinsics/acle_sme_mopa-za64.c (+5-5) 
- (modified) clang/test/CodeGen/aarch64-sme-intrinsics/acle_sme_mops-za64.c (+5-5) 
- (modified) clang/test/CodeGen/aarch64-sme2-intrinsics/aarch64-sme2-attrs.cpp (+1-1) 
- (modified) clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_add.c (+5-5) 
- (modified) clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_add_sub_za16.c (+5-5) 
- (modified) clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_bmop.c (+5-5) 
- (modified) clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_clamp.c (+5-5) 
- (modified) clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_cvt.c (+5-5) 
- (modified) clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_cvtn.c (+5-5) 
- (modified) clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_fmlas16.c (+5-5) 
- (modified) clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_fp_dots.c (+5-5) 
- (modified) clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_frint.c (+5-5) 
- (modified) clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_int_dots.c (+5-5) 
- (modified) clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_luti2_lane_zt.c (+3-3) 
- (modified) clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_luti2_lane_zt_x2.c (+3-3) 
- (modified) clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_luti2_lane_zt_x4.c (+3-3) 
- (modified) clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_luti4_lane_zt.c (+3-3) 
- (modified) clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_luti4_lane_zt_x2.c (+3-3) 
- (modified) clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_luti4_lane_zt_x4.c (+3-3) 
- (modified) clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_max.c (+5-5) 
- (modified) clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_maxnm.c (+5-5) 
- (modified) clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_min.c (+5-5) 
- (modified) clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_minnm.c (+5-5) 
- (modified) clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_mla.c (+5-5) 
- (modified) clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_mlal.c (+5-5) 
- (modified) clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_mlall.c (+5-5) 
- (modified) clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_mls.c (+5-5) 
- (modified) clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_mlsl.c (+5-5) 
- (modified) clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_mop.c (+5-5) 
- (modified) clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_mopa_nonwide.c (+5-5) 
- (modified) clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_read.c (+3-3) 
- (modified) clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_reinterpret_svcount_svbool.c (+6-6) 
- (modified) clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_sqdmulh.c (+5-5) 
- (modified) clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_sub.c (+5-5) 
- (modified) clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_unpkx2.c (+6-6) 
- (modified) clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_unpkx4.c (+6-6) 
- (modified) clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_vdot.c (+5-5) 
- (modified) clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_vector_add.c (+5-5) 
- (modified) clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_vector_qrshr.c (+5-5) 
- (modified) clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_vector_rshl.c (+5-5) 
- (modified) clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_vector_selx2.c (+5-5) 
- (modified) clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_vector_selx4.c (+5-5) 
- (modified) clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_vector_uzpx2.c (+5-5) 
- (modified) clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_vector_uzpx4.c (+5-5) 
- (modified) clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_vector_zipx2.c (+5-5) 
- (modified) clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_vector_zipx4.c (+5-5) 
- (modified) clang/test/CodeGen/aarch64-sme2-intrinsics/acle_sme2_write.c (+5-5) 
- (modified) clang/test/CodeGen/aarch64-sme2p1-intrinsics/acle_sme2p1_zero.c (+3-3) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_create2-bfloat.c (+1-1) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_create3-bfloat.c (+1-1) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_create4-bfloat.c (+1-1) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_get2-bfloat.c (+1-1) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_get3-bfloat.c (+1-1) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_get4-bfloat.c (+1-1) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_set2-bfloat.c (+1-1) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_set3-bfloat.c (+1-1) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_set4-bfloat.c (+1-1) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_aba.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_abalb.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_abalt.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_abdlb.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_abdlt.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_adalp.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_adclb.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_adclt.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_addhnb.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_addhnt.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_addlb.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_addlbt.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_addlt.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_addp.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_addwb.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_addwt.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_aesd.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_aese.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_aesimc.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_aesmc.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_bcax.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_bdep.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_bext.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_bgrp.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_bsl.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_bsl1n.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_bsl2n.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_cadd.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_cdot.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_cmla.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_cvtlt.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_cvtnt.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_cvtx.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_cvtxnt.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_eor3.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_eorbt.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_eortb.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_hadd.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_histcnt.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_histseg.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_hsub.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_hsubr.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_ldnt1.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_ldnt1sb.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_ldnt1sh.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_ldnt1sw.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_ldnt1ub.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_ldnt1uh.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_ldnt1uw.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_logb.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_match.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_maxnmp.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_maxp.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_minnmp.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_minp.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_mla.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_mlalb.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_mlalt.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_mls.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_mlslb.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_mlslt.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_movlb.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_movlt.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_mul.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_mullb.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_mullt.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_nbsl.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_nmatch.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_pmul.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_pmullb.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_pmullb_128.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_pmullt.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_pmullt_128.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_qabs.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_qadd.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_qcadd.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_qdmlalb.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_qdmlalbt.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_qdmlalt.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_qdmlslb.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_qdmlslbt.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_qdmlslt.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_qdmulh.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_qdmullb.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_qdmullt.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_qneg.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_qrdcmlah.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_qrdmlah.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_qrdmlsh.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_qrdmulh.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_qrshl.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_qrshrnb.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_qrshrnt.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_qrshrunb.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_qrshrunt.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_qshl.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_qshlu.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_qshrnb.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_qshrnt.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_qshrunb.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_qshrunt.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_qsub.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_qsubr.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_qxtnb.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_qxtnt.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_qxtunb.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_qxtunt.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_raddhnb.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_raddhnt.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_rax1.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_recpe.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_revd.c (+6-6) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_rhadd.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_rshl.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_rshr.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_rshrnb.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_rshrnt.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_rsqrte.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_rsra.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_rsubhnb.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_rsubhnt.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_sbclb.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_sbclt.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_shllb.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_shllt.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_shrnb.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_shrnt.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_sli.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_sm4e.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_sm4ekey.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_sqadd.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_sra.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_sri.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_stnt1.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_stnt1b.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_stnt1h.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_stnt1w.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_subhnb.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_subhnt.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_sublb.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_sublbt.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_sublt.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_subltb.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_subwb.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_subwt.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_tbl2-bfloat.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_tbl2.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_tbx-bfloat.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_tbx.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_uqadd.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_whilege.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_whilegt.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_whilerw-bfloat.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_whilerw.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_whilewr-bfloat.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_whilewr.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2-intrinsics/acle_sve2_xar.c (+4-4) 
- (modified) clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_bfadd.c (+6-6) 
- (modified) clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_bfclamp.c (+5-5) 
- (modified) clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_bfmax.c (+6-6) 
- (modified) clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_bfmaxnm.c (+6-6) 
- (modified) clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_bfmin.c (+6-6) 
- (modified) clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_bfminnm.c (+6-6) 
- (modified) clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_bfmla.c (+6-6) 
- (modified) clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_bfmla_lane.c (+5-5) 
- (modified) clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_bfmls.c (+6-6) 
- (modified) clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_bfmls_lane.c (+5-5) 
- (modified) clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_bfmlsl.c (+8-8) 
- (modified) clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_bfmul.c (+6-6) 
- (modified) clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_bfmul_lane.c (+5-5) 
- (modified) clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_bfsub.c (+6-6) 
- (modified) clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_cntp.c (+7-7) 
- (modified) clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_create2_bool.c (+8-8) 
- (modified) clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_create4_bool.c (+8-8) 
- (modified) clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_dot.c (+8-8) 
- (modified) clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_dupq.c (+5-5) 
- (modified) clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_extq.c (+5-5) 
- (modified) clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_fclamp.c (+6-6) 
- (modified) clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_fp_reduce.c (+5-5) 
- (modified) clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_get2_bool.c (+8-8) 
- (modified) clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_get4_bool.c (+8-8) 
- (modified) clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_int_reduce.c (+5-5) 
- (modified) clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_ld1.c (+8-8) 
- (modified) clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_ld1_single.c (+5-5) 
- (modified) clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_ldnt1.c (+6-6) 
- (modified) clang/test/CodeGen/aarch64-sve2p1-intrinsics/acle_sve2p1_loads.c (+5-5) 


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

``````````

</details>


https://github.com/llvm/llvm-project/pull/93695


More information about the cfe-commits mailing list