CVTSI2SS
Convertir Integer firmado en valores en coma flotante de precisión simple escalares
estableVMJITAOTinstruccion
Codificaciones
| Opcode | Instruccion | Op/En | 64 bits | Compat/Legacy | Descripcion |
|---|---|---|---|---|---|
F3 0F 2A /r | CVTSI2SS xmm1, r/m32 | A | Valido | Valido | Convertir un entero de doble palabra firmado de r/m32 a un valor en coma flotante de precisión simple en xmm1. |
F3 REX.W 0F 2A /r | CVTSI2SS xmm1, r/m64 | A | Valido | No codificable | Convertir un entero de cuádpago firmado de r/m64 a un valor en coma flotante de precisión simple en xmm1. |
VEX.LIG.F3.0F.W0 2A /r | VCVTSI2SS xmm1, xmm2, r/m32 | B | Valido | Valido | Convertir un entero de doble palabra firmado de r/m32 a un valor en coma flotante de precisión simple en xmm1. |
VEX.LIG.F3.0F.W1 2A /r | VCVTSI2SS xmm1, xmm2, r/m64 | B | Valido | n.e.1 | Convertir un entero de cuádpago firmado de r/m64 a un valor en coma flotante de precisión simple en xmm1. |
EVEX.LLIG.F3.0F.W0 2A /r | VCVTSI2SS xmm1, xmm2, r/m32{er} | C | Valido | Valido | Convertir un entero de doble palabra firmado de r/m32 OR AVX10.1 a un valor en coma flotante de precisión simple en xmm1. |
EVEX.LLIG.F3.0F.W1 2A /r | VCVTSI2SS xmm1, xmm2, r/m64{er} | C | Valido | n.e.1 | Convertir un entero de cuádpago firmado de r/m64 a OR AVX10.1 un valor en coma flotante de precisión simple en xmm1. |
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
modrm.regescriturabyte ModRM, campo reg (bits 5-3)modrm.rmlecturabyte ModRM, campo r/m (bits 2-0); con el byte SIB y el desplazamiento cuando el campo mod los pide
B
modrm.regescriturabyte ModRM, campo reg (bits 5-3)vex.vvvvlecturaprefijo VEX, campo vvvv (invertido)modrm.rmlecturabyte ModRM, campo r/m (bits 2-0); con el byte SIB y el desplazamiento cuando el campo mod los pide
C
modrm.regescriturabyte ModRM, campo reg (bits 5-3)evex.vvvvlecturaprefijo EVEX, campo vvvv (invertido)modrm.rmlecturabyte ModRM, campo r/m (bits 2-0); con el byte SIB y el desplazamiento cuando el campo mod los pide
Tupla: Tuple1 Scalar
Coste medido
Cargando las mediciones de arch-data...
Descripción
Convierte un integer de doble palabra o cuádword firmado en el "convertir-de" operando de origen a un valor en coma flotante de precisión simple en el operando de destino (primer operando). El "converso de" operando de origen puede ser un registro de proposito general o una ubicación de memoria. El operando de destino es un registro XMM. El resultado se almacena en la palabra doble baja del operando de destino, y las tres palabras dobles superiores se quedan sin cambios. Cuando una conversión es inexacta, el valor devuelto se redondea según los bits de control de redondeo en el registro MXCSR o los bits de control de redondeo incrustados.
128-bit Legacy SSE versión: En modo de 64 bits, el uso del prefijo REX.W promueve la instrucción para utilizar el valor de entrada de 64 bits. El "converso de" operando de origen (el segundo operando) es un registro de proposito general o ubicación de memoria. Bits (MAXVL-1:32) del registro de destino correspondiente no se modifican.
VEX.128 y EVEX versiones codificadas: El "converso de" operando de origen (el tercer operando) puede ser un registro de uso general o una ubicación de memoria. La primera fuente y operandos de destino son registros XMM. Los bits (127:32) del destino de registro XMM se copian de los bits correspondientes en el primer operando de origen. Bits (MAXVL-1:128) del registro de destino se ponen a cero.
EVEX versión codificada: el resultado convertido en escrito al elemento de doble palabra bajo del destino bajo la máscara de escritura.
El software debe asegurar que VCVTSI2SS esté codificado con VEX.L=0. Codificar VCVTSI2SS con VEX.L=1 puede encontrar un comportamiento impredecible en diferentes generaciones de procesadores.
Operación
VCVTSI2SS (EVEX Encoded Version)
IF (SRC2 *is register*) AND (EVEX.b = 1)
THEN
SET_ROUNDING_MODE_FOR_THIS_INSTRUCTION(EVEX.RC);
ELSE
SET_ROUNDING_MODE_FOR_THIS_INSTRUCTION(MXCSR.RC);
FI;
IF 64-Bit Mode And OperandSize = 64
THEN
DEST[31:0] := Convert_Integer_To_Single_Precision_Floating_Point(SRC[63:0]);
ELSE
DEST[31:0] := Convert_Integer_To_Single_Precision_Floating_Point(SRC[31:0]);
FI;
DEST[127:32] := SRC1[127:32]
DEST[MAXVL-1:128] := 0
VCVTSI2SS (VEX.128 Encoded Version)
IF 64-Bit Mode And OperandSize = 64
THEN
DEST[31:0] := Convert_Integer_To_Single_Precision_Floating_Point(SRC[63:0]);
ELSE
DEST[31:0] := Convert_Integer_To_Single_Precision_Floating_Point(SRC[31:0]);
FI;
DEST[127:32] := SRC1[127:32]
DEST[MAXVL-1:128] := 0
CVTSI2SS (128-bit Legacy SSE Version)
IF 64-Bit Mode And OperandSize = 64
THEN
DEST[31:0] := Convert_Integer_To_Single_Precision_Floating_Point(SRC[63:0]);
ELSE
DEST[31:0] :=Convert_Integer_To_Single_Precision_Floating_Point(SRC[31:0]);
FI;
DEST[MAXVL-1:32] (Unmodified)Intel C/C++ compilador intrínseco
VCVTSI2SS __m128 _mm_cvti32_ss(__m128 s, int a);
VCVTSI2SS __m128 _mm_cvt_roundi32_ss(__m128 s, int a, int r);
VCVTSI2SS __m128 _mm_cvti64_ss(__m128 s, __int64 a);
VCVTSI2SS __m128 _mm_cvt_roundi64_ss(__m128 s, __int64 a, int r);
CVTSI2SS __m128 _mm_cvtsi64_ss(__m128 s, __int64 a);
CVTSI2SS __m128 _mm_cvtsi32_ss(__m128 a, int b);SIMD coma flotante Excepciones
Precision.
Otras excepciones
Instrucciones codificadas por VEX, ver Tabla 2-20, "Tipo 3 Condiciones de Excepción".
Instrucciones codificadas por EVEX, ver Tabla 2-50, "Tipo E3NF Clase Condiciones de Excepción."