Implement ISEQ block_handler

This commit is contained in:
Takashi Kokubun 2023-02-28 23:22:12 -08:00
parent fb08b0e748
commit b5fbc9f59f
Notes: git 2025-05-14 12:41:59 +00:00
2 changed files with 56 additions and 31 deletions

View file

@ -667,6 +667,16 @@ module RubyVM::MJIT
def or(dst, src)
case [dst, src]
# OR r/m64, imm8 (Mod 11: reg)
in [Symbol => dst_reg, Integer => src_imm] if r64?(dst_reg) && imm8?(src_imm)
# REX.W + 83 /1 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: 1, rm: dst_reg],
imm: imm8(src_imm),
)
# OR r64, r/m64 (Mod 01: [reg]+disp8)
in [Symbol => dst_reg, Array[Symbol => src_reg, Integer => src_disp]] if r64?(dst_reg) && r64?(src_reg) && imm8?(src_disp)
# REX.W + 0B /r