AESENCLAST
Realizar la última ronda de un flujo de cifrado AES
estableVMJITAOTinstruccion
Codificaciones
| Opcode | Instruccion | Op/En | 64 bits | Compat/Legacy | Descripcion |
|---|---|---|---|---|---|
66 0F 38 DD /r | AESENCLAST xmm1, xmm2/m128 | A | Valido | Valido | Realice la última ronda de un flujo de encriptación AES, utilizando uno de datos de 128 bits (estado) de xmm1 con una clave redondo de 128 bits de xmm2/m128. |
VEX.128.66.0F38.WIG DD /r | VAESENCLAST xmm1, xmm2, xmm3/m128 | B | Valido | Valido | Realice la última ronda de un flujo de encriptación AES, AVX utilizando uno de datos de 128 bits (estado) de xmm2 con una clave redondo de 128 bits de xmm3/m128; almacene el resultado en xmm1. |
VEX.256.66.0F38.WIG DD /r | VAESENCLAST ymm1, ymm2, ymm3/m256 | B | Valido | Valido | Realizar la última ronda de un flujo de cifrado AES, utilizando dos datos de 128 bits (estado) de ymm2 con dos claves redondo de 128 bits de ymm3/m256; almacenar el resultado en ymm1. |
EVEX.128.66.0F38.WIG DD /r | VAESENCLAST xmm1, xmm2, xmm3/m128 | C | Valido | Valido | Realizar la última ronda de un flujo de encriptación AES (AVX512VL OR AVX10.1) utilizando uno de datos de 128 bits (estado) de xmm2 con una clave redondo de 128 bits de xmm3/m128; almacenar el resultado en xmm1. |
EVEX.256.66.0F38.WIG DD /r | VAESENCLAST ymm1, ymm2, ymm3/m256 | C | Valido | Valido | Realizar la última ronda de un flujo de encriptación AES (AVX512VL OR AVX10.1) utilizando dos datos de 128 bits (estado) de ymm2 con dos claves redondo de 128 bits de ymm3/m256; almacenar el resultado en ymm1. |
EVEX.512.66.0F38.WIG DD /r | VAESENCLAST zmm1, zmm2, zmm3/m512 | C | Valido | Valido | Realizar la última ronda de un flujo de encriptación AES (AVX512F OR AVX10.1) utilizando cuatro datos de 128 bits (estado) de zmm2 con cuatro claves redondo de 128 bits de zmm3/m512; almacenar el resultado en zmm1. |
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.reglectura y escriturabyte ModRM, campo reg (bits 5-3)modrm.rmlecturabyte ModRM, campo r/m (bits 2-0); con el byte SIB y el desplazamiento cuando el campo mod los pide
B
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
C
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 Mem
Coste medido
Cargando las mediciones de arch-data...
Descripción
Esta instrucción realiza la última ronda de un flujo de encriptación AES utilizando uno/dos/cuatro (dependiendo de la longitud vectorial) datos de 128 bits (estado) del primer operando de origen con uno/dos/cuatro (dependiendo de la longitud vectorial) redondo clave(s) del segundo operando de origen, y almacena el resultado en el operando de destino.
VEX y EVEX versiones codificadas de la instrucción permite 3-operando (no destructivo) operación. El legado versiones codificadas de la instrucción requiere que el primer operando de origen y el operando de destino sean los mismos y deben ser un registro XMM.
La forma codificada EVEX de esta instrucción no soporta la supresión de falla de memoria.
Operación
AESENCLAST
STATE := SRC1;
RoundKey := SRC2;
STATE := ShiftRows( STATE );
STATE := SubBytes( STATE );
DEST[127:0] := STATE XOR RoundKey;
DEST[MAXVL-1:128] (Unmodified)
VAESENCLAST (128b and 256b VEX Encoded Versions)
(KL, VL) = (1,128), (2,256)
FOR I=0 to KL-1:
STATE := SRC1.xmm[i]
RoundKey := SRC2.xmm[i]
STATE := ShiftRows( STATE )
STATE := SubBytes( STATE )
DEST.xmm[i] := STATE XOR RoundKey
DEST[MAXVL-1:VL] := 0
VAESENCLAST (EVEX Encoded Version)
(KL,VL) = (1,128), (2,256), (4,512)
FOR i = 0 to KL-1:
STATE := SRC1.xmm[i]
RoundKey := SRC2.xmm[i]
STATE := ShiftRows( STATE )
STATE := SubBytes( STATE )
DEST.xmm[i] := STATE XOR RoundKey
DEST[MAXVL-1:VL] := 0Intel C/C++ compilador intrínseco
(V)AESENCLAST __m128i _mm_aesenclast (__m128i, __m128i) VAESENCLAST __m256i _mm256_aesenclast_epi128(__m256i, __m256i);
VAESENCLAST __m512i _mm512_aesenclast_epi128(__m512i, __m512i);SIMD coma flotante Excepciones
None.
Otras excepciones
Ver Tabla 2-21, "Tipo 4 Condiciones de Excepción".
EVEX-encoded: Ver Tabla 2-52, "Tipo E4NF Clase Condiciones de Excepción".