VBCSTNEBF162PS

Carga BF16 Element y Convertir en FP32 Element Con Broadcast

estableVMJITAOTinstruccion

Codificaciones

OpcodeInstruccionOp/En64 bitsCompat/LegacyDescripcion
VEX.128.F3.0F38.W0 B1!(11):rrr:bbb VBCSTNEBF162PS xmm1, m16AValidoValidoCargar un elemento BF16 coma flotante de CONVERT m16, convertir a FP32 y el resultado de la tienda en xmm1.
VEX.256.F3.0F38.W0 B1!(11):rrr:bbb VBCSTNEBF162PS ymm1, m16AValidoValidoCargar un elemento BF16 coma flotante de CONVERT m16, convertir 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 BF16 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.

Como cualquier número de BF16 puede ser representado en FP32, el resultado de la conversión es exacto y no se necesita redondeo.

Operación

VBCSTNEBF162PS 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] // reads 16b from memory

FOR i in range(0, KL):
    dest.dword[i] = make_fp32(TMP.dword[i].word[0])

DEST[MAXVL-1:VL] := 0

Banderas afectadas

None.

Intel C/C++ compilador intrínseco

VBCSTNEBF162PS __m128 _mm_bcstnebf16_ps (const __bf16* __A);
VBCSTNEBF162PS __m256 _mm256_bcstnebf16_ps (const __bf16* __A);

SIMD coma flotante Excepciones

None.

Otras excepciones

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

Fuentes