<feed xmlns='http://www.w3.org/2005/Atom'>
<title>ruby.git/zjit/src/asm/x86_64/mod.rs, branch v4.0.4</title>
<subtitle>The Ruby Programming Language</subtitle>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/'/>
<entry>
<title>ZJIT: Implement register spill (#14936)</title>
<updated>2025-11-04T00:49:25+00:00</updated>
<author>
<name>Takashi Kokubun</name>
<email>takashi.kokubun@shopify.com</email>
</author>
<published>2025-11-04T00:49:25+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=9ca940757315e53d1eaddc83071b1b4581f8f578'/>
<id>9ca940757315e53d1eaddc83071b1b4581f8f578</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>ZJIT: Introduce a better LIR printer (#14986)</title>
<updated>2025-10-29T15:17:11+00:00</updated>
<author>
<name>Takashi Kokubun</name>
<email>takashi.kokubun@shopify.com</email>
</author>
<published>2025-10-29T15:17:11+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=fcd7da15e693206941f388aa260b59fd9301833a'/>
<id>fcd7da15e693206941f388aa260b59fd9301833a</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>ZJIT: Print unexpected operands on x86_64</title>
<updated>2025-10-28T16:25:30+00:00</updated>
<author>
<name>Takashi Kokubun</name>
<email>takashikkbn@gmail.com</email>
</author>
<published>2025-10-28T08:51:56+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=b66c57be1888a40cf6329c501275051e9cbfc1f7'/>
<id>b66c57be1888a40cf6329c501275051e9cbfc1f7</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>ZJIT: Ensure `clippy` passes and silence unnecessary warnings (#14439)</title>
<updated>2025-09-03T21:45:54+00:00</updated>
<author>
<name>Aiden Fox Ivey</name>
<email>aiden.foxivey@shopify.com</email>
</author>
<published>2025-09-03T21:45:54+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=a6d397e29c61030f130f8d83e6bfe6d99ebbae91'/>
<id>a6d397e29c61030f130f8d83e6bfe6d99ebbae91</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>ZJIT: Enable or remove comments from YJIT (#14214)</title>
<updated>2025-08-14T00:32:29+00:00</updated>
<author>
<name>Takashi Kokubun</name>
<email>takashi.kokubun@shopify.com</email>
</author>
<published>2025-08-14T00:32:29+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=cb281653ada62b3e01cbf7df5f92b684376582cf'/>
<id>cb281653ada62b3e01cbf7df5f92b684376582cf</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>ZJIT: x86: Fix panic writing 32-bit number with top bit set</title>
<updated>2025-06-11T10:49:49+00:00</updated>
<author>
<name>Alan Wu</name>
<email>XrXr@users.noreply.github.com</email>
</author>
<published>2025-06-10T12:58:56+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=59fad961b8c8b70ddac0c450963d51e5076c2c47'/>
<id>59fad961b8c8b70ddac0c450963d51e5076c2c47</id>
<content type='text'>
Previously, `asm.mov(m32, imm32)` panicked when `imm32 &gt; 0x80000000`. It
attempted to split imm32 into a register before doing the store, but
then the register size didn't match the destination size.

Instead of splitting, use the `MOV r/m32, imm32` form which works for
all 32-bit values. Adjust asserts that assumed that all forms undergo
sign extension, which is not true for this case.

See: 54edc930f9f0a658da45cfcef46648d1b6f82467
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Previously, `asm.mov(m32, imm32)` panicked when `imm32 &gt; 0x80000000`. It
attempted to split imm32 into a register before doing the store, but
then the register size didn't match the destination size.

Instead of splitting, use the `MOV r/m32, imm32` form which works for
all 32-bit values. Adjust asserts that assumed that all forms undergo
sign extension, which is not true for this case.

See: 54edc930f9f0a658da45cfcef46648d1b6f82467
</pre>
</div>
</content>
</entry>
<entry>
<title>Add miscellaneous Clippy 'corrections' (https://github.com/Shopify/zjit/pull/92)</title>
<updated>2025-04-18T12:53:01+00:00</updated>
<author>
<name>Aiden Fox Ivey</name>
<email>aiden@aidenfoxivey.com</email>
</author>
<published>2025-04-03T01:28:13+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=32374b70fe04a98542f0a71c72e40b470b6ffb88'/>
<id>32374b70fe04a98542f0a71c72e40b470b6ffb88</id>
<content type='text'>
* Remove redundant  statements

* Remove .clone() since A64 implements Copy

* Remove .clone() since InsnId implements Copy

.

* Dereference since *const rb_call_data implements Copy

* Remove unnecessary return statement

* Remove unnecessary braces

* Use .is_empty() over length checks

* Remove unnecessary conversion handling

Since i32 can always fit into i64 (the inner type in Opnd::Imm), the conversion is infallibile.

* Use slice notation in lieu of Vec

https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg

* Simplify match statement
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* Remove redundant  statements

* Remove .clone() since A64 implements Copy

* Remove .clone() since InsnId implements Copy

.

* Dereference since *const rb_call_data implements Copy

* Remove unnecessary return statement

* Remove unnecessary braces

* Use .is_empty() over length checks

* Remove unnecessary conversion handling

Since i32 can always fit into i64 (the inner type in Opnd::Imm), the conversion is infallibile.

* Use slice notation in lieu of Vec

https://rust-lang.github.io/rust-clippy/master/index.html#ptr_arg

* Simplify match statement
</pre>
</div>
</content>
</entry>
<entry>
<title>Compile IfFalse, IfTrue, and Jump instructions (https://github.com/Shopify/zjit/pull/72)</title>
<updated>2025-04-18T12:53:00+00:00</updated>
<author>
<name>Takashi Kokubun</name>
<email>takashikkbn@gmail.com</email>
</author>
<published>2025-03-21T16:31:05+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=6ec411add7def0ab97640ebb110bea5e18747e81'/>
<id>6ec411add7def0ab97640ebb110bea5e18747e81</id>
<content type='text'>
* Compile IfFalse instruction

* Add a TODO comment

* Rename *s_len to num_*s

* Run only gen_param() against block.params

* Add a few more tests

* Wrap label indexes with Label

* Compile blocks in reverse post-order

* Simplify a nested test

* s/get_block/block/

* Return a number instead of an iterator

* Clarify the allocator uses disjoint sets of registers

* Use Display for Block and Insn

* Compile IfTrue and Jump

* Avoid resolving Param instructions

* Always compile Insn::Param as basic block arguments

* Remove an obsoleted variable

* Change it back to use find

* Use find for params too

* Use Display more

* Add more tests

* nested if
* if after if
* if elsif else
* loop after loop
* nested loops
* if in loop
* loop in if
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* Compile IfFalse instruction

* Add a TODO comment

* Rename *s_len to num_*s

* Run only gen_param() against block.params

* Add a few more tests

* Wrap label indexes with Label

* Compile blocks in reverse post-order

* Simplify a nested test

* s/get_block/block/

* Return a number instead of an iterator

* Clarify the allocator uses disjoint sets of registers

* Use Display for Block and Insn

* Compile IfTrue and Jump

* Avoid resolving Param instructions

* Always compile Insn::Param as basic block arguments

* Remove an obsoleted variable

* Change it back to use find

* Use find for params too

* Use Display more

* Add more tests

* nested if
* if after if
* if elsif else
* loop after loop
* nested loops
* if in loop
* loop in if
</pre>
</div>
</content>
</entry>
<entry>
<title>Implement FixnumAdd and stub PatchPoint/GuardType (https://github.com/Shopify/zjit/pull/30)</title>
<updated>2025-04-18T12:52:59+00:00</updated>
<author>
<name>Takashi Kokubun</name>
<email>takashikkbn@gmail.com</email>
</author>
<published>2025-03-05T21:47:25+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=22c73f1ccbe04b1e85ed5977f676f5afd31a2fcc'/>
<id>22c73f1ccbe04b1e85ed5977f676f5afd31a2fcc</id>
<content type='text'>
* Implement FixnumAdd and stub PatchPoint/GuardType

Co-authored-by: Max Bernstein &lt;max.bernstein@shopify.com&gt;
Co-authored-by: Maxime Chevalier-Boisvert &lt;maxime.chevalierboisvert@shopify.com&gt;

* Clone Target for arm64

* Use $create instead of use create

Co-authored-by: Alan Wu &lt;XrXr@users.noreply.github.com&gt;

* Fix misindentation from suggested changes

* Drop an unneeded variable for mut

* Load operand into a register only if necessary

---------

Co-authored-by: Max Bernstein &lt;max.bernstein@shopify.com&gt;
Co-authored-by: Maxime Chevalier-Boisvert &lt;maxime.chevalierboisvert@shopify.com&gt;
Co-authored-by: Alan Wu &lt;XrXr@users.noreply.github.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* Implement FixnumAdd and stub PatchPoint/GuardType

Co-authored-by: Max Bernstein &lt;max.bernstein@shopify.com&gt;
Co-authored-by: Maxime Chevalier-Boisvert &lt;maxime.chevalierboisvert@shopify.com&gt;

* Clone Target for arm64

* Use $create instead of use create

Co-authored-by: Alan Wu &lt;XrXr@users.noreply.github.com&gt;

* Fix misindentation from suggested changes

* Drop an unneeded variable for mut

* Load operand into a register only if necessary

---------

Co-authored-by: Max Bernstein &lt;max.bernstein@shopify.com&gt;
Co-authored-by: Maxime Chevalier-Boisvert &lt;maxime.chevalierboisvert@shopify.com&gt;
Co-authored-by: Alan Wu &lt;XrXr@users.noreply.github.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Stub YJIT-specific implementations in the backend</title>
<updated>2025-04-18T12:52:57+00:00</updated>
<author>
<name>Takashi Kokubun</name>
<email>takashikkbn@gmail.com</email>
</author>
<published>2025-02-11T01:12:31+00:00</published>
<link rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=9c267256d896125a2aea4be8609ec415ff7760ef'/>
<id>9c267256d896125a2aea4be8609ec415ff7760ef</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
</feed>
