Visible to Intel only — GUID: GUID-DEF5C42F-DC28-41AA-AEDA-AF5ACC940376
Visible to Intel only — GUID: GUID-DEF5C42F-DC28-41AA-AEDA-AF5ACC940376
Cacheability Support Intrinsics
The prototypes for Intel® Streaming SIMD Extensions (Intel® SSE) intrinsics for cacheability support are in the xmmintrin.h header file.
To use these intrinsics, include the immintrin.h file as follows:
#include <immintrin.h>
Intrinsic Name |
Operation |
Corresponding |
---|---|---|
_mm_prefetch |
Load |
PREFETCH |
_mm_stream_pi |
Store |
MOVNTQ |
_mm_stream_ps |
Store |
MOVNTPS |
_mm256_stream_ps |
Store |
VMOVNTPS |
_mm_sfence |
Store fence |
SFENCE |
_mm_prefetch
void _mm_prefetch(char const*a, int sel);
Loads one cache line of data from address a to a location "closer" to the processor. The value sel specifies the type of prefetch operation: the constants _MM_HINT_T0, _MM_HINT_T1, _MM_HINT_T2, _MM_HINT_NTA, and _MM_HINT_ET0 should be used for systems based on IA-32 architecture, and correspond to the type of prefetch instruction.
The _MM_HINT_ET0 hint lowers the intrinsic being to the instruction PREFETCHW, which is not included in Intel® SSE instructions. Check if the target CPU supports the PREFETCHW instruction before using _MM_HINT_ET0.
_mm_stream_pi
void _mm_stream_pi(__m64 *p, __m64 a);
Stores the data in a to the address p without polluting the caches. This intrinsic requires you to empty the multimedia state for the MMX™ register. See the topic The EMMS Instruction: Why You Need It.
_mm_stream_ps
void _mm_stream_ps(float *p, __m128 a);
Stores the data in a to the address p without polluting the caches. The address must be 16-byte-aligned.
_mm256_stream_ps
void _mm256_stream_ps(float *p, __m256 a);
Stores the data in a to the address p without polluting the caches. The address must be 32-byte (VEX.256 encoded version) aligned.
_mm_sfence
void _mm_sfence(void);
Guarantees that every preceding store is globally visible before any subsequent store.