PEXT
Extracto de mordiscos paralelos
estableVMJITAOTinstruccion
Codificaciones
| Opcode | Instruccion | Op/En | 64 bits | Compat/Legacy | Descripcion |
|---|---|---|---|---|---|
VEX.LZ.F3.0F38.W0 F5 /r | PEXT r32a, r32b, r/m32 | RVM | Valido | Valido | Extracto paralelo de bits de r32b usando máscara en r/m32, resultado está escrito a r32a. |
VEX.LZ.F3.0F38.W1 F5 /r | PEXT r64a, r64b, r/m64 | RVM | Valido | No codificable | Extracto paralelo de bits de r64b usando máscara en r/m64, resultado está escrito a r64a. |
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.
RVM
modrm.regescriturabyte ModRM, campo reg (bits 5-3)vex.vvvvlecturaprefijo VEX, 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
Coste medido
Cargando las mediciones de arch-data...
Descripción
PEXT utiliza una máscara en el segundo operando de origen (el tercer operando) para transferir bits contiguos o no contiguos en el primer operando de origen (el segundo operando) a posiciones contiguas de bajo pedido en el destino (el primer operando). Para cada bit fijado en el MASK, PEXT extrae los bits correspondientes del primer operando de origen y los escribe en pedazos inferiores contiguos de operando de destino. Los bits superiores restantes de destino se ponen a cero.
SRC1 S31 S30 S29 S28 S27 S7 S6 S5 S4 S3 S2 S1 S0 SRC2 0 0 01 0 10 1 0 0 1 0 0(mask)
DEST 0 0 0 0 0 00 0 0 S28 S7 S5 S2
bit 31 bit 0Figura 4-9. PEXT Ejemplo
Esta instrucción no es compatible en modo real y modo virtual-8086. El tamaño de operando es siempre 32 bits si no en modo de 64 bits. En modo de 64 bits tamaño de operando 64 requiere VEX.W1. VEX.W1 es ignorado en modos no-64-bit. Un intento de ejecutar esta instrucción con VEX.L no igual a 0 causará #UD.
Operación
TEMP := SRC1;
MASK := SRC2;
DEST := 0 ;
m := 0, k := 0;
DO WHILE m < OperandSize
IF MASK[ m] = 1 THEN
DEST[ k] := TEMP[ m];
k := k+ 1;
FI
m := m+ 1;
ODBanderas afectadas
None.
Intel C/C++ compilador intrínseco
PEXT unsigned __int32 _pext_u32(unsigned __int32 src, unsigned __int32 mask);
PEXT unsigned __int64 _pext_u64(unsigned __int64 src, unsigned __int32 mask);SIMD coma flotante Excepciones
None.
Otras excepciones
Ver Tabla 2-29, "Tipo 13 Condiciones de Excepción de Clase".