aesd

AES Decrypt (A64)

AESD <Vd>.16B, <Vm>.16B

AES single round decryption (AArch64 NEON).

Details

AES single round decryption on 128-bit state using 128-bit round key. Applies InvSubBytes, InvShiftRows, InvMixColumns, and AddRoundKey transformations. Used in AES decryption loops (not the final round). Requires Crypto extension. Condition flags are not affected.

Pseudocode Operation

state ← Vd.B[0:15]
key ← Vm.B[0:15]
state ← InvSubBytes(state)
state ← InvShiftRows(state)
state ← InvMixColumns(state)
state ← state ⊕ key
Vd.B[0:15] ← state

Example

AESD v0.4s.16B, v2.4s.16B

Encoding

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

Operands

  • Vd
    State
  • Vm
    Key

Reference (Arm A64 ISA)

Instruction Forms

Encoding Instruction ISA Bit pattern
0x4E285800 AESD <Vd>.16B, <Vn>.16B A64 01001110 | 00 | 101000010 | 1 | 10 | Rn | Rd
0x4522E400 AESD <Zdn>.B, <Zdn>.B, <Zm>.B A64 01000101 | 0 | 0 | 10001 | 0 | 11100 | 1 | Zm | Zdn

Description

AES single round decryption.

Operation

AArch64.CheckFPAdvSIMDEnabled();

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