Add x64 lowering of Clif flt load instruction for new backend
Adds support for the clif flt load instruction.
This commit is contained in:
@@ -77,7 +77,7 @@ fn test_x64_emit() {
|
||||
let _w_xmm6 = Writable::<Reg>::from_reg(xmm6);
|
||||
let w_xmm7 = Writable::<Reg>::from_reg(xmm7);
|
||||
let w_xmm8 = Writable::<Reg>::from_reg(xmm8);
|
||||
let _w_xmm9 = Writable::<Reg>::from_reg(xmm9);
|
||||
let w_xmm9 = Writable::<Reg>::from_reg(xmm9);
|
||||
let w_xmm10 = Writable::<Reg>::from_reg(xmm10);
|
||||
let w_xmm11 = Writable::<Reg>::from_reg(xmm11);
|
||||
let w_xmm12 = Writable::<Reg>::from_reg(xmm12);
|
||||
@@ -2701,6 +2701,12 @@ fn test_x64_emit() {
|
||||
"movss %xmm15, 128(%r12)",
|
||||
));
|
||||
|
||||
insns.push((
|
||||
Inst::xmm_mov_rm_r(SseOpcode::Movd, RegMem::mem(Amode::imm_reg(2, r10)), w_xmm9),
|
||||
"66450F6E4A02",
|
||||
"movd 2(%r10), %xmm9",
|
||||
));
|
||||
|
||||
insns.push((
|
||||
Inst::xmm_rm_r(SseOpcode::Orps, RegMem::reg(xmm5), w_xmm4),
|
||||
"0F56E5",
|
||||
|
||||
@@ -513,7 +513,12 @@ fn lower_insn_to_regs<C: LowerCtx<I = Inst>>(ctx: &mut C, insn: IRInst) -> Codeg
|
||||
ctx.emit(Inst::movzx_rm_r(ext_mode.unwrap(), RegMem::mem(addr), dst))
|
||||
}
|
||||
}
|
||||
(_, true) => unimplemented!("FPU loads"),
|
||||
(_, true) => {
|
||||
ctx.emit(match elem_ty {
|
||||
F32 => Inst::xmm_mov_rm_r(SseOpcode::Movd, RegMem::mem(addr), dst),
|
||||
_ => unimplemented!("FP load not 32-bit"),
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user