vpmsumd

Vector Polynomial Multiply-Sum Doubleword

vpmsumd vD, vA, vB

Performs GF(2) polynomial arithmetic on doublewords.

Encoding

Binary Layout
4
0:5
vD
6:10
vA
11:15
vB
16:20
1224
21:31
 
Format VX-form
Opcode 0x100004C8
Extension Vector Crypto

Operands

  • vD
    Target
  • vA
    Src A
  • vB
    Src B

Example

vpmsumd vd, va, vb

Related

More in Vector Crypto

Reference

Description

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.

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.