_mm_cvtsi64x_si128 的铿锵声支持
Posted
技术标签:
【中文标题】_mm_cvtsi64x_si128 的铿锵声支持【英文标题】:clang support of _mm_cvtsi64x_si128 【发布时间】:2014-11-15 00:04:50 【问题描述】:使用 clang-3.5.0(但不是 gcc-4.9.2,也不是 intel 编译器)我收到消息:
use of undeclared identifier '_mm_cvtsi64x_si128'; did you mean '_mm_cvtsi64_si128'
这是我发现在 intel intrisics guide 中记录的内在函数,并且有问题的代码确实包含 intinsics 指南中要求记录的包含:
#include "emmintrin.h"
我想知道这个错误是否是由于没有传递正确的 -mcpu= 标志,但我尝试了 -mcpu=nahelem,这对于这个 sse2 指令应该足够了。知道 clang 是否支持此内在函数,如果支持,需要哪些编译标志才能使用它?
【问题讨论】:
clang
在对 FPU 和内部函数的支持方面远远落后于 gcc
,我对此并不感到惊讶。经过快速的网络搜索,这里只提到了内在学 llvm.org/svn/llvm-project/llvm-gcc-4.0/trunk/gcc/ChangeLog.9 所以尝试包括 xmmintrin.h
【参考方案1】:
看起来 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 没有任何这些替代名称,但我可以调整我们的代码以使用非替代名称(我们的代码使用上面的最后两个替代名称)。
【讨论】:
以上是关于_mm_cvtsi64x_si128 的铿锵声支持的主要内容,如果未能解决你的问题,请参考以下文章
铿锵声:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用)而实现?