VBCSTNESH2PS

Carga FP16 Element y Convertir en FP32 Element con Broadcast

estableVMJITAOTinstruccion

Codificaciones

OpcodeInstruccionOp/En64 bitsCompat/LegacyDescripcion
VEX.128.66.0F38.W0 B1 !(11):rrr:bbbVBCSTNESH2PS xmm1, m16AValidoValidoCargar un elemento FP16 de m16, convertir CONVERT a FP32, y el resultado de la tienda en xmm1.
VEX.256.66.0F38.W0 B1 !(11):rrr:bbbVBCSTNESH2PS ymm1, m16AValidoValidoCargar un elemento FP16 de m16, convertir CONVERT a FP32, y el resultado de la tienda en ymm1.

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

Coste medido

Cargando las mediciones de arch-data...

Descripción

Esta instrucción carga un elemento FP16 de memoria, lo convierte a FP32, y lo transmite a un registro SIMD.

Esta instrucción no genera excepciones coma flotante y no consulta ni actualiza MXCSR.

Los denormales FP16 de entrada se convierten a números FP32 normales y no se tratan como cero. Como cualquier número de FP16 puede ser representado en FP32, el resultado de la conversión es exacto y no se necesita redondeo.

Operación

VBCSTNESH2PS dest, src (VEX encoded version)
VL = (128, 256)
KL = VL/32

FOR i in range(0, KL):
    tmp.dword[i].word[0] = src.word[0] // read 16b from memory

FOR i in range(0, KL):
    dest.dword[i] = convert_fp16_to_fp32(tmp.dword[i].word[0]) //SAE

DEST[MAXVL-1:VL] := 0

Banderas afectadas

None.

Intel C/C++ compilador intrínseco

VBCSTNESH2PS __m128 _mm_bcstnesh_ps (const _Float16* __A);
VBCSTNESH2PS __m256 _mm256_bcstnesh_ps (const _Float16* __A);

SIMD coma flotante Excepciones

None.

Otras excepciones

Ver Tabla 2-22, "Tipo 5 Condiciones de Excepción de Clase".

Fuentes