CLMUL
Operation
Writes the low selected-width half of the carryless source-by-destination product.
Assembler Syntax
CLMUL.{B|W|L|Q}(z) <ea>(e), Rn(d)
CLMUL.{B|W|L|Q}(z) Rn(s), Rn(d)
Privilege
Unprivileged
Repeat eligibility
REP eligible; REPcc observes dst
Forms the carryless polynomial product of the selected-width source and destination values and writes its low half to the destination.
Treat each selected-width operand as a polynomial over \(\operatorname{GF}(2)\), with operand bit \(i\) as the coefficient of \(x^i\). Their double-width product is $\(P = \bigoplus_{i=0}^{n-1} s_i (d \ll i) .\)$ Addition in this expression is exclusive-or, so no carry propagates between bit positions. CLMUL writes the low \(n\) bits of \(P\) to the destination.
2.75in
Encodings
CLMUL.{B|W|L|Q}(z) <ea>(e), Rn(d)
Format: Instruction format for CLMUL.{B|W|L|Q}(z) <ea>(e), Rn(d)
2.75in CLMUL.{B|W|L|Q}(z) Rn(s), Rn(d)
Format: Instruction format for CLMUL.{B|W|L|Q}(z) Rn(s), Rn(d)