mirror of
https://github.com/mii443/wasmer.git
synced 2025-12-08 05:38:19 +00:00
fixed lint
This commit is contained in:
@@ -1,5 +1,7 @@
|
||||
use crate::address_map::get_function_address_map;
|
||||
use crate::{common_decl::*, config::Singlepass, emitter_x64::*, machine_x64::Machine, x64_decl::*};
|
||||
use crate::{
|
||||
common_decl::*, config::Singlepass, emitter_x64::*, machine_x64::Machine, x64_decl::*,
|
||||
};
|
||||
use dynasmrt::{x64::Assembler, DynamicLabel};
|
||||
use smallvec::{smallvec, SmallVec};
|
||||
use std::collections::BTreeMap;
|
||||
@@ -639,7 +641,8 @@ impl<'a> FuncGen<'a> {
|
||||
}
|
||||
Location::Memory(_, _) | Location::GPR(_) => {
|
||||
op(self, src1, src2, tmp3);
|
||||
self.assembler.emit_mov(Size::S64, Location::SIMD(tmp3), dst);
|
||||
self.assembler
|
||||
.emit_mov(Size::S64, Location::SIMD(tmp3), dst);
|
||||
}
|
||||
_ => {
|
||||
return Err(CodegenError {
|
||||
@@ -2852,7 +2855,8 @@ impl<'a> FuncGen<'a> {
|
||||
.emit_vmovaps(XMMOrMemory::XMM(src1), XMMOrMemory::XMM(x));
|
||||
}
|
||||
Location::Memory(_, _) | Location::GPR(_) => {
|
||||
self.assembler.emit_mov(Size::S64, Location::SIMD(src1), ret);
|
||||
self.assembler
|
||||
.emit_mov(Size::S64, Location::SIMD(src1), ret);
|
||||
}
|
||||
_ => {
|
||||
return Err(CodegenError {
|
||||
@@ -3005,7 +3009,8 @@ impl<'a> FuncGen<'a> {
|
||||
.emit_vmovaps(XMMOrMemory::XMM(src1), XMMOrMemory::XMM(x));
|
||||
}
|
||||
Location::Memory(_, _) | Location::GPR(_) => {
|
||||
self.assembler.emit_mov(Size::S64, Location::SIMD(src1), ret);
|
||||
self.assembler
|
||||
.emit_mov(Size::S64, Location::SIMD(src1), ret);
|
||||
}
|
||||
_ => {
|
||||
return Err(CodegenError {
|
||||
@@ -3342,7 +3347,8 @@ impl<'a> FuncGen<'a> {
|
||||
.emit_vmovapd(XMMOrMemory::XMM(src1), XMMOrMemory::XMM(x));
|
||||
}
|
||||
Location::Memory(_, _) | Location::GPR(_) => {
|
||||
self.assembler.emit_mov(Size::S64, Location::SIMD(src1), ret);
|
||||
self.assembler
|
||||
.emit_mov(Size::S64, Location::SIMD(src1), ret);
|
||||
}
|
||||
_ => {
|
||||
return Err(CodegenError {
|
||||
@@ -3496,7 +3502,8 @@ impl<'a> FuncGen<'a> {
|
||||
.emit_vmovaps(XMMOrMemory::XMM(src1), XMMOrMemory::XMM(x));
|
||||
}
|
||||
Location::Memory(_, _) | Location::GPR(_) => {
|
||||
self.assembler.emit_mov(Size::S64, Location::SIMD(src1), ret);
|
||||
self.assembler
|
||||
.emit_mov(Size::S64, Location::SIMD(src1), ret);
|
||||
}
|
||||
_ => {
|
||||
return Err(CodegenError {
|
||||
@@ -3833,7 +3840,12 @@ impl<'a> FuncGen<'a> {
|
||||
|
||||
let tmp_out = self.machine.acquire_temp_gpr().unwrap();
|
||||
let tmp_in = self.machine.acquire_temp_xmm().unwrap();
|
||||
self.emit_relaxed_binop(Assembler::emit_mov, Size::S32, loc, Location::SIMD(tmp_in));
|
||||
self.emit_relaxed_binop(
|
||||
Assembler::emit_mov,
|
||||
Size::S32,
|
||||
loc,
|
||||
Location::SIMD(tmp_in),
|
||||
);
|
||||
self.emit_f32_int_conv_check_sat(
|
||||
tmp_in,
|
||||
GEF32_LT_U32_MIN,
|
||||
@@ -3931,7 +3943,12 @@ impl<'a> FuncGen<'a> {
|
||||
let tmp_out = self.machine.acquire_temp_gpr().unwrap();
|
||||
let tmp_in = self.machine.acquire_temp_xmm().unwrap();
|
||||
|
||||
self.emit_relaxed_binop(Assembler::emit_mov, Size::S32, loc, Location::SIMD(tmp_in));
|
||||
self.emit_relaxed_binop(
|
||||
Assembler::emit_mov,
|
||||
Size::S32,
|
||||
loc,
|
||||
Location::SIMD(tmp_in),
|
||||
);
|
||||
self.emit_f32_int_conv_check_sat(
|
||||
tmp_in,
|
||||
GEF32_LT_I32_MIN,
|
||||
@@ -4035,7 +4052,12 @@ impl<'a> FuncGen<'a> {
|
||||
let tmp_out = self.machine.acquire_temp_gpr().unwrap();
|
||||
let tmp_in = self.machine.acquire_temp_xmm().unwrap();
|
||||
|
||||
self.emit_relaxed_binop(Assembler::emit_mov, Size::S32, loc, Location::SIMD(tmp_in));
|
||||
self.emit_relaxed_binop(
|
||||
Assembler::emit_mov,
|
||||
Size::S32,
|
||||
loc,
|
||||
Location::SIMD(tmp_in),
|
||||
);
|
||||
self.emit_f32_int_conv_check_sat(
|
||||
tmp_in,
|
||||
GEF32_LT_I64_MIN,
|
||||
@@ -4172,7 +4194,12 @@ impl<'a> FuncGen<'a> {
|
||||
let tmp_out = self.machine.acquire_temp_gpr().unwrap();
|
||||
let tmp_in = self.machine.acquire_temp_xmm().unwrap();
|
||||
|
||||
self.emit_relaxed_binop(Assembler::emit_mov, Size::S32, loc, Location::SIMD(tmp_in));
|
||||
self.emit_relaxed_binop(
|
||||
Assembler::emit_mov,
|
||||
Size::S32,
|
||||
loc,
|
||||
Location::SIMD(tmp_in),
|
||||
);
|
||||
self.emit_f32_int_conv_check_sat(
|
||||
tmp_in,
|
||||
GEF32_LT_U64_MIN,
|
||||
@@ -4311,7 +4338,12 @@ impl<'a> FuncGen<'a> {
|
||||
let tmp_out = self.machine.acquire_temp_gpr().unwrap();
|
||||
let tmp_in = self.machine.acquire_temp_xmm().unwrap();
|
||||
|
||||
self.emit_relaxed_binop(Assembler::emit_mov, Size::S64, loc, Location::SIMD(tmp_in));
|
||||
self.emit_relaxed_binop(
|
||||
Assembler::emit_mov,
|
||||
Size::S64,
|
||||
loc,
|
||||
Location::SIMD(tmp_in),
|
||||
);
|
||||
self.emit_f64_int_conv_check_sat(
|
||||
tmp_in,
|
||||
GEF64_LT_U32_MIN,
|
||||
@@ -4546,7 +4578,12 @@ impl<'a> FuncGen<'a> {
|
||||
let tmp_out = self.machine.acquire_temp_gpr().unwrap();
|
||||
let tmp_in = self.machine.acquire_temp_xmm().unwrap();
|
||||
|
||||
self.emit_relaxed_binop(Assembler::emit_mov, Size::S64, loc, Location::SIMD(tmp_in));
|
||||
self.emit_relaxed_binop(
|
||||
Assembler::emit_mov,
|
||||
Size::S64,
|
||||
loc,
|
||||
Location::SIMD(tmp_in),
|
||||
);
|
||||
self.emit_f64_int_conv_check_sat(
|
||||
tmp_in,
|
||||
GEF64_LT_I64_MIN,
|
||||
@@ -4684,7 +4721,12 @@ impl<'a> FuncGen<'a> {
|
||||
let tmp_out = self.machine.acquire_temp_gpr().unwrap();
|
||||
let tmp_in = self.machine.acquire_temp_xmm().unwrap();
|
||||
|
||||
self.emit_relaxed_binop(Assembler::emit_mov, Size::S64, loc, Location::SIMD(tmp_in));
|
||||
self.emit_relaxed_binop(
|
||||
Assembler::emit_mov,
|
||||
Size::S64,
|
||||
loc,
|
||||
Location::SIMD(tmp_in),
|
||||
);
|
||||
self.emit_f64_int_conv_check_sat(
|
||||
tmp_in,
|
||||
GEF64_LT_U64_MIN,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
pub use crate::x64_decl::{GPR, XMM};
|
||||
pub use crate::location::Multiplier;
|
||||
use crate::location::Location as AbstractLocation;
|
||||
pub use crate::location::Multiplier;
|
||||
pub use crate::x64_decl::{GPR, XMM};
|
||||
use dynasm::dynasm;
|
||||
use dynasmrt::{
|
||||
x64::X64Relocation, AssemblyOffset, DynamicLabel, DynasmApi, DynasmLabelApi, VecAssembler,
|
||||
@@ -34,7 +34,6 @@ macro_rules! dynasm {
|
||||
// MemoryAddTriple(GPR, GPR, i32),
|
||||
//}
|
||||
|
||||
|
||||
pub type Location = AbstractLocation<GPR, XMM>;
|
||||
|
||||
#[derive(Copy, Clone, Debug, Eq, PartialEq)]
|
||||
@@ -814,19 +813,35 @@ impl Emitter for Assembler {
|
||||
(Size::S32, Location::Memory2(src1, src2, mult, disp), Location::GPR(dst)) => {
|
||||
match mult {
|
||||
Multiplier::Zero => dynasm!(self ; lea Rd(dst as u8), [Rq(src1 as u8) + disp]),
|
||||
Multiplier::One => dynasm!(self ; lea Rd(dst as u8), [Rq(src1 as u8) + Rq(src2 as u8) + disp]),
|
||||
Multiplier::Two => dynasm!(self ; lea Rd(dst as u8), [Rq(src1 as u8) + Rq(src2 as u8) * 2 + disp]),
|
||||
Multiplier::Four => dynasm!(self ; lea Rd(dst as u8), [Rq(src1 as u8) + Rq(src2 as u8) * 4 + disp]),
|
||||
Multiplier::Height => dynasm!(self ; lea Rd(dst as u8), [Rq(src1 as u8) + Rq(src2 as u8) * 8 + disp]),
|
||||
Multiplier::One => {
|
||||
dynasm!(self ; lea Rd(dst as u8), [Rq(src1 as u8) + Rq(src2 as u8) + disp])
|
||||
}
|
||||
Multiplier::Two => {
|
||||
dynasm!(self ; lea Rd(dst as u8), [Rq(src1 as u8) + Rq(src2 as u8) * 2 + disp])
|
||||
}
|
||||
Multiplier::Four => {
|
||||
dynasm!(self ; lea Rd(dst as u8), [Rq(src1 as u8) + Rq(src2 as u8) * 4 + disp])
|
||||
}
|
||||
Multiplier::Height => {
|
||||
dynasm!(self ; lea Rd(dst as u8), [Rq(src1 as u8) + Rq(src2 as u8) * 8 + disp])
|
||||
}
|
||||
};
|
||||
}
|
||||
(Size::S64, Location::Memory2(src1, src2, mult, disp), Location::GPR(dst)) => {
|
||||
match mult {
|
||||
Multiplier::Zero => dynasm!(self ; lea Rq(dst as u8), [Rq(src1 as u8) + disp]),
|
||||
Multiplier::One => dynasm!(self ; lea Rq(dst as u8), [Rq(src1 as u8) + Rq(src2 as u8) + disp]),
|
||||
Multiplier::Two => dynasm!(self ; lea Rq(dst as u8), [Rq(src1 as u8) + Rq(src2 as u8) * 2 + disp]),
|
||||
Multiplier::Four => dynasm!(self ; lea Rq(dst as u8), [Rq(src1 as u8) + Rq(src2 as u8) * 4 + disp]),
|
||||
Multiplier::Height => dynasm!(self ; lea Rq(dst as u8), [Rq(src1 as u8) + Rq(src2 as u8) * 8 + disp]),
|
||||
Multiplier::One => {
|
||||
dynasm!(self ; lea Rq(dst as u8), [Rq(src1 as u8) + Rq(src2 as u8) + disp])
|
||||
}
|
||||
Multiplier::Two => {
|
||||
dynasm!(self ; lea Rq(dst as u8), [Rq(src1 as u8) + Rq(src2 as u8) * 2 + disp])
|
||||
}
|
||||
Multiplier::Four => {
|
||||
dynasm!(self ; lea Rq(dst as u8), [Rq(src1 as u8) + Rq(src2 as u8) * 4 + disp])
|
||||
}
|
||||
Multiplier::Height => {
|
||||
dynasm!(self ; lea Rq(dst as u8), [Rq(src1 as u8) + Rq(src2 as u8) * 8 + disp])
|
||||
}
|
||||
};
|
||||
}
|
||||
_ => panic!("singlepass can't emit LEA {:?} {:?} {:?}", sz, src, dst),
|
||||
|
||||
@@ -14,10 +14,10 @@ mod common_decl;
|
||||
mod compiler;
|
||||
mod config;
|
||||
mod emitter_x64;
|
||||
mod location;
|
||||
mod machine;
|
||||
mod machine_x64;
|
||||
mod x64_decl;
|
||||
mod location;
|
||||
|
||||
pub use crate::compiler::SinglepassCompiler;
|
||||
pub use crate::config::Singlepass;
|
||||
|
||||
@@ -1,6 +1,4 @@
|
||||
|
||||
#[allow(dead_code)]
|
||||
|
||||
#[derive(Clone, PartialEq)]
|
||||
pub enum Value {
|
||||
I8(i8),
|
||||
@@ -16,4 +14,3 @@ pub trait MaybeImmediate {
|
||||
self.imm_value().is_some()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -94,8 +94,8 @@ impl AbstractReg for GPR {
|
||||
impl AbstractReg for XMM {
|
||||
fn is_callee_save(self) -> bool {
|
||||
const IS_CALLEE_SAVE: [bool; 16] = [
|
||||
false, false, false, false, false, false, false, false,
|
||||
true, true, true, true, true, true, true, true,
|
||||
false, false, false, false, false, false, false, false, true, true, true, true, true,
|
||||
true, true, true,
|
||||
];
|
||||
IS_CALLEE_SAVE[self as usize]
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user