Opcode | Encoding | 16-bit | 32-bit | 64-bit | CPUID Feature Flag(s) | Description |
---|---|---|---|---|---|---|
F3 0F 2C /r CVTTSS2SI r32, xmm1/m32 | rm | Invalid | Valid | Valid | sse2 | Convert with truncation a scalar single-precision floating-point value from xmm1/m32 into a doubleword integer. Store the result in r32. |
F3 REX.W 0F 2C /r CVTTSS2SI r64, xmm1/m32 | rm | Invalid | N/E | Valid | sse2 | Convert with truncation a scalar single-precision floating-point value from xmm1/m32 into a quadword integer. Store the result in r64. |
VEX.LIG.F3.0F.W0 2C /r VCVTTSS2SI r32, xmm1/m32 | rm | Invalid | Valid | Valid | avx | Convert with truncation a scalar single-precision floating-point value from xmm1/m32 into a doubleword integer. Store the result in r32. |
VEX.LIG.F3.0F.W1 2C /r VCVTTSS2SI r64, xmm1/m32 | rm | Invalid | Invalid | Valid | avx | Convert with truncation a scalar single-precision floating-point value from xmm1/m32 into a quadword integer. Store the result in r64. |
EVEX.LLIG.F3.0F.W0 2C /r VCVTTSS2SI r32, xmm1/m32{er} | erm | Invalid | Valid | Valid | avx512-f | Convert with truncation a scalar single-precision floating-point value from xmm1/m32 into a doubleword integer. Store the result in r32. |
EVEX.LLIG.F3.0F.W1 2C /r VCVTTSS2SI r64, xmm1/m32{er} | erm | Invalid | Invalid | Valid | avx512-f | Convert with truncation a scalar single-precision floating-point value from xmm1/m32 into a quadword integer. Store the result in r64. |
Encoding
Encoding | Operand 1 | Operand 2 | Operand 3 |
---|---|---|---|
rm | n/a | ModRM.reg[w] | ModRM.r/m[r] |
erm | tuple1-fixed | ModRM.reg[w] | ModRM.r/m[r] |
Description
The (V)CVTTSS2SI
instruction converts with truncation a scalar single-precision floating-point value from the source operand into either a doubleword or quadword integer. The result is stored in the destination operand.
The EVEX form of this instruction does not support memory-fault suppression. The operand size is always 32 bits if not in Long Mode. In other words, VEX.W1
and EVEX.W1
are treated as VEX.W0
and EVEX.W0
(respectively) outside Long Mode.
Operation
public void CVTTSS2SI(ref I32 dest, SimdF64 src)
{
dest = ConvertToI32(src[0], truncate: true);
}
public void CVTTSS2SI(ref I64 dest, SimdF64 src)
{
dest = ConvertToI64(src[0], truncate: true);
}
public void VCVTTSS2SI_Vex(ref I32 dest, SimdF64 src) =>
CVTTSS2SI(ref dest, src);
public void VCVTTSS2SI_Vex(ref I64 dest, SimdF64 src) =>
CVTTSS2SI(ref dest, src);
public void VCVTTSS2SI_Evex(ref I32 dest, SimdF64 src) =>
CVTTSS2SI(ref dest, src);
public void VCVTTSS2SI_Evex(ref I64 dest, SimdF64 src) =>
CVTTSS2SI(ref dest, src);
Intrinsics
int32_t _mm_cvttss_i32(__m128d a)
int32_t _mm_cvttss_si32(__m128d a)
int32_t _mm_cvtt_roundss_i32(__m128d a, const int sae)
int64_t _mm_cvttss_i64(__m128d a)
int64_t _mm_cvttss_si64(__m128d a)
int64_t _mm_cvtt_roundss_i64(__m128d a, const int sae)
Exceptions
SIMD Floating-Point
#XM
#I
- Invalid operation.#P
- Inexact result.
Other Exceptions
VEX Encoded Form: See Type 3 Exception Conditions.
EVEX Encoded Form: See Type E3NF Exception Conditions.
#UD
- If
VEX.vvvv
is not1111b
. - If
EVEX.vvvvv
is not11111b
.