Intel® PCLMULQDQ instruction is a new instruction available beginning with the all new 2010 Intel® Core™ processor family based on the 32nm Intel® microarchitecture codename Westmere. PCLMULQDQ instruction performs carry-less multiplication of two 64-bit operands.
This paper provides information on the instruction, and its usage for computing the Galois Hash. It also provides code examples for the usage of PCLMULQDQ, together with the new AES instructions (introduced together with PCLMULQDQ) for efficient implementation of AES in Galois Counter Mode (AES-GCM).
This version of the paper also provides high performance code examples for AES-GCM, and discloses, for the first time, their measured performance numbers.
[Revisions history: Rev. 1.0 in 4/2008; Rev. 2.0 in 5/2009; Rev. 2.01 in 9/2012; Rev. 2.02 in 4/2014]
Intel's compilers may or may not optimize to the same degree for non-Intel microprocessors for optimizations that are not unique to Intel microprocessors. These optimizations include SSE2, SSE3, and SSSE3 instruction sets and other optimizations. Intel does not guarantee the availability, functionality, or effectiveness of any optimization on microprocessors not manufactured by Intel. Microprocessor-dependent optimizations in this product are intended for use with Intel microprocessors. Certain optimizations not specific to Intel microarchitecture are reserved for Intel microprocessors. Please refer to the applicable product User and Reference Guides for more information regarding the specific instruction sets covered by this notice.
Notice revision #20110804