Cache Support for Streaming SIMD Extensions 2 Integer Operations
Microsoft Specific
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_stream_si128(__m128i *p, __m128i a)
MOVNTDQ
Stores the data in a to the address p without polluting the caches. If the cache line containing address p is already in the cache, the cache will be updated. Address p must be 16-byte aligned.
*p := a
void _mm_stream_si32(int *p, int a)
MOVNTI
Stores the data in a to the address p without polluting the caches. If the cache line containing address p is already in the cache, the cache will be updated.
*p := a
void _mm_clflush(void const*p)
CLFLUSH
Cache line containing p is flushed and invalidated from all caches in the coherency domain.
void _mm_lfence(void)
LFENCE
Guarantees that every load instruction that precedes, in program order, the load fence instruction is globally visible before any load instruction that follows the fence in program order.
void _mm_mfence(void)
MFENCE
Guarantees that every memory access that precedes, in program order, the memory fence instruction is globally visible before any memory instruction that follows the fence in program order.
void _mm_pause(void)
PAUSE
The execution of the next instruction is delayed an implementation specific amount of time. The instruction does not modify the architectural state. This intrinsic provides especially significant performance gain and described in more detail in the following section.