vpmsumd

Vector Polynomial Multiply-Sum Doubleword

vpmsumd vD, vA, vB

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

vpmsumd vd, va, vb

Encoding

Binary Layout
4
0
vD
6
vA
11
vB
16
1224
21
 
Format VX-form
Opcode 0x100004C8
Extension Vector Crypto

Operands

  • vD
    Target
  • vA
    Src A
  • vB
    Src B