@@ -264,22 +264,22 @@ let SVETargetGuard = "sve,bf16", SMETargetGuard = "sme,bf16" in {
264
264
def SVLD1RQ_BF : SInst<"svld1rq[_{2}]", "dPc", "b", MergeNone, "aarch64_sve_ld1rq", [VerifyRuntimeMode]>;
265
265
}
266
266
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]) >;
269
269
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]) >;
271
271
}
272
272
}
273
273
274
274
// 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] >;
278
278
279
279
// 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] >;
283
283
284
284
// Load one octoword and replicate (scalar base)
285
285
let SVETargetGuard = "sve,f64mm", SMETargetGuard = InvalidMode in {
@@ -434,21 +434,21 @@ def SVST1H_SCATTER_INDEX_S : MInst<"svst1h_scatter[_{2}base]_index[_{d}]", "v
434
434
def SVST1W_SCATTER_INDEX_S : MInst<"svst1w_scatter[_{2}base]_index[_{d}]", "vPuld", "lUl", [IsScatterStore], MemEltTyInt32, "aarch64_sve_st1_scatter_scalar_offset">;
435
435
} // let SVETargetGuard = "sve"
436
436
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]) >;
439
439
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]) >;
441
441
}
442
442
}
443
443
// 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] >;
447
447
448
448
// 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] >;
452
452
453
453
// Store one vector, with no truncation, non-temporal (scalar base)
454
454
def SVSTNT1 : MInst<"svstnt1[_{d}]", "vPpd", "csilUcUsUiUlhfdm", [IsStore, VerifyRuntimeMode], MemEltTyDefault, "aarch64_sve_stnt1">;
0 commit comments