From 3f6afd94b3c4d869c0d528d40aed57cc6655a2b4 Mon Sep 17 00:00:00 2001 From: jonathan Date: Sun, 21 Apr 2024 22:09:30 +0200 Subject: [PATCH] Fmt --- compiler/src/passes/conclude/conclude.rs | 7 +-- compiler/src/passes/emit/binary.rs | 49 +++++++++--------- compiler/src/passes/emit/push_pop.rs | 3 +- compiler/src/passes/select/macros.rs | 48 +++-------------- compiler/src/passes/select/mod.rs | 1 - compiler/src/passes/validate/mod.rs | 2 +- compiler/src/passes/validate/resolve.rs | 51 ++++--------------- compiler/src/passes/validate/uniquify/expr.rs | 42 +++------------ 8 files changed, 53 insertions(+), 150 deletions(-) diff --git a/compiler/src/passes/conclude/conclude.rs b/compiler/src/passes/conclude/conclude.rs index 1caa343..4b669f2 100644 --- a/compiler/src/passes/conclude/conclude.rs +++ b/compiler/src/passes/conclude/conclude.rs @@ -6,7 +6,6 @@ use crate::utils::unique_sym::gen_sym; use crate::*; use std::collections::HashMap; - impl<'p> X86Patched<'p> { #[must_use] pub fn conclude(self) -> X86Concluded<'p> { @@ -63,12 +62,10 @@ fn fix_stack_space(block: &mut Block, stack_space: usize) { for instr in &mut block.instrs { match instr { InstrAssigned::Add { - src: Arg::Imm(val), - .. + src: Arg::Imm(val), .. } | InstrAssigned::Sub { - src: Arg::Imm(val), - .. + src: Arg::Imm(val), .. } => { assert_eq!(*val, 0x1000); *val = stack_space as i32; diff --git a/compiler/src/passes/emit/binary.rs b/compiler/src/passes/emit/binary.rs index d155581..4c2e577 100644 --- a/compiler/src/passes/emit/binary.rs +++ b/compiler/src/passes/emit/binary.rs @@ -106,35 +106,32 @@ pub fn encode_binary_instr(op_info: BinaryOpInfo, src: &Arg, dst: &Arg) -> Vec { - let (d, ddd) = encode_reg(dst); - - let mut v = vec![ - 0b0100_1000 | d, - op_info.i_rm, - 0b11_000_000 | op_info.pad << 3 | ddd, - ]; - v.extend(imm.to_le_bytes()); - v + let (d, ddd) = encode_reg(dst); - }, + let mut v = vec![ + 0b0100_1000 | d, + op_info.i_rm, + 0b11_000_000 | op_info.pad << 3 | ddd, + ]; + v.extend(imm.to_le_bytes()); + v + } (Arg::Imm(imm), Arg::Deref { reg: dst, off }) => { + let (d, ddd) = encode_reg(dst); + let off = *off as i32; - let (d, ddd) = encode_reg(dst); - let off = *off as i32; - - let mut v = vec![ - 0b0100_1000 | d, - op_info.i_rm, - 0b10_000_000 | op_info.pad << 3 | ddd, - ]; - if matches!(dst, Reg::RSP | Reg::R12) { - v.push(0x24); - } - v.extend(off.to_le_bytes()); - v.extend(imm.to_le_bytes()); - v - - }, + let mut v = vec![ + 0b0100_1000 | d, + op_info.i_rm, + 0b10_000_000 | op_info.pad << 3 | ddd, + ]; + if matches!(dst, Reg::RSP | Reg::R12) { + v.push(0x24); + } + v.extend(off.to_le_bytes()); + v.extend(imm.to_le_bytes()); + v + } (Arg::Deref { .. }, Arg::Deref { .. }) => { unreachable!("Found binary instruction with 2 derefs."); } diff --git a/compiler/src/passes/emit/push_pop.rs b/compiler/src/passes/emit/push_pop.rs index 269c3cf..b427e77 100644 --- a/compiler/src/passes/emit/push_pop.rs +++ b/compiler/src/passes/emit/push_pop.rs @@ -1,7 +1,6 @@ use crate::passes::assign::Arg; use crate::passes::emit; - pub struct PushPopInfo { pub op_reg: u8, pub op_deref: u8, @@ -29,7 +28,7 @@ pub fn encode_push_pop(op_info: PushPopInfo, reg: &Arg) -> Vec { let mut v = vec![op_info.op_imm]; v.extend(val.to_le_bytes()); v - }, + } Arg::Reg(reg) => { let (r, rrr) = emit::encode_reg(reg); if r == 0 { diff --git a/compiler/src/passes/select/macros.rs b/compiler/src/passes/select/macros.rs index dfdb9f8..845c7ee 100644 --- a/compiler/src/passes/select/macros.rs +++ b/compiler/src/passes/select/macros.rs @@ -11,7 +11,6 @@ macro_rules! add { $crate::passes::select::Instr::Add { src: $src, dst: $dst, - } }; } @@ -22,7 +21,6 @@ macro_rules! sub { $crate::passes::select::Instr::Sub { src: $src, dst: $dst, - } }; } @@ -30,50 +28,35 @@ macro_rules! sub { #[macro_export] macro_rules! div { ($divisor:expr) => { - $crate::passes::select::Instr::Div { - divisor: $divisor, - - } + $crate::passes::select::Instr::Div { divisor: $divisor } }; } #[macro_export] macro_rules! idiv { ($divisor:expr) => { - $crate::passes::select::Instr::IDiv { - divisor: $divisor, - - } + $crate::passes::select::Instr::IDiv { divisor: $divisor } }; } #[macro_export] macro_rules! mul { ($src:expr) => { - $crate::passes::select::Instr::Mul { - src: $src, - - } + $crate::passes::select::Instr::Mul { src: $src } }; } #[macro_export] macro_rules! imul { ($src:expr) => { - $crate::passes::select::Instr::IMul { - src: $src, - - } + $crate::passes::select::Instr::IMul { src: $src } }; } #[macro_export] macro_rules! neg { ($dst:expr) => { - $crate::passes::select::Instr::Neg { - dst: $dst, - - } + $crate::passes::select::Instr::Neg { dst: $dst } }; } @@ -83,7 +66,6 @@ macro_rules! mov { $crate::passes::select::Instr::Mov { src: $src, dst: $dst, - } }; } @@ -94,7 +76,6 @@ macro_rules! movsx { $crate::passes::select::Instr::MovSX { src: $src, dst: $dst, - } }; } @@ -102,20 +83,14 @@ macro_rules! movsx { #[macro_export] macro_rules! push { ($src:expr) => { - $crate::passes::select::Instr::Push { - src: $src, - - } + $crate::passes::select::Instr::Push { src: $src } }; } #[macro_export] macro_rules! pop { ($dst:expr) => { - $crate::passes::select::Instr::Pop { - dst: $dst, - - } + $crate::passes::select::Instr::Pop { dst: $dst } }; } @@ -139,7 +114,6 @@ macro_rules! cmp { $crate::passes::select::Instr::Cmp { src: $src, dst: $dst, - } }; } @@ -167,7 +141,6 @@ macro_rules! and { $crate::passes::select::Instr::And { src: $src, dst: $dst, - } }; } @@ -178,7 +151,6 @@ macro_rules! or { $crate::passes::select::Instr::Or { src: $src, dst: $dst, - } }; } @@ -189,7 +161,6 @@ macro_rules! xor { $crate::passes::select::Instr::Xor { src: $src, dst: $dst, - } }; } @@ -197,10 +168,7 @@ macro_rules! xor { #[macro_export] macro_rules! not { ($dst:expr) => { - $crate::passes::select::Instr::Not { - dst: $dst, - - } + $crate::passes::select::Instr::Not { dst: $dst } }; } diff --git a/compiler/src/passes/select/mod.rs b/compiler/src/passes/select/mod.rs index 592b374..adf356b 100644 --- a/compiler/src/passes/select/mod.rs +++ b/compiler/src/passes/select/mod.rs @@ -2,7 +2,6 @@ mod display; pub mod macros; pub mod select; - use crate::utils::unique_sym::UniqueSym; use derive_more::Display; use functor_derive::Functor; diff --git a/compiler/src/passes/validate/mod.rs b/compiler/src/passes/validate/mod.rs index 8297c8b..d46f297 100644 --- a/compiler/src/passes/validate/mod.rs +++ b/compiler/src/passes/validate/mod.rs @@ -47,4 +47,4 @@ pub type InstrUniquified<'p> = Instr>>, Spanned( Lit::Int(val) => match &typ { Some(typ) => { let int = match typ { - Type::Int(_int) => resolve_int_lit( - val, - expr.meta.span, - i64::from_str_radix, - )?, + Type::Int(_int) => { + resolve_int_lit(val, expr.meta.span, i64::from_str_radix)? + } // match int { // IntType::I8 => todo!(), // IntType::U8 => Int::U8({ @@ -326,71 +324,44 @@ pub fn resolve_instr<'p>( InstrUniquified::Sub { src, dst } => InstrSelected::Sub { src: map(src), dst: map(dst), - }, InstrUniquified::Div { divisor } => InstrSelected::Div { divisor: map(divisor), - }, InstrUniquified::IDiv { divisor } => InstrSelected::IDiv { divisor: map(divisor), - - }, - InstrUniquified::Mul { src } => InstrSelected::Mul { - src: map(src), - - }, - InstrUniquified::IMul { src } => InstrSelected::IMul { - src: map(src), - - }, - InstrUniquified::Neg { dst } => InstrSelected::Neg { - dst: map(dst), - }, + InstrUniquified::Mul { src } => InstrSelected::Mul { src: map(src) }, + InstrUniquified::IMul { src } => InstrSelected::IMul { src: map(src) }, + InstrUniquified::Neg { dst } => InstrSelected::Neg { dst: map(dst) }, InstrUniquified::Mov { src, dst } => InstrSelected::Mov { src: map(src), dst: map(dst), - }, InstrUniquified::MovSX { src, dst } => InstrSelected::MovSX { src: map(src), dst: map(dst), - - }, - InstrUniquified::Push { src } => InstrSelected::Push { - src: map(src), - - }, - InstrUniquified::Pop { dst } => InstrSelected::Pop { - dst: map(dst), - }, + InstrUniquified::Push { src } => InstrSelected::Push { src: map(src) }, + InstrUniquified::Pop { dst } => InstrSelected::Pop { dst: map(dst) }, InstrUniquified::Syscall { arity } => InstrSelected::Syscall { arity }, InstrUniquified::Cmp { src, dst } => InstrSelected::Cmp { src: map(src), dst: map(dst), - }, InstrUniquified::And { src, dst } => InstrSelected::And { src: map(src), dst: map(dst), - }, InstrUniquified::Or { src, dst } => InstrSelected::Or { src: map(src), dst: map(dst), - }, InstrUniquified::Xor { src, dst } => InstrSelected::Xor { src: map(src), dst: map(dst), - - }, - InstrUniquified::Not { dst } => InstrSelected::Not { - dst: map(dst), - }, + InstrUniquified::Not { dst } => InstrSelected::Not { dst: map(dst) }, InstrUniquified::Setcc { .. } | InstrUniquified::Ret { .. } | InstrUniquified::Jmp { .. } diff --git a/compiler/src/passes/validate/uniquify/expr.rs b/compiler/src/passes/validate/uniquify/expr.rs index d31d6bc..b350501 100644 --- a/compiler/src/passes/validate/uniquify/expr.rs +++ b/compiler/src/passes/validate/uniquify/expr.rs @@ -124,84 +124,56 @@ fn uniquify_instr<'p>( InstrParsed::Add { src, dst } => InstrUniquified::Add { src: map(src)?, dst: map(dst)?, - }, InstrParsed::Sub { src, dst } => InstrUniquified::Sub { src: map(src)?, dst: map(dst)?, - }, InstrParsed::Div { divisor } => InstrUniquified::Div { divisor: map(divisor)?, - }, InstrParsed::IDiv { divisor } => InstrUniquified::IDiv { divisor: map(divisor)?, - - }, - InstrParsed::Mul { src } => InstrUniquified::Mul { - src: map(src)?, - - }, - InstrParsed::IMul { src } => InstrUniquified::IMul { - src: map(src)?, - - }, - InstrParsed::Neg { dst } => InstrUniquified::Neg { - dst: map(dst)?, - }, + InstrParsed::Mul { src } => InstrUniquified::Mul { src: map(src)? }, + InstrParsed::IMul { src } => InstrUniquified::IMul { src: map(src)? }, + InstrParsed::Neg { dst } => InstrUniquified::Neg { dst: map(dst)? }, InstrParsed::Mov { src, dst } => InstrUniquified::Mov { src: map(src)?, dst: map(dst)?, - }, InstrParsed::MovSX { src, dst } => InstrUniquified::MovSX { src: map(src)?, dst: map(dst)?, - - }, - InstrParsed::Push { src } => InstrUniquified::Push { - src: map(src)?, - - }, - InstrParsed::Pop { dst } => InstrUniquified::Pop { - dst: map(dst)?, - }, + InstrParsed::Push { src } => InstrUniquified::Push { src: map(src)? }, + InstrParsed::Pop { dst } => InstrUniquified::Pop { dst: map(dst)? }, InstrParsed::Syscall { arity } => InstrUniquified::Syscall { arity }, InstrParsed::Cmp { src, dst } => InstrUniquified::Cmp { src: map(src)?, dst: map(dst)?, - }, InstrParsed::And { src, dst } => InstrUniquified::And { src: map(src)?, dst: map(dst)?, - }, InstrParsed::Or { src, dst } => InstrUniquified::Or { src: map(src)?, dst: map(dst)?, - }, InstrParsed::Xor { src, dst } => InstrUniquified::Xor { src: map(src)?, dst: map(dst)?, - - }, - InstrParsed::Not { dst } => InstrUniquified::Not { - dst: map(dst)?, - }, + InstrParsed::Not { dst } => InstrUniquified::Not { dst: map(dst)? }, InstrParsed::Setcc { .. } | InstrParsed::Ret { .. } | InstrParsed::Jmp { .. } | InstrParsed::Jcc { .. } | InstrParsed::LoadLbl { .. } | InstrParsed::CallDirect { .. } - | InstrParsed::CallIndirect {.. } => unreachable!(), + | InstrParsed::CallIndirect { .. } => unreachable!(), }; Ok(instr)