CVTSS2SD

Convertir valores en coma flotante de precisión simple escalares en escalar Doble Precisión

estableVMJITAOTinstruccion

Codificaciones

OpcodeInstruccionOp/En64 bitsCompat/LegacyDescripcion
F3 0F 5A /rCVTSS2SD xmm1, xmm2/m32AValidoValidoConvertir un valor en coma flotante de precisión simple en xmm2/m32 en un valor en coma flotante de precisión doble en xmm1.
VEX.LIG.F3.0F.WIG 5A /rVCVTSS2SD xmm1, xmm2, xmm3/m32BValidoValidoConvertir un valor en coma flotante de precisión simple en xmm3/m32 en un valor en coma flotante de precisión doble y fusionarse con pedazos altos de xmm2.
EVEX.LLIG.F3.0F.W0 5A /rVCVTSS2SD xmm1 {k1}{z}, xmm2, xmm3/m32{sae}CValidoValidoConvertir un valor en coma flotante de precisión simple en OR AVX10.1 xmm3/m32 en un valor en coma flotante de precisión doble y fusionarse con pedazos altos de xmm2 bajo máscara de escritura k1.

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 lectura y 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. vex.vvvv lecturaprefijo VEX, campo vvvv (invertido)
  3. modrm.rm lecturabyte ModRM, campo r/m (bits 2-0); con el byte SIB y el desplazamiento cuando el campo mod los pide

C

  1. modrm.reg escriturabyte ModRM, campo reg (bits 5-3)
  2. evex.vvvv lecturaprefijo EVEX, campo vvvv (invertido)
  3. 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 Scalar

Coste medido

Cargando las mediciones de arch-data...

Descripción

Convierte un valor en coma flotante de precisión simple en el "convert-from" operando de origen a un valor flotante de doble precisión en el operando de destino. Cuando el "converso de" 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. El resultado se almacena en el bajo cuádpago del operando de destino.

128-bit Legacy SSE versión: El "converso de" operando de origen (el segundo operando) es un registro XMM o ubicación de memoria. Bits (MAXVL-1:64) del registro de destino correspondiente no se modifican. El operando de destino es un registro XMM.

VEX.128 y EVEX versiones codificadas: El "converso de" operando de origen (el tercer operando) puede ser un registro XMM o una ubicación de memoria de 32 bits. La primera fuente y operandos de destino son registros XMM. Los bits (127:64) 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.

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

Operación

VCVTSS2SD (EVEX Encoded Version)

IF k1[0] or *no writemask*

     THEN DEST[63:0] := Convert_Single_Precision_To_Double_Precision_Floating_Point(SRC2[31:0]);

     ELSE

     IF *merging-masking*         ; merging-masking

           THEN *DEST[63:0] remains unchanged*

           ELSE                   ; zeroing-masking

           THEN DEST[63:0] = 0

     FI;

FI;

DEST[127:64] := SRC1[127:64]

DEST[MAXVL-1:128] := 0

VCVTSS2SD (VEX.128 Encoded Version)
DEST[63:0] := Convert_Single_Precision_To_Double_Precision_Floating_Point(SRC2[31:0])
DEST[127:64] := SRC1[127:64]
DEST[MAXVL-1:128] := 0

CVTSS2SD (128-bit Legacy SSE Version)
DEST[63:0] := Convert_Single_Precision_To_Double_Precision_Floating_Point(SRC[31:0]);
DEST[MAXVL-1:64] (Unmodified)

Intel C/C++ compilador intrínseco

VCVTSS2SD __m128d _mm_cvt_roundss_sd(__m128d a, __m128 b, int r);
VCVTSS2SD __m128d _mm_mask_cvt_roundss_sd(__m128d s, __mmask8 m, __m128d a,__m128 b, int r);
VCVTSS2SD __m128d _mm_maskz_cvt_roundss_sd(__mmask8 k, __m128d a, __m128 a, int r);
VCVTSS2SD __m128d _mm_mask_cvtss_sd(__m128d s, __mmask8 m, __m128d a,__m128 b);
VCVTSS2SD __m128d _mm_maskz_cvtss_sd(__mmask8 m, __m128d a,__m128 b);
CVTSS2SD __m128d_mm_cvtss_sd(__m128d a, __m128 a);

SIMD coma flotante Excepciones

Invalid, Denormal.

Otras excepciones

Instrucciones codificadas por VEX, ver Tabla 2-20, "Tipo 3 Condiciones de Excepción." Instrucciones codificadas por EVEX, ver Tabla 2-49, "Tipo E3 Condiciones de Excepción".

Fuentes