Instrukční sada CLMUL (zkratka z anglického Carry-less Multiplication, doslova „bezpřenosové násobení“) je rozšířením instrukční sady x86 o několik strojových instrukcí pro hardwarovou podporu některých algoritmů založených na násobení polynomů nad konečným tělesem .
Společnost Intel oznámila zavedení tohoto rozšíření instrukční sady v roce 2008. Poprvé byla implementována v procesorech Westmere vyráběných od roku 2010. Je ve všech procesorech společnosti Intel počínaje generací Haswell a ve všech procesorech společnosti AMD počínaje modelem AMD Bulldozer.
Kromě šifrovacího režimu GCM, kvůli kterému byly instrukce zavedeny především, jsou používany také pro počítání cyklických redundantních součtů.
Cílem operace je vždy registr XMM (využívá tedy rozšíření SSE). Operandem může být rovněž registr XMM nebo paměť.
Instrukce | Opkód | Popis |
---|---|---|
PCLMULQDQ xmmreg,xmmrm,imm |
[rmi: 66 0f 3a 44 /r ib]
|
Bezpřenosové násobení dvou 64bitových polynomů nad konečným tělesem GF(2k). |
PCLMULLQLQDQ xmmreg,xmmrm |
[rm: 66 0f 3a 44 /r 00]
|
Bezpřenosové násobení nižších polovin dvou různých registrů. |
PCLMULHQLQDQ xmmreg,xmmrm |
[rm: 66 0f 3a 44 /r 01]
|
Bezpřenosové násobení vyšší poloviny cílového registru s nižší polovinou zdrojového registru. |
PCLMULLQHQDQ xmmreg,xmmrm |
[rm: 66 0f 3a 44 /r 10]
|
Bezpřenosové násobení nižší poloviny cílového registru s vyšší polovinou zdrojového registru. |
PCLMULHQHQDQ xmmreg,xmmrm |
[rm: 66 0f 3a 44 /r 11]
|
Bezpřenosové násobení vyšších polovin registrů. |
V tomto článku byly použity překlady textů z článků CLMUL na německé Wikipedii a CLMUL Instruction set na anglické Wikipedii.