fixes, rewrote liveness gen a bit

This commit is contained in:
Janis 2024-08-30 16:22:53 +02:00
parent 9f0e2c4a31
commit 70644ede3e
5 changed files with 803 additions and 464 deletions

View file

@ -314,6 +314,11 @@ impl Register {
[r12, r13, r14, r15, rbx]
};
pub const SYSV_SCRATCH_GPRS: [Register; 8] = {
use Register::*;
[rax, rsi, rdx, rcx, r8, r9, r10, r11]
};
pub const GPR: [Register; 14] = {
use Register::*;
[

View file

@ -1,6 +1,6 @@
use std::{io::Read, path::PathBuf};
use clap::{Arg, Command};
use clap::Command;
use compiler::{
lexer::Tokenizer,
parser::Tree,

1257
src/mir.rs

File diff suppressed because it is too large Load diff

View file

@ -82,6 +82,7 @@ impl Nodes {
self.push_tag(Tag::Undefined)
}
#[allow(dead_code)]
fn swap_nodes(&mut self, lhs: Node, rhs: Node) {
self.inner.swap(lhs.get() as usize, rhs.get() as usize);
}

View file

@ -1,7 +1,7 @@
fn inverse_sqrt(n: f32) -> f32 {
let x = n;
var i = *(&x as *i32);
i = 0x5f3759dfi32 - (i >> 1u8);
i = 0x5f3759dfi32 - (i >> 1);
let y = *(&i as *f32);
y * (1.5f32 - (x * 0.5f32 * y * y))
}