vpmsumd
Vector Polynomial Multiply-Sum Doubleword
Performs GF(2) polynomial arithmetic on doublewords.
Details
Performs Galois Field GF(2) polynomial multiplication and summation on doubleword elements. The instruction multiplies corresponding doubleword elements from vA and vB using polynomial arithmetic over GF(2), accumulating partial products into the destination register vD. This instruction is part of the Vector Crypto extension and does not affect CR0 or condition registers.
Pseudocode Operation
vD[0:63] ← GF(2)_multiply_sum(vA[0:63], vB[0:63])
vD[64:127] ← GF(2)_multiply_sum(vA[64:127], vB[64:127])
Programming Note
The vpmsumd instruction is commonly used for performing polynomial multiplication and summation operations on large datasets efficiently. Ensure that the input vectors are properly aligned to doubleword boundaries to avoid alignment faults. This instruction operates at user privilege level, but care must be taken to handle potential overflow conditions in the sum results. Performance can be optimized by ensuring that the data is loaded into vector registers before executing vpmsumd.
Example
Encoding
Operands
-
vD
Target -
vA
Src A -
vB
Src B