assemblyx86x86-64sseinstruction-set

What does the "P" prefix stand for in the x86 instruction PCLMULQDQ?


In the Carry-less Multiplication x86 instruction, PCLMULQDQ, what does the "P" prefix stand for?

I've looked in these sources, but none of them explain the mnemonics.

Secondly, what does "QDQ" stand for?


Solution

  • P is for Packed (integer). All SSE/AVX integer instructions have mnemonics starting with p, like paddb. (Or vp for the AVX versions). As opposed to ...ps (packed-single) and ...pd packed-double instructions.

    Q for Quad-word (64-bit) chunks of the source operand multiplying into a Double-Quad (128-bit) integer.

    Thus P CLMUL Q DQ. (There aren't other size combinations of clmul at the moment, but it's not a bad thing for the mnemonic to specify.)


    FP instructions skip the leading p, and instead use suffixes like ps (packed single-precision) or sd (scalar double). e.g. vaddpd is the AVX/AVX-512/AVX10 version of ADD Packed Double.


    Related: