gpt4 book ai didi

c++ - SSE2 函数如何从它应该在的 header 中丢失?

转载 作者:太空狗 更新时间:2023-10-29 21:09:34 32 4
gpt4 key购买 nike

我在 VS2013 上使用 SSE2 指令,我意识到 Intel documentation 中的一些函数标题中缺少它们应该在的标题中。

无效的方法_mm_storeu_si32 (void* mem_addr, __m128i a)应该在 #include <immintrin.h>但事实并非如此。我确实可以从此 header 访问其他方法,例如 __m128d _mm_undefined_pd (void)例如。

如果我在头文件本身(由 VS2013 提供)中搜索,确实没有提到 _mm_storeu_si32说明。

这怎么可能?

最佳答案

在旧的离线内在函数指南中,_mm_storeu_si32 列在“其他”部分下。现在,在线intrinsics guide它列在 SSE2 下,但并非所有编译器都已实现它。作为 (store_b) 的可移植解决方案,您可以使用:

#include<immintrin.h>
void storeu_a(void* mem_addr, __m128i a) {
_mm_storeu_si32(mem_addr, a);
return;
}

void storeu_b(void* mem_addr, __m128i a) {
_mm_store_ss((float*)mem_addr, _mm_castsi128_ps(a));
return;
}

用 clang 编译为 identical code ,但其他编译器可能会选择 movd 而不是 movssstore_a 和/或 store_b:

storeu_a(void*, long long __vector(2)):                     # @storeu_a(void*, long long __vector(2))
movss dword ptr [rdi], xmm0
ret
storeu_b(void*, long long __vector(2)): # @storeu_b(void*, long long __vector(2))
movss dword ptr [rdi], xmm0
ret

关于c++ - SSE2 函数如何从它应该在的 header 中丢失?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58063933/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com