【发布时间】:2012-11-04 21:44:48
【问题描述】:
我将 Xcode 4.5.2 与“Apple LLVM Compiler 4.1”(Clang)一起使用。
我尝试编译一个严重依赖于启用 AVX 的 SSE 内在函数的代码(没有 _mm256* 函数,也没有 __m256 变量)并且得到的代码比仅启用 SSE 4.2 时的代码慢。
这有什么合理的解释吗?
【问题讨论】:
-
如果您使用任何 SSE 库函数在 VEC 编码的 SSE(如在 AVX 中)和旧版 SSE 之间切换而不使用
vzeroupper可能会导致严重停顿。除此之外,它应该更快,因为 VEC 编码了三个操作数指令。通过为 AVX 重新编译,我在纯 128 位代码中获得了 10% 的收益。 -
谢谢。如何检查代码中是否有这样的切换功能(可能来自我使用的第三方库)?
标签: xcode clang sse vectorization avx