_mm_stream_load_si128 (movntdqa) 是否修改其参数指向的内存?
Does _mm_stream_load_si128 (movntdqa) modify the memory its argument points to?
_mm_stream_load_si128
声明为
__m128i _mm_stream_load_si128 (__m128i * mem_addr)
而 _mm_load_si128
声明为
__m128i _mm_load_si128 (__m128i const* mem_addr)
前者是否修改了mem_addr
指向的内容?如果不是,那么声明非常量的动机是什么?
我认为这样声明是无缘无故的。请参阅 _mm256_stream_load_si256
和 _mm512_stream_load_si512
对于更宽的操作数相同,它们采用 const
参数。
同样在 Visual Studio 2015 附带的 <smmintrin.h>
中是 const
:
/*
* Load double quadword using non-temporal aligned hint
*/
extern __m128i _mm_stream_load_si128(const __m128i*);
_mm_stream_load_si128
声明为
__m128i _mm_stream_load_si128 (__m128i * mem_addr)
而 _mm_load_si128
声明为
__m128i _mm_load_si128 (__m128i const* mem_addr)
前者是否修改了mem_addr
指向的内容?如果不是,那么声明非常量的动机是什么?
我认为这样声明是无缘无故的。请参阅 _mm256_stream_load_si256
和 _mm512_stream_load_si512
对于更宽的操作数相同,它们采用 const
参数。
同样在 Visual Studio 2015 附带的 <smmintrin.h>
中是 const
:
/*
* Load double quadword using non-temporal aligned hint
*/
extern __m128i _mm_stream_load_si128(const __m128i*);