VPBLENDMD, VPBLENDMQ
Blend Int32/Int64 Vectores Usando un Control OpMask
estableVMJITAOTinstruccion
Codificaciones
| Opcode | Instruccion | Op/En | 64 bits | Compat/Legacy | Descripcion |
|---|---|---|---|---|---|
EVEX.128.66.0F38.W0 64 /r | VPBLENDMD xmm1 {k1}{z}, xmm2, xmm3/m128/m32bcst | A | Valido | Valido | Blend doubleword integer vector xmm2 y AVX512F) OR doubleword vector xmm3/m128/m32bcst y AVX10.1 almacenan el resultado en xmm1, bajo control máscara. |
EVEX.256.66.0F38.W0 64 /r | VPBLENDMD ymm1 {k1}{z}, ymm2, ymm3/m256/m32bcst | A | Valido | Valido | Blend doubleword integer vector ymm2 y AVX512F) OR doubleword vector ymm3/m256/m32bcst y AVX10.1 almacenan el resultado en ymm1, bajo control máscara. |
EVEX.512.66.0F38.W0 64 /r | VPBLENDMD zmm1 {k1}{z}, zmm2, zmm3/m512/m32bcst | A | Valido | Valido | Blend doubleword integer vector zmm2 y OR AVX10.1 dobleword vector zmm3/m512/m32bcst y almacenar el resultado en zmm1, bajo control máscara. |
EVEX.128.66.0F38.W1 64 /r | VPBLENDMQ xmm1 {k1}{z}, xmm2, xmm3/m128/m64bcst | A | Valido | Valido | Blend quadword integer vector xmm2 y AVX512F) OR quadword vector xmm3/m128/m64bcst y almacenar AVX10.1 el resultado en xmm1, bajo máscara de control. |
EVEX.256.66.0F38.W1 64 /r | VPBLENDMQ ymm1 {k1}{z}, ymm2, ymm3/m256/m64bcst | A | Valido | Valido | Blend quadword integer vector ymm2 y AVX512F) OR quadword vector ymm3/m256/m64bcst y almacenar AVX10.1 el resultado en ymm1, bajo máscara de control. |
EVEX.512.66.0F38.W1 64 /r | VPBLENDMQ zmm1 {k1}{z}, zmm2, zmm3/m512/m64bcst | A | Valido | Valido | Blend quadword integer vector zmm2 y OR AVX10.1 quadword vector zmm3/m512/m64bcst 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
modrm.regescriturabyte ModRM, campo reg (bits 5-3)evex.vvvvlecturaprefijo EVEX, campo vvvv (invertido)modrm.rmlecturabyte ModRM, campo r/m (bits 2-0); con el byte SIB y el desplazamiento cuando el campo mod los pide
Tupla: Full
Coste medido
Cargando las mediciones de arch-data...
Descripción
Realiza una mezcla elemento por elemento de elementos dword/qword entre el primer operando de origen (el segundo operando) y los elementos del segundo operando de origen (el tercer operando) utilizando un registro de opmasco como control selecto. El resultado mezclado está escrito en el destino.
El destino y el primer operandos de origen son los registros ZMM. El segundo operando de origen puede ser un registro ZMM, una ubicación de memoria de 512 bits o un vector de 512 bits emitido desde una ubicación de memoria de 32 bits.
El registro de opmasco no se utiliza como una máscara de escritura para esta instrucción. En cambio, 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 el primer operando de origen, 1 para el segundo operando de origen).
Si se establece EVEX.z, los elementos con el valor de bit de máscara correspondiente de 0 en el operando de destino se ponen a cero.
Operación
VPBLENDMD (EVEX encoded versions)
(KL, VL) = (4, 128), (8, 256), (16, 512)
FOR j := 0 TO KL-1
i := j * 32
IF k1[j] OR *no controlmask*
THEN
IF (EVEX.b = 1) AND (SRC2 *is memory*)
THEN
DEST[i+31:i] := SRC2[31:0]
ELSE
DEST[i+31:i] := SRC2[i+31:i]
FI;
ELSE
IF *merging-masking* ; merging-masking
THEN DEST[i+31:i] := SRC1[i+31:i]
ELSE ; zeroing-masking
DEST[i+31:i] := 0
FI;
FI;
ENDFOR
DEST[MAXVL-1:VL] := 0;
VPBLENDMD (EVEX encoded versions)
(KL, VL) = (4, 128), (8, 256), (16, 512)
FOR j := 0 TO KL-1
i := j * 32
IF k1[j] OR *no controlmask*
THEN
IF (EVEX.b = 1) AND (SRC2 *is memory*)
THEN
DEST[i+31:i] := SRC2[31:0]
ELSE
DEST[i+31:i] := SRC2[i+31:i]
FI;
ELSE
IF *merging-masking* ; merging-masking
THEN DEST[i+31:i] := SRC1[i+31:i]
ELSE ; zeroing-masking
DEST[i+31:i] := 0
FI;
FI;
ENDFOR
DEST[MAXVL-1:VL] := 0Intel C/C++ compilador intrínseco
VPBLENDMD __m512i _mm512_mask_blend_epi32(__mmask16 k, __m512i a, __m512i b);
VPBLENDMD __m256i _mm256_mask_blend_epi32(__mmask8 m, __m256i a, __m256i b);
VPBLENDMD __m128i _mm_mask_blend_epi32(__mmask8 m, __m128i a, __m128i b);
VPBLENDMQ __m512i _mm512_mask_blend_epi64(__mmask8 k, __m512i a, __m512i b);
VPBLENDMQ __m256i _mm256_mask_blend_epi64(__mmask8 m, __m256i a, __m256i b);
VPBLENDMQ __m128i _mm_mask_blend_epi64(__mmask8 m, __m128i a, __m128i b);SIMD coma flotante Excepciones
None
Otras excepciones
Ver Tabla 2-51, "Tipo E4 Clase Condiciones de Excepción".