[clang] [Clang][AArch64] Expose compatible SVE intrinsics with only +sme (PR #95787)

via cfe-commits cfe-commits at lists.llvm.org
Mon Jun 17 06:50:58 PDT 2024


llvmbot wrote:


<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-clang

Author: Sander de Smalen (sdesmalen-arm)

<details>
<summary>Changes</summary>

This allows code with SVE intrinsics to be compiled with +sme,+nosve,                                                                                                                                                                                                                                                                                                   
assuming the encompassing function is in the correct mode (see #<!-- -->93802)                                                                                                                                                                                                                                                                                                  

---

Patch is 2.45 MiB, truncated to 20.00 KiB below, full version: https://github.com/llvm/llvm-project/pull/95787.diff


227 Files Affected:

- (modified) clang/include/clang/Basic/arm_sve.td (+72-46) 
- (modified) clang/include/clang/Basic/arm_sve_sme_incl.td (+1-1) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_abd.c (+74-66) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_abs.c (+29-21) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_acge.c (+13-5) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_acgt.c (+13-5) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_acle.c (+13-5) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_aclt.c (+13-5) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_add.c (+74-66) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_addv.c (+19-11) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_and.c (+57-49) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_andv.c (+16-8) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_asr.c (+50-42) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_asrd.c (+24-16) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_bfdot.c (+12-5) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_bfmlalb.c (+12-5) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_bfmlalt.c (+12-5) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_bic.c (+57-49) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_brka.c (+10-2) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_brkb.c (+10-2) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_brkn.c (+9-1) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_brkpa.c (+9-1) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_brkpb.c (+9-1) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_cadd.c (+18-10) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_clasta-bfloat.c (+10-2) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_clasta.c (+30-22) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_clastb-bfloat.c (+10-2) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_clastb.c (+30-22) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_cls.c (+20-12) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_clz.c (+32-24) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_cmla.c (+24-16) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_cmpeq.c (+36-28) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_cmpge.c (+42-34) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_cmpgt.c (+42-34) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_cmple.c (+42-34) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_cmplt.c (+42-34) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_cmpne.c (+36-28) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_cmpuo.c (+14-6) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_cnot.c (+32-24) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_cnt-bfloat.c (+11-3) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_cnt.c (+41-33) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_cntb.c (+26-18) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_cntd.c (+26-18) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_cnth.c (+26-18) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_cntp.c (+12-4) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_cntw.c (+26-18) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_create2-bfloat.c (+3-3) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_create2.c (+2-2) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_create3-bfloat.c (+2-2) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_create3.c (+2-2) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_create4-bfloat.c (+2-2) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_create4.c (+2-2) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_cvt-bfloat.c (+12-5) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_cvt.c (+104-96) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_cvtnt.c (+11-4) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_div.c (+50-42) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_divr.c (+50-42) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_dot.c (+22-14) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_dup-bfloat.c (+13-5) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_dup.c (+67-59) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_dupq-bfloat.c (+10-2) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_dupq.c (+34-26) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_eor.c (+57-49) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_eorv.c (+16-8) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_ext-bfloat.c (+10-2) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_ext.c (+23-15) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_extb.c (+26-18) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_exth.c (+20-12) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_extw.c (+14-6) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_get2-bfloat.c (+2-2) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_get2.c (+2) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_get3-bfloat.c (+2-2) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_get3.c (+2) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_get4-bfloat.c (+2-2) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_get4.c (+2) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_index.c (+16-8) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_insr-bfloat.c (+9-1) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_insr.c (+19-11) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_lasta-bfloat.c (+9-1) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_lasta.c (+19-11) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_lastb-bfloat.c (+9-1) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_lastb.c (+19-11) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_ld1-bfloat.c (+11-4) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_ld1.c (+33-22) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_ld1rq-bfloat.c (+10-3) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_ld1rq.c (+19-11) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_ld1sb.c (+24-12) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_ld1sh.c (+20-8) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_ld1sw.c (+16-4) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_ld1ub.c (+24-12) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_ld1uh.c (+20-8) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_ld1uw.c (+16-4) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_ld2-bfloat.c (+11-4) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_ld2.c (+32-24) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_ld3-bfloat.c (+12-4) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_ld3.c (+31-24) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_ld4-bfloat.c (+11-4) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_ld4.c (+31-24) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_ldnt1-bfloat.c (+12-4) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_ldnt1.c (+30-22) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_len-bfloat.c (+9-1) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_len.c (+19-11) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_lsl.c (+59-51) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_lsr.c (+38-30) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_mad.c (+74-66) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_max.c (+74-66) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_maxnm.c (+26-18) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_maxnmv.c (+11-3) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_maxv.c (+19-11) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_min.c (+74-66) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_minnm.c (+26-18) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_minnmv.c (+11-3) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_minv.c (+19-11) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_mla.c (+80-72) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_mls.c (+80-72) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_mov.c (+9-1) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_msb.c (+74-66) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_mul.c (+80-72) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_mulh.c (+56-48) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_mulx.c (+26-18) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_nand.c (+9-1) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_neg.c (+29-21) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_nmad.c (+26-18) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_nmla.c (+26-18) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_nmls.c (+26-18) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_nmsb.c (+26-18) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_nor.c (+9-1) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_not.c (+33-25) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_orn.c (+9-1) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_orr.c (+57-49) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_orv.c (+16-8) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_pfalse.c (+9-1) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_pfirst.c (+9-1) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_pnext.c (+12-4) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_prfb.c (+25-13) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_prfd.c (+25-13) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_prfh.c (+25-13) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_prfw.c (+25-13) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_ptest.c (+11-3) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_ptrue.c (+32-24) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_qadd.c (+24-16) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_qdecb.c (+17-9) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_qdecd.c (+21-13) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_qdech.c (+21-13) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_qdecp.c (+30-22) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_qdecw.c (+21-13) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_qincb.c (+17-9) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_qincd.c (+21-13) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_qinch.c (+21-13) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_qincp.c (+30-22) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_qincw.c (+21-13) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_qsub.c (+24-16) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_rbit.c (+32-24) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_recpe.c (+11-3) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_recps.c (+11-3) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_recpx.c (+17-9) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_rev-bfloat.c (+11-3) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_rev.c (+23-15) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_revb.c (+26-18) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_revh.c (+20-12) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_revw.c (+14-6) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_rinta.c (+17-9) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_rinti.c (+17-9) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_rintm.c (+17-9) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_rintn.c (+17-9) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_rintp.c (+17-9) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_rintx.c (+17-9) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_rintz.c (+17-9) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_rsqrte.c (+11-3) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_rsqrts.c (+11-3) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_scale.c (+26-18) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_sel-bfloat.c (+9-1) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_sel.c (+20-12) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_set2-bfloat.c (+2-2) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_set2.c (+2-2) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_set3-bfloat.c (+2-2) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_set3.c (+2-2) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_set4-bfloat.c (+2-2) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_set4.c (+2-2) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_splice-bfloat.c (+9-1) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_splice.c (+19-11) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_sqrt.c (+17-9) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_st1-bfloat.c (+12-4) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_st1.c (+34-22) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_st1b.c (+25-12) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_st1h.c (+21-8) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_st1w.c (+16-4) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_st2-bfloat.c (+12-4) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_st2.c (+30-22) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_st3-bfloat.c (+12-4) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_st3.c (+30-22) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_st4-bfloat.c (+12-4) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_st4.c (+30-22) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_stnt1-bfloat.c (+12-4) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_stnt1.c (+30-22) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_sub.c (+74-66) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_subr.c (+74-66) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_sudot.c (+15-7) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_tbl-bfloat.c (+9-1) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_tbl.c (+19-11) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_trn1-bfloat.c (+11-3) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_trn1.c (+23-15) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_trn2-bfloat.c (+11-3) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_trn2.c (+23-15) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_undef-bfloat.c (+11-3) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_undef.c (+19-11) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_undef2-bfloat.c (+11-3) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_undef2.c (+21-13) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_undef3-bfloat.c (+11-3) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_undef3.c (+21-13) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_undef4-bfloat.c (+11-3) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_undef4.c (+21-13) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_unpklo.c (+15-7) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_usdot.c (+14-7) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_uzp1-bfloat.c (+11-3) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_uzp1.c (+23-15) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_uzp2-bfloat.c (+11-3) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_uzp2.c (+23-15) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_whilele.c (+24-16) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_whilelt.c (+24-16) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_zip1-bfloat.c (+11-3) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_zip1.c (+23-15) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_zip2-bfloat.c (+11-3) 
- (modified) clang/test/CodeGen/aarch64-sve-intrinsics/acle_sve_zip2.c (+23-15) 
- (modified) clang/test/Sema/aarch64-sve2-intrinsics/acle_sve2.cpp (+2830-2830) 
- (modified) clang/test/Sema/aarch64-sve2-intrinsics/acle_sve2_bfloat.cpp (+8-8) 
- (modified) clang/utils/TableGen/SveEmitter.cpp (+5) 


``````````diff
diff --git a/clang/include/clang/Basic/arm_sve.td b/clang/include/clang/Basic/arm_sve.td
index f5972b41e7b50..f7d64d0d35d35 100644
--- a/clang/include/clang/Basic/arm_sve.td
+++ b/clang/include/clang/Basic/arm_sve.td
@@ -41,6 +41,7 @@ def SVLD1UH_VNUM : MInst<"svld1uh_vnum_{d}", "dPXl", "ilUiUl",          [IsLoad,
 def SVLD1SW_VNUM : MInst<"svld1sw_vnum_{d}", "dPUl", "lUl",             [IsLoad, VerifyRuntimeMode],               MemEltTyInt32,   "aarch64_sve_ld1">;
 def SVLD1UW_VNUM : MInst<"svld1uw_vnum_{d}", "dPYl", "lUl",             [IsLoad, IsZExtReturn, VerifyRuntimeMode], MemEltTyInt32,   "aarch64_sve_ld1">;
 
+let TargetGuard = "sve" in {
 // Load one vector (vector base)
 def SVLD1_GATHER_BASES_U   : MInst<"svld1_gather[_{2}base]_{d}",   "dPu", "ilUiUlfd", [IsGatherLoad],               MemEltTyDefault, "aarch64_sve_ld1_gather_scalar_offset">;
 def SVLD1SB_GATHER_BASES_U : MInst<"svld1sb_gather[_{2}base]_{d}", "dPu", "ilUiUl",   [IsGatherLoad],               MemEltTyInt8,    "aarch64_sve_ld1_gather_scalar_offset">;
@@ -136,12 +137,14 @@ def SVLDFF1SH_VNUM : MInst<"svldff1sh_vnum_{d}", "dPTl", "ilUiUl",          [IsL
 def SVLDFF1UH_VNUM : MInst<"svldff1uh_vnum_{d}", "dPXl", "ilUiUl",          [IsLoad, IsZExtReturn], MemEltTyInt16,   "aarch64_sve_ldff1">;
 def SVLDFF1SW_VNUM : MInst<"svldff1sw_vnum_{d}", "dPUl", "lUl",             [IsLoad],               MemEltTyInt32,   "aarch64_sve_ldff1">;
 def SVLDFF1UW_VNUM : MInst<"svldff1uw_vnum_{d}", "dPYl", "lUl",             [IsLoad, IsZExtReturn], MemEltTyInt32,   "aarch64_sve_ldff1">;
+} //  let TargetGuard = "sve"
 
 let TargetGuard = "sve,bf16" in {
   def SVLDFF1_BF      : MInst<"svldff1[_{2}]",      "dPc",  "b", [IsLoad], MemEltTyDefault, "aarch64_sve_ldff1">;
   def SVLDFF1_VNUM_BF : MInst<"svldff1_vnum[_{2}]", "dPcl", "b", [IsLoad], MemEltTyDefault, "aarch64_sve_ldff1">;
 }
 
+let TargetGuard = "sve" in {
 // First-faulting load one vector (vector base)
 def SVLDFF1_GATHER_BASES_U   : MInst<"svldff1_gather[_{2}base]_{d}",   "dPu", "ilUiUlfd", [IsGatherLoad],               MemEltTyDefault, "aarch64_sve_ldff1_gather_scalar_offset">;
 def SVLDFF1SB_GATHER_BASES_U : MInst<"svldff1sb_gather[_{2}base]_{d}", "dPu", "ilUiUl",   [IsGatherLoad],               MemEltTyInt8,    "aarch64_sve_ldff1_gather_scalar_offset">;
@@ -236,6 +239,7 @@ def SVLDNF1SH_VNUM : MInst<"svldnf1sh_vnum_{d}", "dPTl", "ilUiUl",          [IsL
 def SVLDNF1UH_VNUM : MInst<"svldnf1uh_vnum_{d}", "dPXl", "ilUiUl",          [IsLoad, IsZExtReturn], MemEltTyInt16,   "aarch64_sve_ldnf1">;
 def SVLDNF1SW_VNUM : MInst<"svldnf1sw_vnum_{d}", "dPUl", "lUl",             [IsLoad],               MemEltTyInt32,   "aarch64_sve_ldnf1">;
 def SVLDNF1UW_VNUM : MInst<"svldnf1uw_vnum_{d}", "dPYl", "lUl",             [IsLoad, IsZExtReturn], MemEltTyInt32,   "aarch64_sve_ldnf1">;
+} //  let TargetGuard = "sve"
 
 let TargetGuard = "sve,bf16" in {
   def SVLDNF1_BF      : MInst<"svldnf1[_{2}]",      "dPc",  "b", [IsLoad], MemEltTyDefault, "aarch64_sve_ldnf1">;
@@ -286,10 +290,13 @@ let TargetGuard = "sve,f64mm,bf16" in {
 }
 
 let TargetGuard = "sve,bf16" in {
+  def SVBFMMLA       : SInst<"svbfmmla[_{0}]",       "MMdd",  "b", MergeNone, "aarch64_sve_bfmmla",       [IsOverloadNone]>;
+}
+
+let TargetGuard = "(sve,bf16)|sme" in {
   def SVBFDOT        : SInst<"svbfdot[_{0}]",        "MMdd",  "b", MergeNone, "aarch64_sve_bfdot",        [IsOverloadNone, VerifyRuntimeMode]>;
   def SVBFMLALB      : SInst<"svbfmlalb[_{0}]",      "MMdd",  "b", MergeNone, "aarch64_sve_bfmlalb",      [IsOverloadNone, VerifyRuntimeMode]>;
   def SVBFMLALT      : SInst<"svbfmlalt[_{0}]",      "MMdd",  "b", MergeNone, "aarch64_sve_bfmlalt",      [IsOverloadNone, VerifyRuntimeMode]>;
-  def SVBFMMLA       : SInst<"svbfmmla[_{0}]",       "MMdd",  "b", MergeNone, "aarch64_sve_bfmmla",       [IsOverloadNone, VerifyRuntimeMode]>;
   def SVBFDOT_N      : SInst<"svbfdot[_n_{0}]",      "MMda",  "b", MergeNone, "aarch64_sve_bfdot",        [IsOverloadNone, VerifyRuntimeMode]>;
   def SVBFMLAL_N     : SInst<"svbfmlalb[_n_{0}]",    "MMda",  "b", MergeNone, "aarch64_sve_bfmlalb",      [IsOverloadNone, VerifyRuntimeMode]>;
   def SVBFMLALT_N    : SInst<"svbfmlalt[_n_{0}]",    "MMda",  "b", MergeNone, "aarch64_sve_bfmlalt",      [IsOverloadNone, VerifyRuntimeMode]>;
@@ -356,6 +363,7 @@ let TargetGuard = "(sve,bf16)|sme" in {
   def SVST1_VNUM_BF : MInst<"svst1_vnum[_{d}]", "vPpld", "b", [IsStore, VerifyRuntimeMode], MemEltTyDefault, "aarch64_sve_st1">;
 }
 
+let TargetGuard = "sve" in {
 // Store one vector (vector base)
 def SVST1_SCATTER_BASES_U     : MInst<"svst1_scatter[_{2}base_{d}]",  "vPud",  "ilUiUlfd", [IsScatterStore], MemEltTyDefault, "aarch64_sve_st1_scatter_scalar_offset">;
 def SVST1B_SCATTER_BASES_U    : MInst<"svst1b_scatter[_{2}base_{d}]", "vPud",  "ilUiUl",   [IsScatterStore], MemEltTyInt8,    "aarch64_sve_st1_scatter_scalar_offset">;
@@ -424,10 +432,11 @@ def SVST1H_SCATTER_32B_INDICES_UU : MInst<"svst1h_scatter_[{3}]index[_{d}]", "vP
 def SVST1_SCATTER_INDEX_S     : MInst<"svst1_scatter[_{2}base]_index[_{d}]",  "vPuld", "ilUiUlfd", [IsScatterStore], MemEltTyDefault, "aarch64_sve_st1_scatter_scalar_offset">;
 def SVST1H_SCATTER_INDEX_S    : MInst<"svst1h_scatter[_{2}base]_index[_{d}]", "vPuld", "ilUiUl",   [IsScatterStore], MemEltTyInt16,   "aarch64_sve_st1_scatter_scalar_offset">;
 def SVST1W_SCATTER_INDEX_S    : MInst<"svst1w_scatter[_{2}base]_index[_{d}]", "vPuld", "lUl",      [IsScatterStore], MemEltTyInt32,   "aarch64_sve_st1_scatter_scalar_offset">;
+} // let TargetGuard = "sve"
 
 multiclass StructStore<string name, string proto, string i> {
   def : SInst<name, proto, "csilUcUsUiUlhfd", MergeNone, i, [IsStructStore, VerifyRuntimeMode]>;
-  let TargetGuard = "sve,bf16" in {
+  let TargetGuard = "(sve,bf16)|sme" in {
     def: SInst<name, proto, "b", MergeNone, i, [IsStructStore, VerifyRuntimeMode]>;
   }
 }
@@ -499,6 +508,7 @@ def SVPRFH_VNUM : MInst<"svprfh_vnum", "vPQlJ", "s", [IsPrefetch, VerifyRuntimeM
 def SVPRFW_VNUM : MInst<"svprfw_vnum", "vPQlJ", "i", [IsPrefetch, VerifyRuntimeMode], MemEltTyInt32, "aarch64_sve_prf">;
 def SVPRFD_VNUM : MInst<"svprfd_vnum", "vPQlJ", "l", [IsPrefetch, VerifyRuntimeMode], MemEltTyInt64, "aarch64_sve_prf">;
 
+let TargetGuard = "sve" in {
 // Prefetch (Vector bases)
 def SVPRFB_GATHER_BASES : MInst<"svprfb_gather[_{2}base]", "vPdJ", "UiUl", [IsGatherPrefetch], MemEltTyInt8,  "aarch64_sve_prfb_gather_scalar_offset">;
 def SVPRFH_GATHER_BASES : MInst<"svprfh_gather[_{2}base]", "vPdJ", "UiUl", [IsGatherPrefetch], MemEltTyInt16, "aarch64_sve_prfh_gather_scalar_offset">;
@@ -531,14 +541,17 @@ def SVPRFB_GATHER_BASES_OFFSET : MInst<"svprfb_gather[_{2}base]_offset", "vPdlJ"
 def SVPRFH_GATHER_BASES_OFFSET : MInst<"svprfh_gather[_{2}base]_index",  "vPdlJ", "UiUl", [IsGatherPrefetch], MemEltTyInt16, "aarch64_sve_prfh_gather_scalar_offset">;
 def SVPRFW_GATHER_BASES_OFFSET : MInst<"svprfw_gather[_{2}base]_index",  "vPdlJ", "UiUl", [IsGatherPrefetch], MemEltTyInt32, "aarch64_sve_prfw_gather_scalar_offset">;
 def SVPRFD_GATHER_BASES_OFFSET : MInst<"svprfd_gather[_{2}base]_index",  "vPdlJ", "UiUl", [IsGatherPrefetch], MemEltTyInt64, "aarch64_sve_prfd_gather_scalar_offset">;
+} // let TargetGuard = "sve"
 
 ////////////////////////////////////////////////////////////////////////////////
 // Address calculations
 
+let TargetGuard = "sve" in {
 def SVADRB : SInst<"svadrb[_{0}base]_[{2}]offset", "uud", "ilUiUl", MergeNone, "aarch64_sve_adrb">;
 def SVADRH : SInst<"svadrh[_{0}base]_[{2}]index",  "uud", "ilUiUl", MergeNone, "aarch64_sve_adrh">;
 def SVADRW : SInst<"svadrw[_{0}base]_[{2}]index",  "uud", "ilUiUl", MergeNone, "aarch64_sve_adrw">;
 def SVADRD : SInst<"svadrd[_{0}base]_[{2}]index",  "uud", "ilUiUl", MergeNone, "aarch64_sve_adrd">;
+} // let TargetGuard = "sve"
 
 ////////////////////////////////////////////////////////////////////////////////
 // Scalar to vector
@@ -826,10 +839,12 @@ defm SVRINTX : SInstZPZ<"svrintx", "hfd", "aarch64_sve_frintx">;
 defm SVRINTZ : SInstZPZ<"svrintz", "hfd", "aarch64_sve_frintz">;
 defm SVSQRT  : SInstZPZ<"svsqrt",  "hfd", "aarch64_sve_fsqrt">;
 
+let TargetGuard = "sve" in {
 def SVEXPA  : SInst<"svexpa[_{d}]",  "du",   "hfd", MergeNone, "aarch64_sve_fexpa_x">;
 def SVTMAD  : SInst<"svtmad[_{d}]",  "dddi", "hfd", MergeNone, "aarch64_sve_ftmad_x", [], [ImmCheck<2, ImmCheck0_7>]>;
 def SVTSMUL : SInst<"svtsmul[_{d}]", "ddu",  "hfd", MergeNone, "aarch64_sve_ftsmul_x">;
 def SVTSSEL : SInst<"svtssel[_{d}]", "ddu",  "hfd", MergeNone, "aarch64_sve_ftssel_x">;
+}
 
 def SVSCALE_M   : SInst<"svscale[_{d}]",   "dPdx", "hfd", MergeOp1,  "aarch64_sve_fscale", [VerifyRuntimeMode]>;
 def SVSCALE_X   : SInst<"svscale[_{d}]",   "dPdx", "hfd", MergeAny,  "aarch64_sve_fscale", [VerifyRuntimeMode]>;
@@ -992,7 +1007,7 @@ defm SVFCVT_F32_F64   : SInstCvtMXZ<"svcvt_f32[_f64]", "MMPd", "MPd", "d", "aarc
 defm SVFCVT_F64_F16   : SInstCvtMXZ<"svcvt_f64[_f16]", "ddPO", "dPO", "d", "aarch64_sve_fcvt_f64f16">;
 defm SVFCVT_F64_F32   : SInstCvtMXZ<"svcvt_f64[_f32]", "ddPM", "dPM", "d", "aarch64_sve_fcvt_f64f32">;
 
-let TargetGuard = "sve2" in {
+let TargetGuard = "sve2|sme" in {
 defm SVCVTLT_F32    : SInstCvtMX<"svcvtlt_f32[_f16]",  "ddPh", "dPh", "f", "aarch64_sve_fcvtlt_f32f16">;
 defm SVCVTLT_F64    : SInstCvtMX<"svcvtlt_f64[_f32]",  "ddPh", "dPh", "d", "aarch64_sve_fcvtlt_f64f32">;
 
@@ -1012,7 +1027,7 @@ def SVCVTXNT_F32    : SInst<"svcvtxnt_f32[_f64]", "MMPd", "d", MergeOp1, "aarch6
 
 multiclass SVEPerm<string name, string proto, string i> {
   def : SInst<name, proto, "csilUcUsUiUlhfd", MergeNone, i, [VerifyRuntimeMode]>;
-  let TargetGuard = "sve,bf16" in {
+  let TargetGuard = "(sve,bf16)|sme" in {
     def: SInst<name, proto, "b", MergeNone, i, [VerifyRuntimeMode]>;
   }
 }
@@ -1022,19 +1037,22 @@ defm SVCLASTA_N  : SVEPerm<"svclasta[_n_{d}]", "sPsd", "aarch64_sve_clasta_n">;
 defm SVCLASTB    : SVEPerm<"svclastb[_{d}]",   "dPdd", "aarch64_sve_clastb">;
 defm SVCLASTB_N  : SVEPerm<"svclastb[_n_{d}]", "sPsd", "aarch64_sve_clastb_n">;
 
+let TargetGuard = "sve" in {
 def SVCOMPACT    : SInst<"svcompact[_{d}]",   "dPd",  "ilUiUlfd",        MergeNone, "aarch64_sve_compact">;
+}
+
 // Note: svdup_lane is implemented using the intrinsic for TBL to represent a
 // splat of any possible lane. It is upto LLVM to pick a more efficient
 // instruction such as DUP (indexed) if the lane index fits the range of the
 // instruction's immediate.
 def SVDUP_LANE   : SInst<"svdup_lane[_{d}]",  "ddL",  "csilUcUsUiUlhfd", MergeNone, "aarch64_sve_tbl", [VerifyRuntimeMode]>;
-let TargetGuard = "sve,bf16" in {
+let TargetGuard = "(sve,bf16)|sme" in {
 def SVDUP_LANE_BF16 :
                    SInst<"svdup_lane[_{d}]",  "ddL",  "b",               MergeNone, "aarch64_sve_tbl", [VerifyRuntimeMode]>;
 }
 
 def SVDUPQ_LANE  : SInst<"svdupq_lane[_{d}]", "ddn",  "csilUcUsUiUlhfd", MergeNone, "aarch64_sve_dupq_lane", [VerifyRuntimeMode]>;
-let TargetGuard = "sve,bf16" in {
+let TargetGuard = "(sve,bf16)|sme" in {
   def SVDUPQ_LANE_BF16  : SInst<"svdupq_lane[_{d}]", "ddn",  "b", MergeNone, "aarch64_sve_dupq_lane", [VerifyRuntimeMode]>;
 }
 def SVEXT        : SInst<"svext[_{d}]",       "dddi", "csilUcUsUiUlhfd", MergeNone, "aarch64_sve_ext", [VerifyRuntimeMode], [ImmCheck<2, ImmCheckExtract, 1>]>;
@@ -1045,7 +1063,7 @@ def SVSEL        : SInst<"svsel[_{d}]",       "dPdd", "csilUcUsUiUlhfd", MergeNo
 def SVSPLICE     : SInst<"svsplice[_{d}]",    "dPdd", "csilUcUsUiUlhfd", MergeNone, "aarch64_sve_splice", [VerifyRuntimeMode]>;
 def SVTBL        : SInst<"svtbl[_{d}]",       "ddu",  "csilUcUsUiUlhfd", MergeNone, "aarch64_sve_tbl", [VerifyRuntimeMode]>;
 
-let TargetGuard = "sve,bf16" in {
+let TargetGuard = "(sve,bf16)|sme" in {
   def SVTBL_BF16 : SInst<"svtbl[_{d}]",       "ddu",  "b",               MergeNone, "aarch64_sve_tbl", [VerifyRuntimeMode]>;
 }
 
@@ -1158,10 +1176,12 @@ def SVPTEST_LAST  : SInst<"svptest_last",  "sPP", "Pc", MergeNone, "aarch64_sve_
 ////////////////////////////////////////////////////////////////////////////////
 // FFR manipulation
 
+let TargetGuard = "sve" in {
 def SVRDFFR   : SInst<"svrdffr",   "Pv",  "Pc", MergeNone, "", [IsOverloadNone]>;
 def SVRDFFR_Z : SInst<"svrdffr_z", "PP", "Pc", MergeNone, "", [IsOverloadNone]>;
 def SVSETFFR  : SInst<"svsetffr",  "vv",  "",   MergeNone, "", [IsOverloadNone]>;
 def SVWRFFR   : SInst<"svwrffr",   "vP", "Pc", MergeNone, "", [IsOverloadNone]>;
+}
 
 ////////////////////////////////////////////////////////////////////////////////
 // Counting elements
@@ -1179,7 +1199,7 @@ def SVCNTD : SInst<"svcntd", "nv", "", MergeNone, "aarch64_sve_cntd", [IsAppendS
 def SVCNTP : SInst<"svcntp_{d}",  "nPP", "PcPsPiPl",        MergeNone, "aarch64_sve_cntp", [VerifyRuntimeMode]>;
 def SVLEN  : SInst<"svlen[_{d}]", "nd",  "csilUcUsUiUlhfd", MergeNone, "", [VerifyRuntimeMode]>;
 
-let TargetGuard = "sve,bf16" in {
+let TargetGuard = "(sve,bf16)|sme" in {
 def SVLEN_BF16 : SInst<"svlen[_{d}]", "nd", "b", MergeNone, "", [VerifyRuntimeMode]>;
 }
 
@@ -1249,7 +1269,9 @@ let TargetGuard = "sve,i8mm" in {
 def SVMLLA_S32   : SInst<"svmmla[_s32]",   "ddqq","i",  MergeNone, "aarch64_sve_smmla">;
 def SVMLLA_U32   : SInst<"svmmla[_u32]",   "ddqq","Ui", MergeNone, "aarch64_sve_ummla">;
 def SVUSMLLA_S32 : SInst<"svusmmla[_s32]", "ddbq","i",  MergeNone, "aarch64_sve_usmmla">;
+}
 
+let TargetGuard = "(sve|sme),i8mm" in {
 def SVUSDOT_S    : SInst<"svusdot[_s32]",    "ddbq", "i",       MergeNone, "aarch64_sve_usdot", [VerifyRuntimeMode]>;
 def SVUSDOT_N_S  : SInst<"svusdot[_n_s32]",  "ddbr", "i",       MergeNone, "aarch64_sve_usdot", [VerifyRuntimeMode]>;
 def SVSUDOT_S    : SInst<"svsudot[_s32]",    "ddqb", "i",       MergeNone, "aarch64_sve_usdot", [ReverseUSDOT, VerifyRuntimeMode]>;
@@ -1265,21 +1287,21 @@ def SVMLLA_F32 : SInst<"svmmla[_f32]", "dddd","f", MergeNone, "aarch64_sve_fmmla
 
 let TargetGuard = "sve,f64mm" in {
 def SVMLLA_F64 : SInst<"svmmla[_f64]", "dddd","d", MergeNone, "aarch64_sve_fmmla">;
-def SVTRN1Q      : SInst<"svtrn1q[_{d}]",     "ddd",  "csilUcUsUiUlhfd", MergeNone, "aarch64_sve_trn1q", [VerifyRuntimeMode]>;
-def SVTRN2Q      : SInst<"svtrn2q[_{d}]",     "ddd",  "csilUcUsUiUlhfd", MergeNone, "aarch64_sve_trn2q", [VerifyRuntimeMode]>;
-def SVUZP1Q      : SInst<"svuzp1q[_{d}]",     "ddd",  "csilUcUsUiUlhfd", MergeNone, "aarch64_sve_uzp1q", [VerifyRuntimeMode]>;
-def SVUZP2Q      : SInst<"svuzp2q[_{d}]",     "ddd",  "csilUcUsUiUlhfd", MergeNone, "aarch64_sve_uzp2q", [VerifyRuntimeMode]>;
-def SVZIP1Q      : SInst<"svzip1q[_{d}]",     "ddd",  "csilUcUsUiUlhfd", MergeNone, "aarch64_sve_zip1q", [VerifyRuntimeMode]>;
-def SVZIP2Q      : SInst<"svzip2q[_{d}]",     "ddd",  "csilUcUsUiUlhfd", MergeNone, "aarch64_sve_zip2q", [VerifyRuntimeMode]>;
+def SVTRN1Q      : SInst<"svtrn1q[_{d}]",     "ddd",  "csilUcUsUiUlhfd", MergeNone, "aarch64_sve_trn1q">;
+def SVTRN2Q      : SInst<"svtrn2q[_{d}]",     "ddd",  "csilUcUsUiUlhfd", MergeNone, "aarch64_sve_trn2q">;
+def SVUZP1Q      : SInst<"svuzp1q[_{d}]",     "ddd",  "csilUcUsUiUlhfd", MergeNone, "aarch64_sve_uzp1q">;
+def SVUZP2Q      : SInst<"svuzp2q[_{d}]",     "ddd",  "csilUcUsUiUlhfd", MergeNone, "aarch64_sve_uzp2q">;
+def SVZIP1Q      : SInst<"svzip1q[_{d}]",     "ddd",  "csilUcUsUiUlhfd", MergeNone, "aarch64_sve_zip1q">;
+def SVZIP2Q      : SInst<"svzip2q[_{d}]",     "ddd",  "csilUcUsUiUlhfd", MergeNone, "aarch64_sve_zip2q">;
 }
 
 let TargetGuard = "sve,bf16,f64mm" in {
 def SVTRN1Q_BF16      : SInst<"svtrn1q[_{d}]",     "ddd",  "b", MergeNone, "aarch64_sve_trn1q">;
 def SVTRN2Q_BF16      : SInst<"svtrn2q[_{d}]",     "ddd",  "b", MergeNone, "aarch64_sve_trn2q">;
-def SVUZP1Q_BF16      : SInst<"svuzp1q[_{d}]",     "ddd",  "b", MergeNone, "aarch64_sve_uzp1q", [VerifyRuntimeMode]>;
-def SVUZP2Q_BF16      : SInst<"svuzp2q[_{d}]",     "ddd",  "b", MergeNone, "aarch64_sve_uzp2q", [VerifyRuntimeMode]>;
-def SVZIP1Q_BF16      : SInst<"svzip1q[_{d}]",     "ddd",  "b", MergeNone, "aarch64_sve_zip1q", [VerifyRuntimeMode]>;
-def SVZIP2Q_BF16      : SInst<"svzip2q[_{d}]",     "ddd",  "b", MergeNone, "aarch64_sve_zip2q", [VerifyRuntimeMode]>;
+def SVUZP1Q_BF16      : SInst<"svuzp1q[_{d}]",     "ddd",  "b", MergeNone, "aarch64_sve_uzp1q">;
+def SVUZP2Q_BF16      : SInst<"svuzp2q[_{d}]",     "ddd",  "b", MergeNone, "aarch64_sve_uzp2q">;
+def SVZIP1Q_BF16      : SInst<"svzip1q[_{d}]",     "ddd",  "b", MergeNone, "aarch64_sve_zip1q">;
+def SVZIP2Q_BF16      : SInst<"svzip2q[_{d}]",     "ddd",  "b", MergeNone, "aarch64_sve_zip2q">;
 }
 
 ////////////////////////////////////////////////////////////////////////////////
@@ -1347,7 +1369,7 @@ let TargetGuard = "sve2p1|sme2" in {
 }
 ////////////////////////////////////////////////////////////////////////////////
 // SVE2 WhileGE/GT
-let TargetGuard = "sve2" in {
+let TargetGuard = "sve2|sme" in {
 def SVWHILEGE_S32 : SInst<"svwhilege_{d}[_{1}]", "Pkk", "PcPsPiPl",     MergeNone, "aarch64_sve_whilege", [IsOverloadWhileOrMultiVecCvt, VerifyRuntimeMode]>;
 def SVWHILEGE_S64 : SInst<"svwhilege_{d}[_{1}]", "Pll", "PcPsPiPl",     MergeNone, "aarch64_sve_whilege", [IsOverloadWhileOrMultiVecCvt, VerifyRuntimeMode]>;
 def SVWHILEGT_S32 : SInst<"svwhilegt_{d}[_{1}]", "Pkk", "PcPsPiPl",     MergeNone, "aarch64_sve_whilegt", [IsOverloadWhileOrMultiVecCvt, VerifyRuntimeMode]>;
@@ -1373,7 +1395,7 @@ let TargetGuard = "sve2p1|sme2"  in {
 ////////////////////////////////////////////////////////////////////////////////
 // SVE2 - Uniform DSP operations
 
-let TargetGuard = "sve2" in {
+let TargetGuard = "sve2|sme" in {
 defm SVQADD_S  : SInstZPZZ<"svqadd",  "csli",     "aarch64_sve_sqadd",  "aarch64_sve_sqadd">;
 defm SVQADD_U  : SInstZPZZ<"svqadd",  "UcUsUiUl", "aarch64_sve_uqadd",  "aarch64_sve_uqadd">;
 defm SVHADD_S  : SInstZPZZ<"svhadd",  "csli",     "aarch64_sve_shadd",  "aarch64_sve_shadd">;
@@ -1408,7 +1430,7 @@ multiclass SInstZPZxZ<string name, string types, string pat_v, string pat_n, str
   def _N_Z : SInst<name # "[_n_{d}]", pat_n, types, MergeZero, intrinsic, flags>;
 }
 
-let TargetGuard = "sve2" in {
+let TargetGuard = "sve2|sme" in {
 defm SVQRSHL_S : SInstZPZxZ<"svqrshl", "csil",     "dPdx", "dPdK", "aarch64_sve_sqrshl", [VerifyRuntimeMode]>;
 defm SVQRSHL_U : SInstZPZxZ<"svqrshl", "UcUsUiUl", "dPdx", "dPdK", "aarch64_sve_uqrshl", [VerifyRuntimeMode]>;
 defm SVQSHL_S  : SInstZPZxZ<"svqshl",  "csil",     "dPdx", "dPdK", "aarch64_sve_sqshl", [VerifyRuntimeMode]>;
@@ -1462,7 +1484,7 @@ multiclass SInstPairwise<string name, string types, string intrinsic, list<FlagT
   def _X   : SInst<name # "[_{d}]", "dPdd", types, MergeAny, intrinsic, flags>;
 }
 
-let TargetGuard = "sve2" in {
+let TargetGuard = "sve2|sme" in {
 defm SVADDP   : SInstPairwise<"svaddp",   "csliUcUsUiUl", "aarch64_sve_addp", [VerifyRuntimeMode]>;
 defm SVADDP_F : SInstPairwise<"svaddp",   "hfd",          "aarch64_sve_faddp", [VerifyRuntimeMode]>;
 defm SVMAXNMP : SInstPairwise<"svmaxnmp", "hfd",          "aarch64_sve_fmaxnmp", [VerifyRuntimeMode]>;
@@ -1478,7 +1500,7 @@ defm SVMINP_U : SInstPairwise<"svminp",   "UcUsUiUl",     "aarch64_sve_uminp", [
 ////////////////////////////////////////////////////////////////////////////////
 // SVE2 - Widening pairwise arithmetic
 
-let TargetGuard = "sve2" in {
+let TargetGuard = "sve2|sme" in {
 def SVADALP_S_M : SInst<"svadalp[_{d}]", "dPdh", "sil",    MergeOp1,  "aarch64_sve_sadalp", [VerifyRuntimeMode]>;
 def SVADALP_S_X : SInst<"svadalp[_{d}]", "dPdh", "sil",    MergeAny,  "aarch64_sve_sadalp", [VerifyRuntimeMode]>;
 def SVADALP_S_Z : SInst<"svadalp[_{d}]", "dPdh", "sil",    MergeZero, "aarch64_sve_sadalp", [VerifyRuntimeMode]>;
@@ -1492,7 +1514,7 @@ def SVADALP_U_Z : SInst<"svadalp[_{d}]", "dPdh", "UsUiUl", MergeZero, "aarch64_s
 // SVE2 - Bitwise ternary logical instructions
 //
 
-let TargetGuard = "sve2" in {
+let TargetGuard = "sve2|sme" in {
 def SVBCAX  : SInst<"svbcax[_{d}]",  "dddd", "csilUcUsUiUl", MergeNone, "aarch64_sve_bcax", [VerifyRuntimeMode]>;
 def SVBSL   : SInst<"svbsl[_{d}]",   "dddd", "csilUcUsUiUl", MergeNone, "aarch64_sve_bsl", [VerifyRuntimeMode]>;
 def SVBSL1N : SInst<"svbsl1n[_{d}]", "dddd", "csilUcUsUiUl", MergeNone, "aarch64_sve_bsl1n", [VerifyRuntimeMode]>;
@@ -1512,7 +1534,7 @@ def SVXAR_N   : SInst<"svxar[_n_{d}]",   "dddi", "csilUcUsUiUl", MergeNone, "aar
 ////////////////////////////////////////////////////////////////////////////////
 // SVE2 - Large integer arithmetic
 
-let TargetGuard = "sve2" in {
+let Tar...
[truncated]

``````````

</details>


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


More information about the cfe-commits mailing list