From d332c6ee126870aa3413de8d96e493b527559181 Mon Sep 17 00:00:00 2001 From: Takashi Kokubun Date: Wed, 8 Feb 2023 01:17:39 -0800 Subject: Implement getlocal_WC_1 --- lib/ruby_vm/mjit/assembler.rb | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'lib/ruby_vm/mjit/assembler.rb') diff --git a/lib/ruby_vm/mjit/assembler.rb b/lib/ruby_vm/mjit/assembler.rb index f2cd90a789..5f2873b09f 100644 --- a/lib/ruby_vm/mjit/assembler.rb +++ b/lib/ruby_vm/mjit/assembler.rb @@ -101,6 +101,23 @@ module RubyVM::MJIT end end + def and(dst, src) + case [dst, src] + # AND r/m64, imm8 (Mod 11: reg) + in [Symbol => dst_reg, Integer => src_imm] if r64?(dst_reg) && imm8?(src_imm) + # REX.W + 83 /4 ib + # MI: Operand 1: ModRM:r/m (r, w), Operand 2: imm8/16/32 + insn( + prefix: REX_W, + opcode: 0x83, + mod_rm: ModRM[mod: Mod11, reg: 4, rm: dst_reg], + imm: imm8(src_imm), + ) + else + raise NotImplementedError, "and: not-implemented operands: #{dst.inspect}, #{src.inspect}" + end + end + # @param addr [Integer] def call(addr) # CALL rel32 -- cgit v1.2.3