[前][次][番号順一覧][スレッド一覧]

ruby-changes:73143

From: Maxime <ko1@a...>
Date: Tue, 30 Aug 2022 00:55:37 +0900 (JST)
Subject: [ruby-changes:73143] abea8c8983 (master): Add stores to one of the tests

https://git.ruby-lang.org/ruby.git/commit/?id=abea8c8983

From abea8c8983aef411f7e6a2afbfbc25e31b2f5486 Mon Sep 17 00:00:00 2001
From: Maxime Chevalier-Boisvert <maxime.chevalierboisvert@s...>
Date: Wed, 15 Jun 2022 16:16:33 -0400
Subject: Add stores to one of the tests

---
 yjit/src/backend/ir.rs         | 2 ++
 yjit/src/backend/tests.rs      | 8 ++++++--
 yjit/src/backend/x86_64/mod.rs | 3 +++
 3 files changed, 11 insertions(+), 2 deletions(-)

diff --git a/yjit/src/backend/ir.rs b/yjit/src/backend/ir.rs
index 4f1aafef99..f1146f152e 100644
--- a/yjit/src/backend/ir.rs
+++ b/yjit/src/backend/ir.rs
@@ -86,6 +86,7 @@ pub enum Op https://github.com/ruby/ruby/blob/trunk/yjit/src/backend/ir.rs#L86
     // Low-level conditional jump instructions
     Jbe,
     Je,
+    Jz,
     Jnz,
 
     // Push and pop registers to/from the C stack
@@ -707,6 +708,7 @@ macro_rules! def_push_2_opnd_no_out { https://github.com/ruby/ruby/blob/trunk/yjit/src/backend/ir.rs#L708
 def_push_1_opnd_no_out!(jmp_opnd, Op::JmpOpnd);
 def_push_jcc!(je, Op::Je);
 def_push_jcc!(jbe, Op::Jbe);
+def_push_jcc!(jz, Op::Jz);
 def_push_jcc!(jnz, Op::Jnz);
 def_push_2_opnd!(add, Op::Add);
 def_push_2_opnd!(sub, Op::Sub);
diff --git a/yjit/src/backend/tests.rs b/yjit/src/backend/tests.rs
index 45b8fdfb8a..afb4c42fa8 100644
--- a/yjit/src/backend/tests.rs
+++ b/yjit/src/backend/tests.rs
@@ -146,8 +146,12 @@ fn test_reuse_reg() https://github.com/ruby/ruby/blob/trunk/yjit/src/backend/tests.rs#L146
 
     let v0 = asm.add(Opnd::mem(64, SP, 0), Opnd::UImm(1));
     let v1 = asm.add(Opnd::mem(64, SP, 8), Opnd::UImm(1));
-    let v2 = asm.add(v0, Opnd::UImm(1));
-    asm.add(v0, v2);
+
+    let v2 = asm.add(v0, Opnd::UImm(1)); // Reuse v1 register
+    let v3 = asm.add(v0, v2);
+
+    asm.store(Opnd::mem(64, SP, 0), v2);
+    asm.store(Opnd::mem(64, SP, 8), v3);
 
     asm.compile_with_num_regs(&mut cb, 2);
 }
diff --git a/yjit/src/backend/x86_64/mod.rs b/yjit/src/backend/x86_64/mod.rs
index 4d24378370..7dcf41600d 100644
--- a/yjit/src/backend/x86_64/mod.rs
+++ b/yjit/src/backend/x86_64/mod.rs
@@ -187,7 +187,10 @@ impl Assembler https://github.com/ruby/ruby/blob/trunk/yjit/src/backend/x86_64/mod.rs#L187
 
                 Op::JmpOpnd => jmp_rm(cb, insn.opnds[0].into()),
 
+                // Conditional jump to a label
                 Op::Je => je_label(cb, insn.target.unwrap().unwrap_label_idx()),
+                Op::Jz => jz_label(cb, insn.target.unwrap().unwrap_label_idx()),
+                Op::Jnz => jnz_label(cb, insn.target.unwrap().unwrap_label_idx()),
 
                 // Atomically increment a counter at a given memory location
                 Op::IncrCounter => {
-- 
cgit v1.2.1


--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]