summaryrefslogtreecommitdiff
path: root/yjit/src
AgeCommit message (Collapse)Author
2022-08-29Add #[must_use] annotations to asm instructionsMaxime Chevalier-Boisvert
2022-08-29Add a backend test with a load of a GC'd VALUEMaxime Chevalier-Boisvert
2022-08-29Get started on branchunless portMaxime Chevalier-Boisvert
2022-08-29Get codegen for deferred compilation workingMaxime Chevalier-Boisvert
2022-08-29Add test for direct jump to a code pointerMaxime Chevalier-Boisvert
2022-08-29Arm64 progress (https://github.com/Shopify/ruby/pull/304)Kevin Newton
* Get initial wiring up * Split IncrCounter instruction * Breakpoints in Arm64 * Support for ORR * MOV instruction encodings * Implement JmpOpnd and CRet * Add ORN * Add MVN * PUSH, POP, CCALL for Arm64 * Some formatting and implement Op::Not for Arm64 * Consistent constants when working with the Arm64 SP * Allow OR-ing values into the memory buffer * Test lowering Arm64 ADD * Emit unconditional jumps consistently in Arm64 * Begin emitting conditional jumps for A64 * Back out some labelref changes * Remove label API that no longer exists * Use a trait for the label encoders * Encode nop * Add in nops so jumps are the same width no matter what on Arm64 * Op::Jbe for CodePtr * Pass src_addr and dst_addr instead of calculated offset to label refs * Even more jump work for Arm64 * Fix up jumps to use consistent assertions * Handle splitting Add, Sub, and Not insns for Arm64 * More Arm64 splits and various fixes * PR feedback for Arm64 support * Split up jumps and conditional jump logic
2022-08-29LSL, LSR, B.cond (https://github.com/Shopify/ruby/pull/303)Kevin Newton
* LSL and LSR * B.cond * Move A64 files around to make more sense * offset -> byte_offset for bcond
2022-08-29Conscise IR disassembly (https://github.com/Shopify/ruby/pull/302)Alan Wu
The output from `dbg!` was too verbose. For `test_jo` the output went from 37 lines to 5 lines. The added index helps parsing InsnOut indicies. Samples: ``` test backend::tests::test_jo ... [src/backend/ir.rs:589] &self = Assembler 000 Load(Mem64[Reg(3) + 8]) -> Out64(0) 001 Sub(Out64(0), 1_i64) -> Out64(1) 002 Load(Out64(1)) -> Out64(2) 003 Add(Out64(2), Mem64[Reg(3)]) -> Out64(3) 004 Jo() target=CodePtr(CodePtr(0x5)) -> Out64(4) 005 Mov(Mem64[Reg(3)], Out64(3)) -> Out64(5) test backend::tests::test_reuse_reg ... [src/backend/ir.rs:589] &self = Assembler 000 Load(Mem64[Reg(3)]) -> Out64(0) 001 Add(Out64(0), 1_u64) -> Out64(1) 002 Load(Mem64[Reg(3) + 8]) -> Out64(2) 003 Add(Out64(2), 1_u64) -> Out64(3) 004 Add(Out64(1), 1_u64) -> Out64(4) 005 Add(Out64(1), Out64(4)) -> Out64(5) 006 Store(Mem64[Reg(3)], Out64(4)) -> Out64(6) 007 Store(Mem64[Reg(3) + 8], Out64(5)) -> Out64(7) ```
2022-08-29Delete dbg!() callsAlan Wu
2022-08-29Fix backend transform bug, add testMaxime Chevalier-Boisvert
2022-08-29Port over duphash and newarrayMaxime Chevalier-Boisvert
2022-08-29Port over get_branch_target()Maxime Chevalier-Boisvert
2022-08-29Port over setnMaxime Chevalier-Boisvert
2022-08-29Add jo insn and test for joMaxime Chevalier-Boisvert
2022-08-29Port topn, adjuststack, most of opt_plusMaxime Chevalier-Boisvert
2022-08-29Port guard_two_fixnumsMaxime Chevalier-Boisvert
2022-08-29Port gen_full_cfunc_returnMaxime Chevalier-Boisvert
2022-08-29Port getlocal_WC0Maxime Chevalier-Boisvert
2022-08-29Port over gen_putspecialobjectMaxime Chevalier-Boisvert
2022-08-29Port gen_putself, log what can't be compiled in --yjit-dump-insnsMaxime Chevalier-Boisvert
2022-08-29TST, CMP, AND/ANDS with registers (https://github.com/Shopify/ruby/pull/301)Kevin Newton
* Add TST instruction and AND/ANDS entrypoints for immediates * TST/AND/ANDS for registers * CMP instruction
2022-08-29Make sure allocated reg size in bits matches insn out sizeMaxime Chevalier-Boisvert
2022-08-29AND/ANDS for A64 (https://github.com/Shopify/ruby/pull/300)Kevin Newton
2022-08-29Add Opnd.rm_num_bits() methodMaxime Chevalier-Boisvert
2022-08-29Implement X86Reg::sub_reg() methodMaxime Chevalier-Boisvert
2022-08-29Fix small bug in x86_splitMaxime Chevalier-Boisvert
2022-08-29Get rid of temporary context methodsMaxime Chevalier-Boisvert
2022-08-29Add bitwise and to x86 backendMaxime Chevalier-Boisvert
2022-08-29Add stores to one of the testsMaxime Chevalier-Boisvert
2022-08-29Move backend tests to their own fileMaxime Chevalier-Boisvert
2022-08-29Add support for using InsnOut as memory operand baseMaxime Chevalier-Boisvert
2022-08-29Rename transform_insns to forward_passMaxime Chevalier-Boisvert
2022-08-29Add assertMaxime Chevalier-Boisvert
2022-08-29Remove unused code, add backend asm testMaxime Chevalier-Boisvert
2022-08-29Port bitwise not, gen_check_ints()Maxime Chevalier-Boisvert
2022-08-29Port gen_code_for_exit_from_stub()Maxime Chevalier-Boisvert
2022-08-29Add atomic counter increment instructionMaxime Chevalier-Boisvert
2022-08-29Get side exits working, get miniruby to boot with threshold=1Maxime Chevalier-Boisvert
2022-08-29LDADDAL, STUR, BL (https://github.com/Shopify/ruby/pull/299)Kevin Newton
* LDADDAL instruction * STUR * BL instruction * Remove num_bits from imm and uimm * Tests for imm_fits_bits and uimm_fits_bits * Reorder arguments to LDADDAL
2022-08-29MOVK, MOVZ, BR (https://github.com/Shopify/ruby/pull/296)Kevin Newton
* MOVK instruction * More tests for the A64 entrypoints * Finish testing entrypoints * MOVZ * BR instruction
2022-08-29Port over putnil, putobject, and gen_leave()Maxime Chevalier-Boisvert
* Remove x86-64 dependency from codegen.rs * Port over putnil and putobject * Port over gen_leave() * Complete port of gen_leave() * Fix bug in x86 instruction splitting
2022-08-29Port gen_leave_exit(), add support for labels to backendMaxime Chevalier-Boisvert
2022-08-29Add cpush and cpop IR instructionsMaxime Chevalier-Boisvert
2022-08-29Add conditional jumpsMaxime Chevalier-Boisvert
2022-08-29LDUR (https://github.com/Shopify/ruby/pull/295)Kevin Newton
* LDUR * Fix up immediate masking * Consume operands directly * Consistency and cleanup * More consistency and entrypoints * Cleaner syntax for masks * Cleaner shifting for encodings
2022-08-29Map comments in backendMaxime Chevalier-Boisvert
2022-08-29First pass at porting gen_entry_prologue()Maxime Chevalier-Boisvert
2022-08-29Have Assembler::compile() return a list of GC offsetsMaxime Chevalier-Boisvert
2022-08-29RET A64 instructions (https://github.com/Shopify/ruby/pull/294)Kevin Newton
2022-08-29Remove x86_64 dependency in core.rsMaxime Chevalier-Boisvert