当我尝试使用 AVX 功能时,Clang 生成错误

bro*_*hir 3 c c++ clang

我使用的是 Windows 10,使用 Clang 版本 5(最近安装)。当我编译以下内容时

#define __AVX__
#define __AVX2__
#include <immintrin.h>

int main(void) {
    __m256i a, b, result;
    result = _mm256_add_epi64(a, b);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

 error: always_inline function '_mm256_add_epi64' requires target 
 feature 'avx2', but would be inlined into function 'main' that is 
 compiled without support for 'avx2'
    result = _mm256_add_epi64(a, b);
             ^
Run Code Online (Sandbox Code Playgroud)

MSVC 编译得很好。我需要使用什么编译器选项才能让 Clang 编译它?还是还有其他事情发生?

Bas*_*tch 6

如果您是本机编译(主机和目标是同一台机器,因此不是交叉编译),则考虑传递-march=nativeclang

另请参阅Clang 编译器的用户手册

请注意,Clang 编译器是开源的。您可以下载其源代码并对其进行改进。

  • @brothir 通常,所有特定于 clang 的选项甚至可以通过在前面添加 `-Xclang` 来传递给 clang-cl,例如 `-Xclang -march=native`。 (3认同)