Add support for packed float to signed int conversion
Implements i32x4.trunc_sat_f32x4_s
This commit is contained in:
@@ -371,6 +371,7 @@ pub enum SseOpcode {
|
||||
Cvtsi2sd,
|
||||
Cvtss2si,
|
||||
Cvtss2sd,
|
||||
Cvttps2dq,
|
||||
Cvttss2si,
|
||||
Cvttsd2si,
|
||||
Divps,
|
||||
@@ -535,6 +536,7 @@ impl SseOpcode {
|
||||
| SseOpcode::Cvtsd2si
|
||||
| SseOpcode::Cvtsi2sd
|
||||
| SseOpcode::Cvtss2sd
|
||||
| SseOpcode::Cvttps2dq
|
||||
| SseOpcode::Cvttsd2si
|
||||
| SseOpcode::Divpd
|
||||
| SseOpcode::Divsd
|
||||
@@ -662,6 +664,7 @@ impl fmt::Debug for SseOpcode {
|
||||
SseOpcode::Cvtsi2sd => "cvtsi2sd",
|
||||
SseOpcode::Cvtss2si => "cvtss2si",
|
||||
SseOpcode::Cvtss2sd => "cvtss2sd",
|
||||
SseOpcode::Cvttps2dq => "cvttps2dq",
|
||||
SseOpcode::Cvttss2si => "cvttss2si",
|
||||
SseOpcode::Cvttsd2si => "cvttsd2si",
|
||||
SseOpcode::Divps => "divps",
|
||||
|
||||
@@ -1740,6 +1740,7 @@ pub(crate) fn emit(
|
||||
SseOpcode::Andpd => (LegacyPrefixes::_66, 0x0F54, 2),
|
||||
SseOpcode::Andnps => (LegacyPrefixes::None, 0x0F55, 2),
|
||||
SseOpcode::Andnpd => (LegacyPrefixes::_66, 0x0F55, 2),
|
||||
SseOpcode::Cvttps2dq => (LegacyPrefixes::_F3, 0x0F5B, 2),
|
||||
SseOpcode::Cvtdq2ps => (LegacyPrefixes::None, 0x0F5B, 2),
|
||||
SseOpcode::Divps => (LegacyPrefixes::None, 0x0F5E, 2),
|
||||
SseOpcode::Divpd => (LegacyPrefixes::_66, 0x0F5E, 2),
|
||||
|
||||
@@ -3300,6 +3300,12 @@ fn test_x64_emit() {
|
||||
"cvtdq2ps %xmm1, %xmm8",
|
||||
));
|
||||
|
||||
insns.push((
|
||||
Inst::xmm_rm_r(SseOpcode::Cvttps2dq, RegMem::reg(xmm9), w_xmm8),
|
||||
"F3450F5BC1",
|
||||
"cvttps2dq %xmm9, %xmm8",
|
||||
));
|
||||
|
||||
// XMM_Mov_R_M: float stores
|
||||
insns.push((
|
||||
Inst::xmm_mov_r_m(SseOpcode::Movss, xmm15, Amode::imm_reg(128, r12), None),
|
||||
|
||||
Reference in New Issue
Block a user