c - _mm_stream_load_si128 (movntdqa) 是否修改其参数指向的内存?

标签 c assembly x86 sse intrinsics

_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争论。
也在 <smmintrin.h> Visual Studio 2015 附带的是 const :

/*
 * Load double quadword using non-temporal aligned hint
 */

extern __m128i _mm_stream_load_si128(const __m128i*);

关于c - _mm_stream_load_si128 (movntdqa) 是否修改其参数指向的内存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69108037/

相关文章:

assembly - 如何让用户的十六进制输入在 x86 程序集(16 位 DOS)中打印为十进制?

c - gcc 的缓冲区溢出示例

c - 没有 sizeof 运算符的数组大小

c - 加载ELF文件到内存

assembly - 为什么在 NASM 中使用 RIP 相对寻址?

gcc - 在 GCC 内联汇编中检索 ZF

c - 在 Windows 上关闭子进程的非标准匿名管道句柄的最佳方法是什么?

cJSON内存泄漏

assembly - 在 NASM 中使用 OR r/m32、imm32

linux - 获取 C++ 代码的 x86 指令大小?