ruby/misc
Alan Wu 91a9062626
YJIT: use shorter encoding for mov(r64,imm) when unambiguous (#5081)
* YJIT: use shorter encoding for mov(r64,imm) when unambiguous

Previously, for small constants such as `mov(RAX, imm_opnd(Qundef))`,
we emit an instruction with an 8-byte immediate. This form commonly
gets the `movabs` mnemonic.

In 64-bit mode, 32-bit operands get zero extended to 64-bit to fill the
register, so when the immediate is small enough, we can save 4 bytes by
using the `mov` variant that takes a 32-bit immediate and does a zero
extension.

Not implement with this change, there is an imm32 variant of `mov` that
does sign extension we could use. When the constant is negative, we
fallback to the `movabs` form.

In railsbench, this change yields roughly a 12% code size reduction for
the outlined block.

Co-authored-by: Jemma Issroff <jemmaissroff@gmail.com>

* [ci skip] comment edit. Please squash.

Co-authored-by: Jemma Issroff <jemmaissroff@gmail.com>
2021-11-05 15:44:29 -04:00
..
README Partly reverted for ruby-style.el. 2018-09-14 13:19:45 +00:00
expand_tabs.rb Promote net-smtp to the bundled gems 2021-05-27 14:42:11 +09:00
lldb_cruby.py Follow up the RString change [ci skip] 2021-10-28 08:58:59 +09:00
lldb_disasm.py Fix typos 2021-11-02 19:17:37 +09:00
lldb_yjit.py Add an lldb script to print YJIT comments 2021-10-20 18:19:37 -04:00
rb_optparse.bash [ruby/optparse] Add EditorConfig file 2021-04-28 11:56:15 +09:00
rb_optparse.zsh [ruby/optparse] Add EditorConfig file 2021-04-28 11:56:15 +09:00
ruby-style.el ruby-style.el: ruby-style-c-mode by VCS [ci skip] 2018-11-27 13:47:49 +00:00
test_lldb_cruby.rb Fix typo in lldb script 2019-04-02 21:13:22 +00:00
test_yjit_asm.sh Move the test file 2021-10-21 13:07:48 +09:00
yjit_asm_tests.c YJIT: use shorter encoding for mov(r64,imm) when unambiguous (#5081) 2021-11-05 15:44:29 -04:00

README

README             this file
rb_optparse.bash   bash completion script
rb_optparse.zsh    zsh completion script
ruby-style.el      Ruby's C/C++ mode style for emacs
lldb_cruby.py      LLDB port of debug utility
test_lldb_cruby.rb test file for LLDB port