_mm_aesimc_si128

Microsoft Specific

Emits the Advanced Encryption Standard (AES) instruction aesimc. This instruction performs the InverseMixColumn operation.

__m128i _mm_aesimc_si128 (
   __m128i v, 
);

Parameters

Parameter

Description

[in] v

The data that this instruction inverts.

Return value

The inverted data.

Requirements

Intrinsic

Architecture

_mm_aesimc_si128

x86, x64

Header file <wmmintrin.h>

Remarks

To perform decryption, you should use the aesimc instruction on all the AES expanded round keys. This prepares them for decryption by using the Equivalent Inverse Cipher.

Example

#include <wmmintrin.h>
#include <stdio.h>

int main()
{

    __m128i a;

    a.m128i_u64[1] = 0x8899AABBCCDDEEFF;
    a.m128i_u64[0] = 0x0123456789ABCDEF;

    __m128i res = _mm_aesimc_si128( a );

    printf_s("Original a: 0x%016I64x%016I64x\n",
                a.m128i_u64[1], a.m128i_u64[0]);

    printf_s("Result res: 0x%016I64x%016I64x\n",
                res.m128i_u64[1], res.m128i_u64[0]);

    return 0;
}
Original a: 0x8899aabbccddeeff0123456789abcdef
Result res: 0x6633441122770055c66c82284ee40aa0

See Also

Reference

Compiler Intrinsics

AES Intrinsics