2012-11-04 32 views
2

我使用Xcode 4.5.2和「Apple LLVM Compiler 4.1」(Clang)。當AVX被啓用時,Clang會產生較慢的代碼?

我試圖編譯一個代碼,嚴重依賴SSX內在函數啓用AVX(沒有_mm256 *函數和沒有__m256變量),並獲得較慢的代碼,然後我得到時,只有SSE 4.2啓用。

對此有任何合理的解釋嗎?

+1

如果您使用任何SSE庫函數在VEC編碼的SSE(如AVX中)和傳統SSE之間切換,而不使用'vzeroupper',則可能導致嚴重失速。除此之外,它應該更快,因爲VEC編碼了三個操作數指令。通過重新編譯AVX,我在純128位代碼中獲得了10%的增益。 – hirschhornsalz

+0

謝謝。如何檢查代碼中是否有這樣的切換功能(也許它們來自我使用的第三方庫)? –

回答

3

目前LLVM已經開啓了與AVX性能相關的錯誤,例如such as this one

可以找到完整的avx相關的bug列表here

相關問題