diff options
author | Takashi Kokubun <[email protected]> | 2023-03-18 23:49:11 -0700 |
---|---|---|
committer | Takashi Kokubun <[email protected]> | 2023-03-19 13:25:41 -0700 |
commit | 2121282753b9faee1ce6f93d6c75b105ad040af0 (patch) | |
tree | bd2b4b09c3276380ae0096ed71d30ba41ee6bbcc /lib/ruby_vm/rjit/assembler.rb | |
parent | bcd0aa896fe84610cef8dc873239738001283538 (diff) |
RJIT: Optimize String#<<
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 6bd654fd3e..bd8f8ad1d6 100644 --- a/lib/ruby_vm/rjit/assembler.rb +++ b/lib/ruby_vm/rjit/assembler.rb @@ -838,6 +838,20 @@ module RubyVM::RJIT end end + def xor(dst, src) + case [dst, src] + # XOR r/m64, r64 (Mod 11: reg) + in [R64 => dst_reg, R64 => src_reg] + # REX.W + 31 /r + # MR: Operand 1: ModRM:r/m (r, w), Operand 2: ModRM:reg (r) + insn( + prefix: REX_W, + opcode: 0x31, + mod_rm: ModRM[mod: Mod11, reg: src_reg, rm: dst_reg], + ) + end + end + # # Utilities # |