@@ -1136,7 +1136,7 @@ class MxClr_D<MxType TYPE>
1136
1136
1137
1137
// CLR reads memory before clearing on M68000 and M68008
1138
1138
// TODO: mayLoad is *only* applicable on M68000 and M68008
1139
- let mayLoad = 1, mayStore = 1 in
1139
+ let mayLoad = 1, mayStore = 1 in {
1140
1140
class MxClr_M<MxType TYPE, MxOpBundle DST, MxEncMemOp DST_ENC>
1141
1141
: MxInst<(outs), (ins DST.Op:$dst),
1142
1142
"clr."#TYPE.Prefix#"\t$dst",
@@ -1147,19 +1147,32 @@ class MxClr_M<MxType TYPE, MxOpBundle DST, MxEncMemOp DST_ENC>
1147
1147
DST_ENC.EA), DST_ENC.Supplement
1148
1148
);
1149
1149
}
1150
+
1151
+ class MxClr_B<MxType TYPE>
1152
+ : MxInst<(outs), (ins MxAL32:$dst),
1153
+ "clr."#TYPE.Prefix#"\t$dst",
1154
+ [(store (TYPE.VT 0), (i32 (MxWrapper tglobaladdr:$dst)))]> {
1155
+ defvar AbsEncoding = MxEncAddrMode_abs<"dst", true>;
1156
+ let Inst = (ascend
1157
+ (descend 0b01000010,
1158
+ /*SIZE*/!cast<MxEncSize>("MxEncSize"#TYPE.Size).Value,
1159
+ AbsEncoding.EA), AbsEncoding.Supplement
1160
+ );
1161
+ }
1162
+ } // let mayLoad = 1, mayStore = 1
1150
1163
} // let Defs = [CCR]
1151
1164
1152
1165
foreach S = [8, 16, 32] in {
1153
1166
defvar DTYPE = !cast<MxType>("MxType"#S#"d");
1154
1167
def CLR#S#d : MxClr_D<DTYPE>;
1168
+ def CLR#S#b : MxClr_B<DTYPE>;
1155
1169
1156
1170
defvar MTYPE = !cast<MxType>("MxType"#S);
1157
1171
def CLR#S#j : MxClr_M<MTYPE, !cast<MxOpBundle>("MxOp"#S#"AddrMode_j"), MxEncAddrMode_j<"dst">>;
1158
1172
def CLR#S#o : MxClr_M<MTYPE, !cast<MxOpBundle>("MxOp"#S#"AddrMode_o"), MxEncAddrMode_o<"dst">>;
1159
1173
def CLR#S#e : MxClr_M<MTYPE, !cast<MxOpBundle>("MxOp"#S#"AddrMode_e"), MxEncAddrMode_e<"dst">>;
1160
1174
def CLR#S#p : MxClr_M<MTYPE, !cast<MxOpBundle>("MxOp"#S#"AddrMode_p"), MxEncAddrMode_p<"dst">>;
1161
1175
def CLR#S#f : MxClr_M<MTYPE, !cast<MxOpBundle>("MxOp"#S#"AddrMode_f"), MxEncAddrMode_f<"dst">>;
1162
- def CLR#S#b : MxClr_M<MTYPE, !cast<MxOpBundle>("MxOp"#S#"AddrMode_b"), MxEncAddrMode_abs<"dst", true>>;
1163
1176
def CLR#S#q : MxClr_M<MTYPE, !cast<MxOpBundle>("MxOp"#S#"AddrMode_q"), MxEncAddrMode_q<"dst">>;
1164
1177
def CLR#S#k : MxClr_M<MTYPE, !cast<MxOpBundle>("MxOp"#S#"AddrMode_k"), MxEncAddrMode_k<"dst">>;
1165
1178
}
0 commit comments