_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*);