VCVTUSI2SH

Convertir Unsigned Doubleword Integer en un valor FP16

estableVMJITAOTinstruccion

Codificaciones

OpcodeInstruccionOp/En64 bitsCompat/LegacyDescripcion
EVEX.LLIG.F3.MAP5.W0 7B /rVCVTUSI2SH xmm1, xmm2, r32/m32 {er}AValidov1Convertir un entero sin firma de doble palabra de r32/m32 a un valor FP16, y almacenar el resultado en xmm1. Bits 127:16 de xmm2 son copiados a xmm1[127:16].
EVEX.LLIG.F3.MAP5.W1 7B /rVCVTUSI2SH xmm1, xmm2, r64/m64 {er}AValidoNo codificableConvertir un integer de cuadrapa no firmado de r64/m64 a un valor FP16, y almacenar el resultado en xmm1. Bits 127:16 de xmm2 son copiados a xmm1[127:16].

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. 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

Tupla: Scalar

Coste medido

Cargando las mediciones de arch-data...

Descripción

Esta instrucción convierte un entero sin firma de doble palabra (o unsigned quadword integer si tamaño de operando es 64 bits) en el segundo operando de origen a un valor FP16 en el operando de destino. El resultado se almacena en la palabra baja del operando de destino. Cuando la conversión es inexacta, el valor devuelto se redondea según los bits de control de redondeo en el registro MXCSR o los controles de redondeo incrustados.

El segundo operando de origen puede ser un registro de proposito general o una ubicación de memoria de 32/64 bits. La primera fuente y operandos de destino son registros XMM. Los bits 127:16 del destino de registro XMM son copiados de los bits correspondientes en el primer operando de origen. Bits MAXVL-1:128 del registro de destino se ponen a cero.

Si el resultado de la operación de conversión es desbordamiento y MXCSR.OM=0, entonces una excepción SIMD se elevará con OE=1, PE=1.

Operación

VCVTUSI2SH dest, src1, src2
IF *SRC2 is a register* and (EVEX.b = 1):

    SET_RM(EVEX.RC)
ELSE:

    SET_RM(MXCSR.RC)

IF 64-mode and OperandSize == 64:
    DEST.fp16[0] := Convert_unsigned_integer64_to_fp16(SRC2.qword)

ELSE:
    DEST.fp16[0] := Convert_unsigned_integer32_to_fp16(SRC2.dword)

DEST[127:16] := SRC1[127:16]
DEST[MAXVL-1:128] := 0

Intel C/C++ compilador intrínseco

VCVTUSI2SH __m128h _mm_cvt_roundu32_sh (__m128h a, unsigned int b, int rounding);
VCVTUSI2SH __m128h _mm_cvt_roundu64_sh (__m128h a, unsigned __int64 b, int rounding);
VCVTUSI2SH __m128h _mm_cvtu32_sh (__m128h a, unsigned int b);
VCVTUSI2SH __m128h _mm_cvtu64_sh (__m128h a, unsigned __int64 b);

SIMD coma flotante Excepciones

Overflow, Precision.

Otras excepciones

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

Fuentes