ISLE: use lower_to_amode inside sink_load implementation
This commit is contained in:
@@ -8,13 +8,12 @@ use super::{
|
||||
is_mergeable_load, lower_to_amode, AluRmiROpcode, Inst as MInst, OperandSize, Reg, RegMemImm,
|
||||
Writable,
|
||||
};
|
||||
use crate::isa::x64::inst::args::SyntheticAmode;
|
||||
use crate::isa::x64::settings as x64_settings;
|
||||
use crate::{
|
||||
ir::{immediates::*, types::*, Inst, InstructionData, Opcode, Value, ValueList},
|
||||
isa::x64::inst::{
|
||||
args::{
|
||||
Amode, Avx512Opcode, CmpOpcode, ExtMode, Imm8Reg, RegMem, ShiftKind, SseOpcode, CC,
|
||||
},
|
||||
args::{Avx512Opcode, CmpOpcode, ExtMode, Imm8Reg, RegMem, ShiftKind, SseOpcode, CC},
|
||||
x64_map_regs, RegMapper,
|
||||
},
|
||||
machinst::{get_output_reg, InsnInput, InsnOutput, LowerCtx},
|
||||
@@ -369,22 +368,9 @@ where
|
||||
|
||||
fn sink_load(&mut self, load: &SinkableLoad) -> RegMemImm {
|
||||
self.lower_ctx.sink_inst(load.inst);
|
||||
|
||||
let flags = self
|
||||
.lower_ctx
|
||||
.memflags(load.inst)
|
||||
.expect("sinkable loads should have memflags");
|
||||
|
||||
let base = self
|
||||
.lower_ctx
|
||||
.put_input_in_regs(load.addr_input.insn, load.addr_input.input)
|
||||
.only_reg()
|
||||
.unwrap();
|
||||
|
||||
let addr = lower_to_amode(self.lower_ctx, load.addr_input, load.offset);
|
||||
RegMemImm::Mem {
|
||||
addr: Amode::imm_reg(load.offset as u32, base)
|
||||
.with_flags(flags)
|
||||
.into(),
|
||||
addr: SyntheticAmode::Real(addr),
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user