From abea8c8983aef411f7e6a2afbfbc25e31b2f5486 Mon Sep 17 00:00:00 2001 From: Maxime Chevalier-Boisvert 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 // 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 { 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() 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 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.3