VPBLENDMB, VPBLENDMW

Blend Byte/Word Vectores Usando un Control de Opmask

estableVMJITAOTinstruccion

Codificaciones

OpcodeInstruccionOp/En64 bitsCompat/LegacyDescripcion
EVEX.128.66.0F38.W0 66 /rVPBLENDMB xmm1 {k1}{z}, xmm2, xmm3/m128AValidoValidoBlend byte integer vector xmm2 y byte vector AVX512BW) OR xmm3/m128 y almacenar el resultado en xmm1, bajo la máscara de control AVX10.1.
EVEX.256.66.0F38.W0 66 /rVPBLENDMB ymm1 {k1}{z}, ymm2, ymm3/m256AValidoValidoBlend byte integer vector ymm2 y byte vector AVX512BW) OR ymm3/m256 y almacenar el resultado en ymm1, bajo la máscara de control AVX10.1.
EVEX.512.66.0F38.W0 66 /rVPBLENDMB zmm1 {k1}{z}, zmm2, zmm3/m512AValidoValidoBlend byte integer vector zmm2 y byte vector OR AVX10.1 zmm3/m512 y almacenar el resultado en zmm1, bajo control máscara.
EVEX.128.66.0F38.W1 66 /rVPBLENDMW xmm1 {k1}{z}, xmm2, xmm3/m128AValidoValidoBlend word integer vector xmm2 y palabra vector AVX512BW) OR xmm3/m128 y almacenar el resultado en xmm1, bajo AVX10.1 máscara de control.
EVEX.256.66.0F38.W1 66 /rVPBLENDMW ymm1 {k1}{z}, ymm2, ymm3/m256AValidoValidoBlend word integer vector ymm2 y palabra vector AVX512BW) OR ymm3/m256 y almacenar el resultado en ymm1, bajo AVX10.1 máscara de control.
EVEX.512.66.0F38.W1 66 /rVPBLENDMW zmm1 {k1}{z}, zmm2, zmm3/m512AValidoValidoBlend word integer vector zmm2 y palabra vector OR AVX10.1 zmm3/m512 y almacenar el resultado en zmm1, bajo control máscara.

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. 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: Full Mem

Coste medido

Cargando las mediciones de arch-data...

Descripción

Realiza una mezcla elemento por elemento de elementos byte/word entre el primer operando de origen byte vector register y el segundo operando de origen byte vector de memoria o registro, utilizando la máscara de instrucciones como selector. El resultado está escrito en el registro de vectores byte de destino.

El destino y el primer operandos de origen son los registros ZMM/YMM/XMM. El segundo operando de origen puede ser un ZMM/YMM/XMM registro, un 512/256/128-bit ubicación de memoria o un 512/256/128-bit ubicación de memoria.

La máscara no se utiliza como una máscara de escritura para esta instrucción. En su lugar, la máscara se utiliza como selector de elementos: cada elemento del destino se selecciona condicionalmente entre primera fuente o segunda fuente utilizando el valor del bit de máscara relacionado (0 para primera fuente, 1 para segunda fuente).

Operación

VPBLENDMB (EVEX encoded versions)
(KL, VL) = (16, 128), (32, 256), (64, 512)

FOR j := 0 TO KL-1

i := j * 8

IF k1[j] OR *no writemask*

     THEN DEST[i+7:i] := SRC2[i+7:i]

     ELSE

             IF *merging-masking*                  ; merging-masking

                  THEN DEST[i+7:i] := SRC1[i+7:i]

                  ELSE                             ; zeroing-masking

                    DEST[i+7:i] := 0

             FI;

FI;

ENDFOR

DEST[MAXVL-1:VL] := 0;

VPBLENDMW (EVEX encoded versions)

(KL, VL) = (8, 128), (16, 256), (32, 512)

FOR j := 0 TO KL-1

i := j * 16

IF k1[j] OR *no writemask*

     THEN DEST[i+15:i] := SRC2[i+15:i]

     ELSE

             IF *merging-masking*                  ; merging-masking

                  THEN DEST[i+15:i] := SRC1[i+15:i]

                  ELSE                             ; zeroing-masking

                    DEST[i+15:i] := 0

             FI;

FI;

ENDFOR

DEST[MAXVL-1:VL] := 0

Intel C/C++ compilador intrínseco

VPBLENDMB __m512i _mm512_mask_blend_epi8(__mmask64 m, __m512i a, __m512i b);
VPBLENDMB __m256i _mm256_mask_blend_epi8(__mmask32 m, __m256i a, __m256i b);
VPBLENDMB __m128i _mm_mask_blend_epi8(__mmask16 m, __m128i a, __m128i b);
VPBLENDMW __m512i _mm512_mask_blend_epi16(__mmask32 m, __m512i a, __m512i b);
VPBLENDMW __m256i _mm256_mask_blend_epi16(__mmask16 m, __m256i a, __m256i b);
VPBLENDMW __m128i _mm_mask_blend_epi16(__mmask8 m, __m128i a, __m128i b);

SIMD coma flotante Excepciones

None

Otras excepciones

Ver Tabla 2-51, "Tipo E4 Clase Condiciones de Excepción".

Fuentes