diff options
author | Takashi Kokubun <[email protected]> | 2023-03-19 14:15:45 -0700 |
---|---|---|
committer | Takashi Kokubun <[email protected]> | 2023-03-19 14:15:45 -0700 |
commit | 2f29044de48ed3f468c09ea3c5c214791370037f (patch) | |
tree | 097eef9f6974c9a384c8ee2ad8df606965505366 /lib/ruby_vm/rjit/assembler.rb | |
parent | 83ad1cac811b144b0016fdbfc9d83c11fd190349 (diff) |
RJIT: Optimize Kernel#block_given?
Diffstat (limited to 'lib/ruby_vm/rjit/assembler.rb')
-rw-r--r-- | lib/ruby_vm/rjit/assembler.rb | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/lib/ruby_vm/rjit/assembler.rb b/lib/ruby_vm/rjit/assembler.rb index bd8f8ad1d6..35f01392c9 100644 --- a/lib/ruby_vm/rjit/assembler.rb +++ b/lib/ruby_vm/rjit/assembler.rb @@ -243,6 +243,20 @@ module RubyVM::RJIT end end + def cmovne(dst, src) + case [dst, src] + # CMOVNE r64, r/m64 (Mod 11: reg) + in [R64 => dst_reg, R64 => src_reg] + # REX.W + 0F 45 /r + # RM: Operand 1: ModRM:reg (r, w), Operand 2: ModRM:r/m (r) + insn( + prefix: REX_W, + opcode: [0x0f, 0x45], + mod_rm: ModRM[mod: Mod11, reg: dst_reg, rm: src_reg], + ) + end + end + def cmovnz(dst, src) case [dst, src] # CMOVNZ r64, r/m64 (Mod 11: reg) |