summaryrefslogtreecommitdiff
path: root/lib/ruby_vm
diff options
context:
space:
mode:
authorTakashi Kokubun <takashikkbn@gmail.com>2023-03-11 23:47:10 -0800
committerTakashi Kokubun <takashikkbn@gmail.com>2023-03-11 23:47:11 -0800
commit3efe4639eca9b0bd5b3a2332c17595597bfd7f29 (patch)
tree1c75c9a7a51b5f85637df1826b832d3cc51a5e1c /lib/ruby_vm
parent9c220bf5e14821093b2f8dc8d7c7d5619b424f11 (diff)
RJIT: Handle Mod 10 for CMP r/m64, r64
Diffstat (limited to 'lib/ruby_vm')
-rw-r--r--lib/ruby_vm/rjit/assembler.rb10
1 files changed, 10 insertions, 0 deletions
diff --git a/lib/ruby_vm/rjit/assembler.rb b/lib/ruby_vm/rjit/assembler.rb
index 8003c854ef..6bd654fd3e 100644
--- a/lib/ruby_vm/rjit/assembler.rb
+++ b/lib/ruby_vm/rjit/assembler.rb
@@ -355,6 +355,16 @@ module RubyVM::RJIT
mod_rm: ModRM[mod: Mod01, reg: right_reg, rm: left_reg],
disp: left_disp,
)
+ # CMP r/m64, r64 (Mod 10: [reg]+disp32)
+ in [QwordPtr[R64 => left_reg, IMM32 => left_disp], R64 => right_reg]
+ # REX.W + 39 /r
+ # MR: Operand 1: ModRM:r/m (r), Operand 2: ModRM:reg (r)
+ insn(
+ prefix: REX_W,
+ opcode: 0x39,
+ mod_rm: ModRM[mod: Mod10, reg: right_reg, rm: left_reg],
+ disp: imm32(left_disp),
+ )
# CMP r/m64, r64 (Mod 11: reg)
in [R64 => left_reg, R64 => right_reg]
# REX.W + 39 /r