aese

AES Encrypt

AESE <Vd>.<T>, <Vn>.<T>

Performs one round of AES encryption.

Details

Performs a single round of AES (Advanced Encryption Standard) encryption on the 128-bit value in the source register using the key in Vn, producing the result in Vd. This implements the AES encryption state transformation (SubBytes, ShiftRows, MixColumns, AddRoundKey) for one round. Executes in AArch64 with Crypto extension; condition flags are not affected. This instruction is part of the AES cryptographic instruction set.

Pseudocode Operation

Vd ← AES_EncryptRound(Vd, Vn)

Example

AESE v0.4s.T, v1.4s.T

Encoding

Binary Layout
01001110
00
101000010
0
10
Rn
Rd
 
Format Crypto
Opcode 0x4E284800
Extension Crypto

Operands

  • Vd
    Data
  • Vn
    Key

Reference (Arm A64 ISA)

Instruction Forms

Encoding Instruction ISA Bit pattern
0x4E284800 AESE <Vd>.16B, <Vn>.16B A64 01001110 | 00 | 101000010 | 0 | 10 | Rn | Rd
0x4522E000 AESE <Zdn>.B, <Zdn>.B, <Zm>.B A64 01000101 | 0 | 0 | 10001 | 0 | 11100 | 0 | Zm | Zdn

Description

AES single round encryption.

Operation

AArch64.CheckFPAdvSIMDEnabled();

bits(128) operand1 = V[d, 128];
bits(128) operand2 = V[n, 128];
bits(128) result;
result = operand1 EOR operand2;
result = AESSubBytes(AESShiftRows(result));

V[d, 128] = result;