Add encoding for x86 CVTTPS2DQ
This reuses the `x86_cvtt2si` instruction since the packed and scalar versions seem to group together well.
This commit is contained in:
@@ -1635,6 +1635,7 @@ fn define_simd(
|
|||||||
let usub_sat = shared.by_name("usub_sat");
|
let usub_sat = shared.by_name("usub_sat");
|
||||||
let vconst = shared.by_name("vconst");
|
let vconst = shared.by_name("vconst");
|
||||||
let vselect = shared.by_name("vselect");
|
let vselect = shared.by_name("vselect");
|
||||||
|
let x86_cvtt2si = x86.by_name("x86_cvtt2si");
|
||||||
let x86_insertps = x86.by_name("x86_insertps");
|
let x86_insertps = x86.by_name("x86_insertps");
|
||||||
let x86_movlhps = x86.by_name("x86_movlhps");
|
let x86_movlhps = x86.by_name("x86_movlhps");
|
||||||
let x86_movsd = x86.by_name("x86_movsd");
|
let x86_movsd = x86.by_name("x86_movsd");
|
||||||
@@ -1902,6 +1903,13 @@ fn define_simd(
|
|||||||
rec_evex_reg_rm_128.opcodes(&VCVTUDQ2PS),
|
rec_evex_reg_rm_128.opcodes(&VCVTUDQ2PS),
|
||||||
Some(use_avx512vl_simd), // TODO need an OR predicate to join with AVX512F
|
Some(use_avx512vl_simd), // TODO need an OR predicate to join with AVX512F
|
||||||
);
|
);
|
||||||
|
|
||||||
|
e.enc_both_inferred(
|
||||||
|
x86_cvtt2si
|
||||||
|
.bind(vector(I32, sse_vector_size))
|
||||||
|
.bind(vector(F32, sse_vector_size)),
|
||||||
|
rec_furm.opcodes(&CVTTPS2DQ),
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
// SIMD vconst for special cases (all zeroes, all ones)
|
// SIMD vconst for special cases (all zeroes, all ones)
|
||||||
|
|||||||
@@ -103,6 +103,10 @@ pub static CVTSI2SS: [u8; 3] = [0xf3, 0x0f, 0x2a];
|
|||||||
/// float-point value.
|
/// float-point value.
|
||||||
pub static CVTSS2SD: [u8; 3] = [0xf3, 0x0f, 0x5a];
|
pub static CVTSS2SD: [u8; 3] = [0xf3, 0x0f, 0x5a];
|
||||||
|
|
||||||
|
/// Convert four packed single-precision floating-point values from xmm2/mem to four packed signed
|
||||||
|
/// doubleword values in xmm1 using truncation (SSE2).
|
||||||
|
pub static CVTTPS2DQ: [u8; 3] = [0xf3, 0x0f, 0x5b];
|
||||||
|
|
||||||
/// Convert with truncation scalar double-precision floating-point value to signed
|
/// Convert with truncation scalar double-precision floating-point value to signed
|
||||||
/// integer.
|
/// integer.
|
||||||
pub static CVTTSD2SI: [u8; 3] = [0xf2, 0x0f, 0x2c];
|
pub static CVTTSD2SI: [u8; 3] = [0xf2, 0x0f, 0x2c];
|
||||||
|
|||||||
Reference in New Issue
Block a user