Clang _mm_cvtsi64x_si128的强大支持

Clang _mm_cvtsi64x_si128的强大支持,clang,Clang,使用clang-3.5.0(但不是gcc-4.9.2,也不是英特尔编译器),我得到的信息是: use of undeclared identifier '_mm_cvtsi64x_si128'; did you mean '_mm_cvtsi64_si128' 这是我在中发现的一个内在特性,并且所讨论的代码确实包含了intinsics指南中所要求的内容: #include "emmintrin.h" 我想知道这个错误是否是由于没有传递正确的-mcpu=flags导致的,但是我尝试了-mcpu

使用clang-3.5.0(但不是gcc-4.9.2,也不是英特尔编译器),我得到的信息是:

use of undeclared identifier '_mm_cvtsi64x_si128'; did you mean '_mm_cvtsi64_si128'
这是我在中发现的一个内在特性,并且所讨论的代码确实包含了intinsics指南中所要求的内容:

#include "emmintrin.h"

我想知道这个错误是否是由于没有传递正确的-mcpu=flags导致的,但是我尝试了-mcpu=nahelem,这对于这个sse2指令应该足够了。你知道clang是否支持此内在函数吗?如果支持,需要什么编译标志才能使用它?

看起来intel的emmintrin.h中有两个可选的内在函数名:

#define _mm_load_pd1 _mm_load1_pd
#define _mm_set_pd1 _mm_set1_pd
#define _mm_store_pd1 _mm_store1_pd
#define _mm_cvtsi64x_si128 _mm_cvtsi64_si128
#define _mm_cvtsi128_si64x _mm_cvtsi128_si64

看起来像是clang的emmintrin.h没有任何替代名称,但是我可以调整我们的代码以使用非替代名称(我们的代码同时使用上面最后两个替代名称)。

clang
远远落后于
gcc
,从总体上来说,我并不惊讶于看到这一点。在快速的网络搜索之后,这里只提到了instrinsics,所以尝试包括
xmmintrin.h