VCVTSH2SI

Convertir Valor bajo FP16 en Signed Integer

estableVMJITAOTinstruccion

Codificaciones

OpcodeInstruccionOp/En64 bitsCompat/LegacyDescripcion
EVEX.LLIG.F3.MAP5.W0 2D /rVCVTSH2SI r32, xmm1/m16 {er}AValidov1Convertir el elemento FP16 bajo en xmm1/m16 a un integer de doble palabra OR AVX10.1 firmado y almacenar el resultado en r32.
EVEX.LLIG.F3.MAP5.W1 2D /rVCVTSH2SI r64, xmm1/m16 {er}AValidoNo codificableConvertir el elemento FP16 bajo en xmm1/m16 a un integer de cuádpago OR AVX10.1 firmado y almacenar el resultado en r64.

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

Tupla: Scalar

Coste medido

Cargando las mediciones de arch-data...

Descripción

Esta instrucción convierte el elemento FP16 bajo en el operando de origen a un entero firmado en el destino registro de proposito general.

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.

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.

Operación

VCVTSH2SI dest, src
IF *SRC is a register* and (EVEX.b = 1):

    SET_RM(EVEX.RC)
ELSE:

    SET_RM(MXCSR.RC)

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

ELSE:
    DEST.dword := Convert_fp16_to_integer32(SRC.fp16[0])

Intel C/C++ compilador intrínseco

VCVTSH2SI int _mm_cvt_roundsh_i32 (__m128h a, int rounding);
VCVTSH2SI __int64 _mm_cvt_roundsh_i64 (__m128h a, int rounding);
VCVTSH2SI int _mm_cvtsh_i32 (__m128h a);
VCVTSH2SI __int64 _mm_cvtsh_i64 (__m128h a);

SIMD coma flotante Excepciones

Invalid, Precision.

Otras excepciones

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

Fuentes