@@ -264,22 +264,22 @@ let SVETargetGuard = "sve,bf16", SMETargetGuard = "sme,bf16" in {
264264 def SVLD1RQ_BF : SInst<"svld1rq[_{2}]", "dPc", "b", MergeNone, "aarch64_sve_ld1rq", [VerifyRuntimeMode]>;
265265}
266266
267- multiclass StructLoad<string name, string proto, string i> {
268- def : SInst<name, proto, "csilUcUsUiUlhfdm", MergeNone, i, [IsStructLoad, VerifyRuntimeMode] >;
267+ multiclass StructLoad<string name, string proto, string i, list<FlagType> f = [] > {
268+ def : SInst<name, proto, "csilUcUsUiUlhfdm", MergeNone, i, !listconcat(f, [IsStructLoad]) >;
269269 let SVETargetGuard = "sve,bf16", SMETargetGuard = "sme,bf16" in {
270- def: SInst<name, proto, "b", MergeNone, i, [IsStructLoad, VerifyRuntimeMode] >;
270+ def: SInst<name, proto, "b", MergeNone, i, !listconcat(f, [IsStructLoad]) >;
271271 }
272272}
273273
274274// Load N-element structure into N vectors (scalar base)
275- defm SVLD2 : StructLoad<"svld2[_{2}]", "2Pc", "aarch64_sve_ld2_sret">;
276- defm SVLD3 : StructLoad<"svld3[_{2}]", "3Pc", "aarch64_sve_ld3_sret">;
277- defm SVLD4 : StructLoad<"svld4[_{2}]", "4Pc", "aarch64_sve_ld4_sret">;
275+ defm SVLD2 : StructLoad<"svld2[_{2}]", "2Pc", "aarch64_sve_ld2_sret", [VerifyRuntimeMode] >;
276+ defm SVLD3 : StructLoad<"svld3[_{2}]", "3Pc", "aarch64_sve_ld3_sret", [VerifyRuntimeMode] >;
277+ defm SVLD4 : StructLoad<"svld4[_{2}]", "4Pc", "aarch64_sve_ld4_sret", [VerifyRuntimeMode] >;
278278
279279// Load N-element structure into N vectors (scalar base, VL displacement)
280- defm SVLD2_VNUM : StructLoad<"svld2_vnum[_{2}]", "2Pcl", "aarch64_sve_ld2_sret">;
281- defm SVLD3_VNUM : StructLoad<"svld3_vnum[_{2}]", "3Pcl", "aarch64_sve_ld3_sret">;
282- defm SVLD4_VNUM : StructLoad<"svld4_vnum[_{2}]", "4Pcl", "aarch64_sve_ld4_sret">;
280+ defm SVLD2_VNUM : StructLoad<"svld2_vnum[_{2}]", "2Pcl", "aarch64_sve_ld2_sret", [VerifyRuntimeMode] >;
281+ defm SVLD3_VNUM : StructLoad<"svld3_vnum[_{2}]", "3Pcl", "aarch64_sve_ld3_sret", [VerifyRuntimeMode] >;
282+ defm SVLD4_VNUM : StructLoad<"svld4_vnum[_{2}]", "4Pcl", "aarch64_sve_ld4_sret", [VerifyRuntimeMode] >;
283283
284284// Load one octoword and replicate (scalar base)
285285let SVETargetGuard = "sve,f64mm", SMETargetGuard = InvalidMode in {
@@ -434,21 +434,21 @@ def SVST1H_SCATTER_INDEX_S : MInst<"svst1h_scatter[_{2}base]_index[_{d}]", "v
434434def SVST1W_SCATTER_INDEX_S : MInst<"svst1w_scatter[_{2}base]_index[_{d}]", "vPuld", "lUl", [IsScatterStore], MemEltTyInt32, "aarch64_sve_st1_scatter_scalar_offset">;
435435} // let SVETargetGuard = "sve"
436436
437- multiclass StructStore<string name, string proto, string i> {
438- def : SInst<name, proto, "csilUcUsUiUlhfdm", MergeNone, i, [IsStructStore, VerifyRuntimeMode] >;
437+ multiclass StructStore<string name, string proto, string i, list<FlagType> f = [] > {
438+ def : SInst<name, proto, "csilUcUsUiUlhfdm", MergeNone, i, !listconcat(f, [IsStructStore]) >;
439439 let SVETargetGuard = "sve,bf16", SMETargetGuard = "sme,bf16" in {
440- def: SInst<name, proto, "b", MergeNone, i, [IsStructStore, VerifyRuntimeMode] >;
440+ def: SInst<name, proto, "b", MergeNone, i, !listconcat(f, [IsStructStore]) >;
441441 }
442442}
443443// Store N vectors into N-element structure (scalar base)
444- defm SVST2 : StructStore<"svst2[_{d}]", "vPp2", "aarch64_sve_st2">;
445- defm SVST3 : StructStore<"svst3[_{d}]", "vPp3", "aarch64_sve_st3">;
446- defm SVST4 : StructStore<"svst4[_{d}]", "vPp4", "aarch64_sve_st4">;
444+ defm SVST2 : StructStore<"svst2[_{d}]", "vPp2", "aarch64_sve_st2", [VerifyRuntimeMode] >;
445+ defm SVST3 : StructStore<"svst3[_{d}]", "vPp3", "aarch64_sve_st3", [VerifyRuntimeMode] >;
446+ defm SVST4 : StructStore<"svst4[_{d}]", "vPp4", "aarch64_sve_st4", [VerifyRuntimeMode] >;
447447
448448// Store N vectors into N-element structure (scalar base, VL displacement)
449- defm SVST2_VNUM : StructStore<"svst2_vnum[_{d}]", "vPpl2", "aarch64_sve_st2">;
450- defm SVST3_VNUM : StructStore<"svst3_vnum[_{d}]", "vPpl3", "aarch64_sve_st3">;
451- defm SVST4_VNUM : StructStore<"svst4_vnum[_{d}]", "vPpl4", "aarch64_sve_st4">;
449+ defm SVST2_VNUM : StructStore<"svst2_vnum[_{d}]", "vPpl2", "aarch64_sve_st2", [VerifyRuntimeMode] >;
450+ defm SVST3_VNUM : StructStore<"svst3_vnum[_{d}]", "vPpl3", "aarch64_sve_st3", [VerifyRuntimeMode] >;
451+ defm SVST4_VNUM : StructStore<"svst4_vnum[_{d}]", "vPpl4", "aarch64_sve_st4", [VerifyRuntimeMode] >;
452452
453453// Store one vector, with no truncation, non-temporal (scalar base)
454454def SVSTNT1 : MInst<"svstnt1[_{d}]", "vPpd", "csilUcUsUiUlhfdm", [IsStore, VerifyRuntimeMode], MemEltTyDefault, "aarch64_sve_stnt1">;
0 commit comments