pmul
Polynomial Multiply (SVE2)
PMUL <Zd>.B, <Zn>.B, <Zm>.B
Performs polynomial multiplication (GF(2) arithmetic).
Pseudocode Operation
No pseudocode available.
Reference
View in Arm A64 ISA Reference ↗
Arm A64 ISA
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;