@@ -12604,7 +12604,7 @@ class MOPSMemoryMove<bits<2> opcode, bits<2> op1, bits<2> op2, string asm>
1260412604 : MOPSMemoryCopyMoveBase<1, opcode, op1, op2, asm>;
1260512605
1260612606class MOPSMemorySetBase<bit isTagging, bits<2> opcode, bit op1, bit op2,
12607- string asm>
12607+ bit op3, string asm>
1260812608 : I<(outs GPR64common:$Rd_wb, GPR64:$Rn_wb),
1260912609 (ins GPR64common:$Rd, GPR64:$Rn, GPR64:$Rm),
1261012610 asm, "\t[$Rd]!, $Rn!, $Rm",
@@ -12620,7 +12620,8 @@ class MOPSMemorySetBase<bit isTagging, bits<2> opcode, bit op1, bit op2,
1262012620 let Inst{15-14} = opcode;
1262112621 let Inst{13} = op2;
1262212622 let Inst{12} = op1;
12623- let Inst{11-10} = 0b01;
12623+ let Inst{11} = 0b0;
12624+ let Inst{10} = op3;
1262412625 let Inst{9-5} = Rn;
1262512626 let Inst{4-0} = Rd;
1262612627
@@ -12629,11 +12630,11 @@ class MOPSMemorySetBase<bit isTagging, bits<2> opcode, bit op1, bit op2,
1262912630 let mayStore = 1;
1263012631}
1263112632
12632- class MOPSMemorySet<bits<2> opcode, bit op1, bit op2, string asm>
12633- : MOPSMemorySetBase<0, opcode, op1, op2, asm>;
12633+ class MOPSMemorySet<bits<2> opcode, bit op1, bit op2, bit op3, string asm>
12634+ : MOPSMemorySetBase<0, opcode, op1, op2, op3, asm>;
1263412635
12635- class MOPSMemorySetTagging<bits<2> opcode, bit op1, bit op2, string asm>
12636- : MOPSMemorySetBase<1, opcode, op1, op2, asm>;
12636+ class MOPSMemorySetTagging<bits<2> opcode, bit op1, bit op2, bit op3, string asm>
12637+ : MOPSMemorySetBase<1, opcode, op1, op2, op3, asm>;
1263712638
1263812639multiclass MOPSMemoryCopyInsns<bits<2> opcode, string asm> {
1263912640 def "" : MOPSMemoryCopy<opcode, 0b00, 0b00, asm>;
@@ -12674,17 +12675,27 @@ multiclass MOPSMemoryMoveInsns<bits<2> opcode, string asm> {
1267412675}
1267512676
1267612677multiclass MOPSMemorySetInsns<bits<2> opcode, string asm> {
12677- def "" : MOPSMemorySet<opcode, 0, 0, asm>;
12678- def T : MOPSMemorySet<opcode, 1, 0, asm # "t">;
12679- def N : MOPSMemorySet<opcode, 0, 1, asm # "n">;
12680- def TN : MOPSMemorySet<opcode, 1, 1, asm # "tn">;
12678+ def "" : MOPSMemorySet<opcode, 0, 0, 1, asm>;
12679+ def T : MOPSMemorySet<opcode, 1, 0, 1, asm # "t">;
12680+ def N : MOPSMemorySet<opcode, 0, 1, 1, asm # "n">;
12681+ def TN : MOPSMemorySet<opcode, 1, 1, 1, asm # "tn">;
1268112682}
1268212683
1268312684multiclass MOPSMemorySetTaggingInsns<bits<2> opcode, string asm> {
12684- def "" : MOPSMemorySetTagging<opcode, 0, 0, asm>;
12685- def T : MOPSMemorySetTagging<opcode, 1, 0, asm # "t">;
12686- def N : MOPSMemorySetTagging<opcode, 0, 1, asm # "n">;
12687- def TN : MOPSMemorySetTagging<opcode, 1, 1, asm # "tn">;
12685+ def "" : MOPSMemorySetTagging<opcode, 0, 0, 1, asm>;
12686+ def T : MOPSMemorySetTagging<opcode, 1, 0, 1, asm # "t">;
12687+ def N : MOPSMemorySetTagging<opcode, 0, 1, 1, asm # "n">;
12688+ def TN : MOPSMemorySetTagging<opcode, 1, 1, 1, asm # "tn">;
12689+ }
12690+
12691+ //----------------------------------------------------------------------------
12692+ // MOPS Granule Only - FEAT_MOPS_GO
12693+ //----------------------------------------------------------------------------
12694+ multiclass MOPSGoMemorySetTaggingInsns<bits<2> opcode, string asm> {
12695+ def "" : MOPSMemorySetTagging<opcode, 0, 0, 0, asm>;
12696+ def T : MOPSMemorySetTagging<opcode, 1, 0, 0, asm # "t">;
12697+ def N : MOPSMemorySetTagging<opcode, 0, 1, 0, asm # "n">;
12698+ def TN : MOPSMemorySetTagging<opcode, 1, 1, 0, asm # "tn">;
1268812699}
1268912700
1269012701//----------------------------------------------------------------------------
0 commit comments