@@ -229,7 +229,7 @@ def PUSHA16 : I<0x60, RawFrm, (outs), (ins), "pushaw", []>,
229
229
OpSize16, Requires<[Not64BitMode]>;
230
230
}
231
231
232
- let Constraints = "$src = $dst", SchedRW = [WriteBSWAP32], Predicates = [NoEGPR ] in {
232
+ let Constraints = "$src = $dst", SchedRW = [WriteBSWAP32], Predicates = [NoNDD ] in {
233
233
// This instruction is a consequence of BSWAP32r observing operand size. The
234
234
// encoding is valid, but the behavior is undefined.
235
235
let isCodeGenOnly = 1, ForceDisassemble = 1, hasSideEffects = 0 in
@@ -1150,30 +1150,31 @@ let Predicates = [HasMOVBE, HasEGPR, In64BitMode] in {
1150
1150
[(store (bswap GR64:$src), addr:$dst)]>,
1151
1151
EVEX, NoCD8, T_MAP4;
1152
1152
}
1153
- let SchedRW = [WriteALU] in {
1154
- def MOVBE16rr_EVEX : I<0x61, MRMDestReg, (outs GR16:$dst), (ins GR16:$src),
1155
- "movbe{w}\t{$src, $dst|$dst, $src}",
1156
- [(set GR16:$dst, (bswap GR16:$src))]>,
1157
- EVEX, NoCD8, T_MAP4, PD;
1158
- def MOVBE32rr_EVEX : I<0x61, MRMDestReg, (outs GR32:$dst), (ins GR32:$src),
1159
- "movbe{l}\t{$src, $dst|$dst, $src}",
1160
- [(set GR32:$dst, (bswap GR32:$src))]>,
1161
- EVEX, NoCD8, T_MAP4;
1162
- def MOVBE64rr_EVEX : RI<0x61, MRMDestReg, (outs GR64:$dst), (ins GR64:$src),
1163
- "movbe{q}\t{$src, $dst|$dst, $src}",
1164
- [(set GR64:$dst, (bswap GR64:$src))]>,
1165
- EVEX, NoCD8, T_MAP4;
1153
+ }
1166
1154
1167
- def MOVBE16rr_EVEX_REV : I<0x60, MRMSrcReg, (outs GR16:$dst), (ins GR16:$src),
1168
- "movbe{w}\t{$src, $dst|$dst, $src}", []>,
1169
- EVEX, NoCD8, T_MAP4, PD;
1170
- def MOVBE32rr_EVEX_REV : I<0x60, MRMSrcReg, (outs GR32:$dst), (ins GR32:$src),
1171
- "movbe{l}\t{$src, $dst|$dst, $src}", []>,
1172
- EVEX, NoCD8, T_MAP4;
1173
- def MOVBE64rr_EVEX_REV : RI<0x60, MRMSrcReg, (outs GR64:$dst), (ins GR64:$src),
1174
- "movbe{q}\t{$src, $dst|$dst, $src}", []>,
1175
- EVEX, NoCD8, T_MAP4;
1176
- }
1155
+ let SchedRW = [WriteALU], Predicates = [HasMOVBE, HasNDD, In64BitMode] in {
1156
+ def MOVBE16rr_EVEX : I<0x61, MRMDestReg, (outs GR16:$dst), (ins GR16:$src),
1157
+ "movbe{w}\t{$src, $dst|$dst, $src}",
1158
+ [(set GR16:$dst, (bswap GR16:$src))]>,
1159
+ EVEX, NoCD8, T_MAP4, PD;
1160
+ def MOVBE32rr_EVEX : I<0x61, MRMDestReg, (outs GR32:$dst), (ins GR32:$src),
1161
+ "movbe{l}\t{$src, $dst|$dst, $src}",
1162
+ [(set GR32:$dst, (bswap GR32:$src))]>,
1163
+ EVEX, NoCD8, T_MAP4;
1164
+ def MOVBE64rr_EVEX : RI<0x61, MRMDestReg, (outs GR64:$dst), (ins GR64:$src),
1165
+ "movbe{q}\t{$src, $dst|$dst, $src}",
1166
+ [(set GR64:$dst, (bswap GR64:$src))]>,
1167
+ EVEX, NoCD8, T_MAP4;
1168
+
1169
+ def MOVBE16rr_EVEX_REV : I<0x60, MRMSrcReg, (outs GR16:$dst), (ins GR16:$src),
1170
+ "movbe{w}\t{$src, $dst|$dst, $src}", []>,
1171
+ EVEX, NoCD8, T_MAP4, PD;
1172
+ def MOVBE32rr_EVEX_REV : I<0x60, MRMSrcReg, (outs GR32:$dst), (ins GR32:$src),
1173
+ "movbe{l}\t{$src, $dst|$dst, $src}", []>,
1174
+ EVEX, NoCD8, T_MAP4;
1175
+ def MOVBE64rr_EVEX_REV : RI<0x60, MRMSrcReg, (outs GR64:$dst), (ins GR64:$src),
1176
+ "movbe{q}\t{$src, $dst|$dst, $src}", []>,
1177
+ EVEX, NoCD8, T_MAP4;
1177
1178
}
1178
1179
1179
1180
//===----------------------------------------------------------------------===//
0 commit comments