CVTTSS2SI

Convertir Con Truncation valores en coma flotante de precisión simple escalares en Signed

estableVMJITAOTinstruccion

Codificaciones

OpcodeInstruccionOp/En64 bitsCompat/LegacyDescripcion
F3 0F 2C /rCVTTSS2SI r3, xmm1/m32AValidoValidoConvertir un valor en coma flotante de precisión simple de xmm1/m32 a un entero de doble palabra firmado en r3 usando truncation.
F3 REX.W 0F 2C /rCVTTSS2SI r64, xmm1/m32AValidoNo codificableConvertir un valor en coma flotante de precisión simple de xmm1/m32 a un entero de cuádpago firmado en r64 utilizando truncación.
VEX.LIG.F3.0F.W0 2C /r 1VCVTTSS2SI r3, xmm1/m32AValidoValidoConvertir un valor en coma flotante de precisión simple de xmm1/m32 a un entero de doble palabra firmado en r3 usando truncation.
VEX.LIG.F3.0F.W1 2C /r 1VCVTTSS2SI r64, xmm1/m32AValidon.e.2Convertir un valor en coma flotante de precisión simple de xmm1/m32 a un entero de cuádpago firmado en r64 utilizando truncación.
EVEX.LLIG.F3.0F.W0 2C /rVCVTTSS2SI r3, xmm1/m32{sae}BValidoValidoConvertir un valor en coma flotante de precisión simple de OR AVX10.1 xmm1/m32 a un entero de doble palabra firmado en r3 usando truncation.
EVEX.LLIG.F3.0F.W1 2C /rVCVTTSS2SI r64, xmm1/m32{sae}BValidon.e.2Convertir un valor en coma flotante de precisión simple de OR AVX10.1 xmm1/m32 a un entero de cuádpago firmado en r64 utilizando truncation.

Codificacion de operandos

Cada modo es un valor de la columna Op/En de arriba. Dice en que campo de la instruccion codificada va cada operando, en el orden en que se escriben, y si la instruccion lo lee, lo escribe o ambas cosas.

A

  1. modrm.reg escriturabyte ModRM, campo reg (bits 5-3)
  2. modrm.rm lecturabyte ModRM, campo r/m (bits 2-0); con el byte SIB y el desplazamiento cuando el campo mod los pide

B

  1. modrm.reg escriturabyte ModRM, campo reg (bits 5-3)
  2. modrm.rm lecturabyte ModRM, campo r/m (bits 2-0); con el byte SIB y el desplazamiento cuando el campo mod los pide

Tupla: Tuple1 Fixed

Coste medido

Cargando las mediciones de arch-data...

Descripción

Convierte un valor en coma flotante de precisión simple en el operando de origen (el segundo operando) a un entero de doble palabra firmado (o integer de cuádword firmado si tamaño de operando es 64 bits) en el operando de destino (el primer operando). El operando de origen puede ser un registro XMM o una ubicación de memoria de 32 bits. El operando de destino es un registro de proposito general. Cuando el operando de origen es un registro XMM, el valor en coma flotante de precisión simple está contenido en la palabra doble baja del registro.

Cuando una conversión es inexacta, un resultado truncado (redondeado hacia cero) es devuelto.

Si un resultado convertido supera los límites de rango de integer de doble palabra firmado (en modos no-64-bit o modo 64-bit con REX.W/VEX.W/EVEX.W=0), la coma flotante excepción de operación no válida se genera, y si esta excepción está enmascarada, el valor entero indefinido 80000000H es devuelto.

Si un resultado convertido supera los límites de rango de integer de cuadword firmado (en modo de 64 bits y REX.W/VEX.W/EVEX.W = 1), la coma flotante excepción de operación no válida se genera, y si esta excepción está enmascarada, se devuelve el valor entero integer indefinido 80000 00000H.

Legacy SSE instrucciones: En modo de 64 bits, el uso del prefijo REX.W promueve la instrucción a operación de 64 bits. Vea la tabla resumen al comienzo de esta sección para la codificación de datos y límites.

VEX.W1 y EVEX.W1 versiones: promueve la instrucción para producir datos de 64 bits en modo de 64 bits.

Nota: VEX.vvvv y EVEX.vvvv están reservados y deben ser 1111b, de lo contrario las instrucciones #UD.

El software debe asegurar que VCVTTSS2SI esté codificado con VEX.L=0. Codificar VCVTTSS2SI con VEX.L=1 puede encontrar un comportamiento impredecible en diferentes generaciones de procesadores.

Operación

(V)CVTTSS2SI (All Versions)
IF 64-Bit Mode and OperandSize = 64
THEN

    DEST[63:0] := Convert_Single_Precision_Floating_Point_To_Integer_Truncate(SRC[31:0]);
ELSE

    DEST[31:0] := Convert_Single_Precision_Floating_Point_To_Integer_Truncate(SRC[31:0]);
FI;

Intel C/C++ compilador intrínseco

VCVTTSS2SI int _mm_cvttss_i32( __m128 a);
VCVTTSS2SI int _mm_cvtt_roundss_i32( __m128 a, int sae);
VCVTTSS2SI __int64 _mm_cvttss_i64( __m128 a);
VCVTTSS2SI __int64 _mm_cvtt_roundss_i64( __m128 a, int sae);
CVTTSS2SI int _mm_cvttss_si32( __m128 a);
CVTTSS2SI __int64 _mm_cvttss_si64( __m128 a);

SIMD coma flotante Excepciones

Invalid, Precision.

Otras excepciones

Ver Tabla 2-20, "Tipo 3 Condiciones de Excepción", además:

#UD               If VEX.vvvv != 1111B.

Instrucciones codificadas por EVEX, ver Tabla 2-50, "Tipo E3NF Clase Condiciones de Excepción."

Fuentes