2014-11-15 56 views
2

鏗鏘-3.5.0(而不是GCC-4.9.2,也不是英特爾編譯器)我得到的消息:鐺支持_mm_cvtsi64x_si128

use of undeclared identifier '_mm_cvtsi64x_si128'; did you mean '_mm_cvtsi64_si128' 

這是一種內在的,我在intel intrisics guide找到記錄和有問題的代碼確實有包括真實記錄作爲intinsics指南要求:

#include "emmintrin.h" 

我在想,如果這個錯誤是沒有通過正確的-mcpu =標記的結果,但我想-mcpu = nahelem,對於這個sse2指令來說應該足夠了。任何想法,如果這種內在的支持鏗鏘,如果是的話,需要什麼編譯標誌,以允許它的使用?

+0

對於一般的FPU和內部函數的支持,'clang'就落後於'gcc',我並不驚訝地看到這一點。在快速網絡搜索後,只有在這裏提到內部鏈接https://llvm.org/svn/llvm-project/llvm-gcc-4.0/trunk/gcc/ChangeLog.9,所以儘量包括'xmmintrin.h' – user2485710 2014-11-15 00:13:07

回答

2

它看起來像有英特爾的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 

貌似鏗鏘的emmintrin.h沒有任何這些備選名字,但我可以調整我們的代碼使用非交替(我們的代碼使用了上面兩個替代名稱)。