Developer Guide and Reference

Contents

Intrinsics for Carry-less Multiplication Instruction and Advanced Encryption Standard Instructions

The prototypes for the Carry-less multiplication intrinsic and the Advanced Encryption Standard (AES) intrinsics are defined in the
wmmintrin.h
file.
To use these intrinsics, include the
immintrin.h
file as follows:
#include <immintrin.h>

Carry-less Multiplication Intrinsic

The single general purpose block encryption intrinsic description is provided below.
__m128i _mm_clmulepi64_si128(__m128i v1, __m128i v2, const int imm8);
Performs a carry-less multiplication of one quadword of
v1
by one quadword of
v2
, and returns the result. The
imm8
value is used to determine which quadwords of
v1
and
v2
should be used.
Corresponding Instruction:
PCLMULQDQ

Advanced Encryption Standard Intrinsics

The AES intrinsics are described below.
__m128i _mm_aesdec_si128(__m128i v, __m128i rkey);
Performs one round of an AES decryption flow using the Equivalent Inverse Cipher operating on a 128-bit data (state) from
v
with a 128-bit round key from
rkey
.
Corresponding Instruction:
AESDEC
__m128i _mm_aesdeclast_si128(__m128i v, __m128i rkey);
Performs the last round of an AES decryption flow using the Equivalent Inverse Cipher operating on a 128-bit data (state) from
v
with a 128-bit round key from
rkey
.
Corresponding Instruction:
AESDECLAST
__m128i _mm_aesenc_si128(__m128i v, __m128i rkey);
Performs one round of an AES encryption flow operating on a 128-bit data (state) from
v
with a 128-bit round key from
rkey
.
Corresponding Instruction:
AESENC
__m128i _mm_aesenclast_si128(__m128i v, __m128i rkey);
Performs the last round of an AES encryption flow operating on a 128-bit data (state) from
v
with a 128-bit round key from
rkey
.
Corresponding Instruction:
AESENCLAST
__m128i _mm_aesimc_si128(__m128i v);
Performs the InvMixColumn transformation on a 128-bit round key from
v
and returns the result.
Corresponding Instruction:
AESIMC
__m128i _mm_aeskeygenassist_si128(__m128i ckey, const int rcon);
Assists in AES round key generation using an 8-bit Round Constant (RCON) specified in
rcon
operating on 128 bits of data specified in
ckey
and returns the result.
Corresponding Instruction:
AESKEYGENASSIST

Product and Performance Information

1

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