CLMUL instruction set

Mathematically, the instruction implements multiplication of polynomials over the finite field GF(2) where the bitstring

The CLMUL instruction also allows a more efficient implementation of the closely related multiplication of larger finite fields GF(2k) than the traditional instruction set.

[2] One use of these instructions is to improve the speed of applications doing block cipher encryption in Galois/Counter Mode, which depends on finite field GF(2k) multiplication.

Another application is the fast calculation of CRC values,[3] including those used to implement the LZ77 sliding window DEFLATE algorithm in zlib and pngcrush.

SPARC calls their version XMULX, for "XOR multiplication".

Mnemonics specifying specific values of the immediate operand are also defined: A EVEX vectorized version (VPCLMULQDQ) is seen in AVX-512.

The presence of the CLMUL instruction set can be checked by testing one of the CPU feature bits.