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