From 96bfd3352548e1fcfda671fa101baf0c65c6d1c9 Mon Sep 17 00:00:00 2001 From: Jan Bujak Date: Thu, 16 Jan 2025 05:49:26 +0000 Subject: [PATCH] polkavm-assembler: add `xchg_mem` --- crates/polkavm-assembler/src/amd64.rs | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/crates/polkavm-assembler/src/amd64.rs b/crates/polkavm-assembler/src/amd64.rs index 1b406526..5b0cda58 100644 --- a/crates/polkavm-assembler/src/amd64.rs +++ b/crates/polkavm-assembler/src/amd64.rs @@ -1419,6 +1419,12 @@ pub mod inst { None, (fmt.write_fmt(core::format_args!("cmov{} {}, {}", self.0.suffix(), self.2.name_from(self.1), self.3.display_without_prefix(Size::from(self.1))))), + // https://www.felixcloutier.com/x86/xchg + xchg_mem(RegSize, Reg, MemOp) => + Inst::new(0x87).rex_64b_if(matches!(self.0, RegSize::R64)).modrm_reg(self.1).mem(self.2).encode(), + None, + (fmt.write_fmt(core::format_args!("xchg {}, {}", self.1.name_from(self.0), self.2))), + // https://www.felixcloutier.com/x86/add add(Operands) => alu_impl(0x00, 0x02, 0b000, self.0), @@ -2384,6 +2390,7 @@ mod tests { syscall, test, ud2, + xchg_mem, xor, }