vncipher
Vector Inverse Cipher (AES)
Performs one round of an AES inverse cipher operation on the intermediate state array.
Details
The instruction performs one round of an AES inverse cipher operation, sequentially applying the transforms InvShiftRows(), InvSubBytes(), AddRoundKey(), and InvMixColumns() to the intermediate State array.
Pseudocode Operation
Programming Note
This instruction is used to perform a single round of the AES inverse cipher, which includes operations like InvShiftRows, InvSubBytes, AddRoundKey, and InvMixColumns. Ensure that the Vector Facility (MSR.VEC) is enabled before using this instruction; otherwise, a Vector_Unavailable exception will be raised. The input state and round key must be correctly loaded into the appropriate vector registers (VRA+32 and VRB+32), respectively, and the result will be stored in VRT+32. This operation is typically used in cryptographic algorithms that require AES decryption.
Example
Encoding
Operands
-
vD
Target State -
vA
Current State -
vB
Round Key -
VRT
Target Vector Register -
VRA
Source Vector Register containing the intermediate state array -
VRB
Source Vector Register containing the round key