Store Operations (Integer SSE2 Intrinsics)

Microsoft Specific

The following store operation intrinsics and their respective instructions are functional on Intel processors supporting Streaming SIMD Extensions 2 (SSE2) instructions.

For an explanation of the syntax used in code samples in this topic, see Floating-Point Intrinsics Using Streaming SIMD Extensions.

SSE2 intrinsics use the __m128, __m128i, and __m128d data types, which are not supported on Itanium Processor Family (IPF) processors. Any SSE2 intrinsics that use the __m64 data type are not supported on x64 processors.

The emmintrin.h header file contains the declarations for the SSE2 instructions intrinsics.

void _mm_store_si128 (__m128i *p, __m128i a);

MOVDQA

Stores 128-bit value. Address p must be 16-byte aligned.

*p := a

For more information, see _mm_store_si128.

void _mm_storeu_si128 (__m128i *p, __m128i a);

MOVDQU

Stores 128-bit value. Address p does not need to be 16-byte aligned.

*p := a

For more information, see _mm_storeu_si128.

void _mm_maskmoveu_si128(__m128i d, __m128i n, char *p);

MASKMOVDQU

Conditionally store byte elements of d to address p. The high bit of each byte in the selector n determines whether the corresponding byte in d will be stored. Address p does not need to be 16-byte aligned.

if (n0[7]) p[0] := d0
if (n1[7]) p[1] := d1
...
if (n15[7]) p[15] := d15

For more information, see _mm_maskmoveu_si128.

void _mm_storel_epi64(__m128i *p, __m128i a);

MOVQ

Stores the lower 64 bits of the value pointed to by p.

*p[63:0]:=a0

See Also

Reference

Integer Memory and Initialization Using Streaming SIMD Extensions 2