所以我在編譯Dolphin時遇到這個錯誤。我已經嘗試過clang-3.7和3.8以及GCC 5.2和6.3。奇怪的是,所有其他_mm函數似乎都可以工作,只是這一個。錯誤:使用未聲明的標識符'_mm_shuffle_epi8'Ubuntu 16.04 Ryzen
-2
A
回答
1
SSE2是基線x86-64的,這就是爲什麼其他_mm
職能的工作(你可能只嘗試SSE2功能,沒有任何其他SSE3/SSSE3/SSE4功能,如_mm_abs_epi8
或_mm_cvtepi16_epi32
)。
你需要-mssse3
(在你的情況下,通過-march=native
或-march=znver1
啓用)使用SSSE3內在用gcc /鐺,不像MSVC。
注意-mssse3
不設置-mtune=
,但-march=
確實設置調整,所以最好使用-march=native
,而不是隻讓一對夫婦ISA擴展與-mpopcnt -msse4.1
什麼的,特別是如果你只打算運行一個目標CPU上的二進制文件。
例如,爲了使AVX2,它可能會更好使用-march=haswell
或-march=znver1
,因爲-mavx2
不會覆蓋的-mavx256-split-unaligned-load
的-mtune=generic
行爲,即使沒有AVX2,支持的CPU從它(https://gcc.gnu.org/bugzilla/show_bug.cgi?id=80568)受益。即-mtune=generic
總是使用完全通用的調整設置,而不是調整任何一組CPU支持啓用的擴展。
的SandyBridge確實受益於-mavx256-split-unaligned-load
/...store
,但它僅支持AVX,不AVX2。即使如此,只有當數據在運行時實際上沒有對齊時,如果您的數據在99%的時間內對齊,您可能不希望這樣。
相關問題
- 1. 錯誤C2065:未聲明的標識符
- 2. C++未聲明的標識符錯誤
- 3. 錯誤:未聲明的標識符'TMyClass'
- 4. 錯誤C2065:未聲明的標識符
- 5. null未聲明的標識符錯誤
- 6. 錯誤 - 未聲明的標識符的使用[UIFont familyNames]
- 7. 錯誤消息「使用未聲明的標識符的‘場’」
- 8. Objective-C中的「使用未聲明的標識符」錯誤-I
- 9. 使用未聲明的標識符的
- 10. LLDB錯誤:使用未聲明的標識符
- 11. 錯誤「使用未聲明的標識符」{IDENTIFIER}'「
- 12. 在CoreLocation中使用未聲明的標識符錯誤
- 13. 錯誤:使用未聲明的標識符'ctime_s'
- 14. 錯誤使用未聲明的標識符webview
- 15. CLLocationManager使用未聲明的標識符'錯誤'
- 16. 錯誤:使用未聲明的標識符'alertView'?
- 17. 使用未聲明的標識符錯誤
- 18. 錯誤:使用未聲明的標識符
- 19. NDK錯誤:使用未聲明的標識符'__min'
- 20. 錯誤:使用未聲明的標識符「errno_t」
- 21. 「使用未聲明的標識符」錯誤
- 22. 使用未聲明的標識符錯誤
- 23. 錯誤:在vscode上使用未聲明的標識符'out_of_range'
- 24. 錯誤:預期表達;使用未聲明的標識符
- 25. 錯誤:「使用未聲明的標識符'CFTree'」
- 26. 打開GL錯誤:使用未聲明的標識符'gl_FragColor'
- 27. 使用未聲明的標識符 'didReceiveMemoryWarning'
- 28. 使用未聲明的標識符AFHTTPClient
- 29. 使用未聲明的標識符
- 30. 使用未聲明的標識符NSLinkAttributeName
您嘗試過其他什麼內建函數? '_mm_shuffle_epi8'在SSSE3中;你是否包括''或''?你是用'-mssse3'編譯的嗎? –
nemequ
我已經加了,我試過那個標誌,但它仍然拒絕。我覺得我錯過了一些東西,或者GCC/clang沒有爲Zen架構啓用此功能。 –
Mitchell
如果你爲一個x86目標指定SSSE3,那麼你使用的是什麼CPU並不重要;即使對於實際上不支持的目標,編譯器也必須生成代碼。檢查以確保'__SSSE3__'在預處理器中定義(哪個-mssse3應該這樣做)。另外,請注意,它是ssse3而不是sse3 ... – nemequ