Cranelift AArch64: Migrate Splat to ISLE (#4521)
Copyright (c) 2022, Arm Limited.
This commit is contained in:
@@ -11,7 +11,9 @@ pub use crate::ir::{
|
||||
SigRef, StackSlot,
|
||||
};
|
||||
pub use crate::isa::unwind::UnwindInst;
|
||||
pub use crate::machinst::{ABIArg, ABIArgSlot, ABISig, RealReg, Reg, RelocDistance, Writable};
|
||||
pub use crate::machinst::{
|
||||
ABIArg, ABIArgSlot, ABISig, InputSourceInst, RealReg, Reg, RelocDistance, Writable,
|
||||
};
|
||||
|
||||
pub type Unit = ();
|
||||
pub type ValueSlice = (ValueList, usize);
|
||||
@@ -425,6 +427,15 @@ macro_rules! isle_prelude_methods {
|
||||
imm.bits() as u64
|
||||
}
|
||||
|
||||
#[inline]
|
||||
fn u64_from_bool(&mut self, b: bool) -> u64 {
|
||||
if b {
|
||||
u64::MAX
|
||||
} else {
|
||||
0
|
||||
}
|
||||
}
|
||||
|
||||
#[inline]
|
||||
fn inst_results(&mut self, inst: Inst) -> ValueSlice {
|
||||
(self.lower_ctx.dfg().inst_results_list(inst), 0)
|
||||
@@ -854,6 +865,21 @@ macro_rules! isle_prelude_methods {
|
||||
fn real_reg_to_writable_reg(&mut self, reg: RealReg) -> WritableReg {
|
||||
Writable::from_reg(Reg::from(reg))
|
||||
}
|
||||
|
||||
fn is_sinkable_inst(&mut self, val: Value) -> Option<Inst> {
|
||||
let input = self.lower_ctx.get_value_as_source_or_const(val);
|
||||
|
||||
if let InputSourceInst::UniqueUse(inst, _) = input.inst {
|
||||
Some(inst)
|
||||
} else {
|
||||
None
|
||||
}
|
||||
}
|
||||
|
||||
#[inline]
|
||||
fn sink_inst(&mut self, inst: Inst) {
|
||||
self.lower_ctx.sink_inst(inst);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user