Skip to content

Commit 82bd336

Browse files
committed
Add x64 MovsRM operation
1 parent 502b811 commit 82bd336

File tree

2 files changed

+9
-0
lines changed

2 files changed

+9
-0
lines changed

crates/codegen/src/target/x64.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -264,6 +264,7 @@ pub enum X64Instr {
264264
AddSp(i32),
265265
MovRM(FullOperandSize, AddrMode),
266266
MovMR(FullOperandSize, AddrMode),
267+
MovsRM(SseFpuPrecision, AddrMode),
267268
MovsMR(SseFpuPrecision, AddrMode),
268269
Ret,
269270
FuncAddrRel(FunctionRef),
@@ -306,6 +307,7 @@ impl X64Instr {
306307
X64Instr::AddSp(..) => false,
307308
X64Instr::MovRM(..) => false,
308309
X64Instr::MovMR(..) => false,
310+
X64Instr::MovsRM(..) => false,
309311
X64Instr::MovsMR(..) => false,
310312
X64Instr::Ret => false,
311313
X64Instr::FuncAddrRel(..) => false,
@@ -348,6 +350,7 @@ impl X64Instr {
348350
X64Instr::AddSp(..) => true,
349351
X64Instr::MovRM(..) => false,
350352
X64Instr::MovMR(..) => false,
353+
X64Instr::MovsRM(..) => false,
351354
X64Instr::MovsMR(..) => false,
352355
X64Instr::Ret => false,
353356
X64Instr::FuncAddrRel(..) => false,

crates/codegen/src/target/x64/emit.rs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -334,6 +334,12 @@ impl MachineEmit for X64Machine {
334334
RegMem::Mem(state.lower_addr_mode(addr_mode, &uses[1..])),
335335
uses[0].as_reg().unwrap(),
336336
),
337+
X64Instr::MovsRM(prec, addr_mode) => emit_movs_r_rm(
338+
buffer,
339+
*prec,
340+
defs[0].as_reg().unwrap(),
341+
RegMem::Mem(state.lower_addr_mode(addr_mode, uses)),
342+
),
337343
X64Instr::MovsMR(prec, addr_mode) => emit_movs_rm_r(
338344
buffer,
339345
*prec,

0 commit comments

Comments
 (0)