pmul

Polynomial Multiply (SVE2)

PMUL <Zd>.B, <Zn>.B, <Zm>.B

Performs polynomial multiplication (GF(2) arithmetic).

Pseudocode Operation

No pseudocode available.

Encoding

Binary Layout
00000100
31:24
0
23
0
22
1
21
Zm
20:16
0110
15:12
0
11
1
10
Zn
9:5
Zd
4:0
 
Format SVE2 Crypto
Opcode 0x04206400
Extension SVE2

Related

Other forms of pmul

  • pmul Vector Polynomial Multiply

More in SVE2

Reference

Instruction Forms

Encoding Instruction ISA Bit pattern
0x2E209C00 PMUL <Vd>.<T>, <Vn>.<T>, <Vm>.<T> A64 0 | Q | 1 | 01110 | size | 1 | Rm | 10011 | 1 | Rn | Rd
0x04206400 PMUL <Zd>.B, <Zn>.B, <Zm>.B A64 00000100 | 0 | 0 | 1 | Zm | 0110 | 0 | 1 | Zn | Zd

Description

Polynomial multiply over [0, 1] all elements of the second source vector to corresponding elements of the first source vector and place the results in the corresponding elements of the destination vector. This instruction is unpredicated.

Operation

CheckSVEEnabled();
constant integer VL = CurrentVL;
constant integer elements = VL DIV esize;
bits(VL) operand1 = Z[n, VL];
bits(VL) operand2 = Z[m, VL];
bits(VL) result;

for e = 0 to elements-1
    bits(esize) element1 = Elem[operand1, e, esize];
    bits(esize) element2 = Elem[operand2, e, esize];
    Elem[result, e, esize] = PolynomialMult(element1, element2)<esize-1:0>;

Z[d, VL] = result;