cranelift: Rework pinned register lowering (#5249)
Rework pinned register lowering to avoid the use of pinned virtual registers, instead using the MovFromPReg and MovToPReg pseudo instructions.
This commit is contained in:
@@ -640,6 +640,11 @@ impl Context for IsleContext<'_, '_, MInst, Flags, IsaFlags, 6> {
|
||||
regs::rsp().to_real_reg().unwrap().into()
|
||||
}
|
||||
|
||||
#[inline]
|
||||
fn preg_pinned(&mut self) -> PReg {
|
||||
regs::pinned_reg().to_real_reg().unwrap().into()
|
||||
}
|
||||
|
||||
fn libcall_1(&mut self, libcall: &LibCall, a: Reg) -> Reg {
|
||||
let call_conv = self.lower_ctx.abi().call_conv(self.lower_ctx.sigs());
|
||||
let ret_ty = libcall.signature(call_conv).returns[0].value_type;
|
||||
@@ -769,11 +774,6 @@ impl Context for IsleContext<'_, '_, MInst, Flags, IsaFlags, 6> {
|
||||
.use_constant(VCodeConstantData::WellKnown(&UMAX_MASK))
|
||||
}
|
||||
|
||||
#[inline]
|
||||
fn pinned_writable_gpr(&mut self) -> WritableGpr {
|
||||
Writable::from_reg(Gpr::new(regs::pinned_reg()).unwrap())
|
||||
}
|
||||
|
||||
#[inline]
|
||||
fn shuffle_0_31_mask(&mut self, mask: &VecMask) -> VCodeConstant {
|
||||
let mask = mask
|
||||
|
||||
Reference in New Issue
Block a user