Integer Store Operations for Streaming SIMD Extensions 2

The following store operation intrinsics and their respective instructions are functional in the Streaming SIMD Extensions 2 (SSE2).

The prototypes for SSE2 intrinsics are in the emmintrin.h header file.

void _mm_store_si128(__m128i *p, __m128i b)

(uses MOVDQA) Stores 128-bit value. Address p must be 16 byte aligned.
*p := a

void _mm_storeu_si128(__m128i *p, __m128i b)

(uses MOVDQU) Stores 128-bit value. Address p need not be 16-byte aligned.
*p := a

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

(uses 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 need not be 16-byte aligned.
if (n0[7]) p[0] := d0
if (n1[7]) p[1] := d1
...
if (n15[7]) p[15] := d15

void _mm_storel_epi64(__m128i *p, __m128i q)

(uses MOVQ) Stores the lower 64 bits of the value pointed to by p.
*p[63:0]:=a0