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
Example
AESD v0.4s.16B, v2.4s.16B
Encoding
Binary Layout
01001110
00
101000010
1
10
Rn
Rd
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;