summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2022-08-29Port gen_checktype to the new IR assembler backend ↵Zack Deveau
(https://github.com/Shopify/ruby/pull/343)
2022-08-29Port the YJIT defined opcode; fix C_ARG_REGS ↵Noah Gibbs
(https://github.com/Shopify/ruby/pull/342)
2022-08-29A64: Fix off by one in offset encoding for BL ↵Alan Wu
(https://github.com/Shopify/ruby/pull/344) * A64: Fix off by one in offset encoding for BL It's relative to the address of the instruction not the end of it. * A64: Fix off by one when encoding B It's relative to the start of the instruction not the end. * A64: Add some tests for boundary offsets
2022-08-29Fix a bug in the x86 backend wrt large integer values, enable more testsMaxime Chevalier-Boisvert
2022-08-29Port and test checkkeyword (https://github.com/Shopify/ruby/pull/339)Noah Gibbs
2022-08-29Fix IncrCounter on ARMAlan Wu
The order of operands to LDADDAL were flipped and the destination pointer was dereferenced instead of passed as an address.
2022-08-29Test --yjit-stats in our CI workflowsMaxime Chevalier-Boisvert
2022-08-29Add LiveReg IR instruction to fix stats leave exit code ↵Alan Wu
(https://github.com/Shopify/ruby/pull/341) It allows for reserving a specific register and prevents the register allocator from clobbering it. Without this `./miniruby --yjit-stats --yjit-callthreshold=1 -e0` was crashing because the counter incrementing code was clobbering RAX incorrectly.
2022-08-29Fix CI workflowsMaxime Chevalier-Boisvert
2022-08-29Fixes (https://github.com/Shopify/ruby/pull/340)Kevin Newton
* Fix conditional jumps to label * Bitmask immediates cannot be u64::MAX
2022-08-29Fixes for AArch64 (https://github.com/Shopify/ruby/pull/338)Kevin Newton
* Better splitting for Op::Add, Op::Sub, and Op::Cmp * Split stores if the displacement is too large * Use a shifted immediate argument * Split all places where shifted immediates are used * Add more tests to the cirrus workflow
2022-08-29Enable more btestsMaxime Chevalier-Boisvert
2022-08-29Add ifdef to clear cacheMaxime Chevalier-Boisvert
2022-08-29Clear the icache on armMaxime Chevalier-Boisvert
2022-08-29Port and test duparray and splatarray (https://github.com/Shopify/ruby/pull/337)Noah Gibbs
* Port duparray opcode * Port and test splatarray
2022-08-29Fix bug with opt_lt, csel on x86Maxime Chevalier-Boisvert
2022-08-29Work on opt_lt, fix x86 backend bug in cmp()Maxime Chevalier-Boisvert
2022-08-29Fixes (https://github.com/Shopify/ruby/pull/336)Kevin Newton
* Fix bitmask encoding to u32 * Fix splitting for Op::And to account for bitmask immediate
2022-08-29Enable more btests in the CI workflows ↵Maxime Chevalier-Boisvert
(https://github.com/Shopify/ruby/pull/334) * Enable more btests in the CI workflows * Update workflows
2022-08-29Better splitting for Op::Test on AArch64 ↵Kevin Newton
(https://github.com/Shopify/ruby/pull/335)
2022-08-29Fix crash in newhash ccallMaxime Chevalier-Boisvert
2022-08-29Fix corrupted X29 causing segfault, thanks Alan!Maxime Chevalier-Boisvert
2022-08-29Port over newrangeMaxime Chevalier-Boisvert
2022-08-29Port over setlocal and getglobalMaxime Chevalier-Boisvert
2022-08-29Temporarily simplify code for emit_conditional_jump to fix a bugMaxime Chevalier-Boisvert
2022-08-29Refactor YJIT branches to use PosMarker ↵Maxime Chevalier-Boisvert
(https://github.com/Shopify/ruby/pull/333) * Refactor defer_compilation to use PosMarker * Port gen_direct_jump() to use PosMarker * Port gen_branch, branchunless * Port over gen_jump() * Port over branchif and branchnil * Fix use od record_boundary_patch_point in jump_to_next_insn
2022-08-29Update disasm to work on ARM (https://github.com/Shopify/ruby/pull/331)Noah Gibbs
2022-08-29Fix dupn (https://github.com/Shopify/ruby/pull/330)Noah Gibbs
* get_dupn was allocating and throwing away an Assembler object instead of using the one passed in * Uncomment remaining tests in codegen.rs, which seem to work now
2022-08-29Implement PosMarker instruction (https://github.com/Shopify/ruby/pull/328)Maxime Chevalier-Boisvert
* Implement PosMarker instruction * Implement PosMarker in the arm backend * Make bindgen run only for clang image * Fix if-else in cirrus CI file * Add missing semicolon * Try removing trailing semicolon * Try to fix shell/YAML syntax Co-authored-by: Alan Wu <XrXr@users.noreply.github.com>
2022-08-29A lot of fixes coming from our pairing session ↵Kevin Newton
(https://github.com/Shopify/ruby/pull/329) * Move to/from SP on AArch64 * Consolidate loads and stores * Implement LDR post-index and LDR pre-index for AArch64 * Implement STR post-index and STR pre-index for AArch64 * Module entrypoints for LDR pre/post -index and STR pre/post -index * Use STR (pre-index) and LDR (post-index) to implement push/pop * Go back to using MOV for to/from SP
2022-08-29Fix push/pop and frame setup/teardown with Kevin & AlanMaxime Chevalier-Boisvert
2022-08-29Fix some of the codegen.rs tests (https://github.com/Shopify/ruby/pull/327)Noah Gibbs
2022-08-29Assert not the same register in AArch64Kevin Newton
2022-08-29BLR instruction for AArch64 (https://github.com/Shopify/ruby/pull/325)Kevin Newton
2022-08-29Use frame_setup() and frame_teardown()Maxime Chevalier-Boisvert
2022-08-29AArch64 frames (https://github.com/Shopify/ruby/pull/324)Kevin Newton
2022-08-29ADR fixes for LeaLabel and callsMaxime Chevalier-Boisvert
2022-08-29Conditionals (https://github.com/Shopify/ruby/pull/323)Kevin Newton
* CSEL on AArch64 * Implement various Op::CSel* instructions
2022-08-29Port print_int to the new backend (https://github.com/Shopify/ruby/pull/321)Kevin Newton
* Port print_int to the new backend * Tests for print_int and print_str
2022-08-29Update cirrus workflowMaxime Chevalier-Boisvert
2022-08-29Fix jumps (https://github.com/Shopify/ruby/pull/322)Kevin Newton
2022-08-29Add --yjit-dump-insns test to Cirrus Arm workflowMaxime Chevalier-Boisvert
2022-08-29Fix bug with LeaLabel on x86, add CI testMaxime Chevalier-Boisvert
2022-08-29Fix comment typoMaxime Chevalier-Boisvert
2022-08-29Port print_str to new backend (https://github.com/Shopify/ruby/pull/318)Kevin Newton
* ADR and ADRP for AArch64 * Implement Op::Jbe on X86 * Lera instruction * Op::BakeString * LeaPC -> LeaLabel * Port print_str to the new backend * Port print_value to the new backend * Port print_ptr to the new backend * Write null-terminators in Op::BakeString * Fix up rebase issues on print-str port * Add back in panic for X86 backend for unsupported instructions being lowered * Fix target architecture
2022-08-29Port newhash, add tests for newhash, duphashMaxime Chevalier-Boisvert
2022-08-29Add extra assertion in new_label for KevinMaxime Chevalier-Boisvert
2022-08-29Exclude X0 (C_RET_REG) from allocatable registers on arm ↵Maxime Chevalier-Boisvert
(https://github.com/Shopify/ruby/pull/319) * Exclude X0 (C_RET_REG) from allocatable registers on arm * Add another small test snippett
2022-08-29Op::CPushAll and Op::CPopAll (https://github.com/Shopify/ruby/pull/317)Kevin Newton
Instructions for pushing all caller-save registers and the flags so that we can implement dump_insns.
2022-08-29Assert that the # of bytes matches for label refs ↵Kevin Newton
(https://github.com/Shopify/ruby/pull/316)