当我想在visual studio 2010中使用AVX2指令时,找不到符号“_mm256_max_epu8”

时间:2017-03-30 04:03:35

标签: c++ visual-studio-2010 avx2

环境:Win10,英特尔酷睿i7 5500U CPU,Visual Studio 2010 Ultimate

enter image description

enter image description here

现在我想使用" _mm256_max_epu8"英特尔SIMD指令在AVX2中,但Visual Studio 2010告诉我:

1> .. \ svCore \ svGrayMorph.cpp(838):错误C3861:“_ mm256_max_epu8”:找不到标识符

我发现应该在文件中声明AVX2指令:

... \ Microsoft Visual Studio 10.0 \ VC \ include \ immintrin.h

但是,该文件只有AVX指令," _mm256_max_epu8"和其他说明不在该文件中。

虽然Visual Studio 2013的immintrin.h文件包含AVX2指令。

SomeOne是否知道我可以做什么来在Visual Studio 2010中编译此代码?

非常感谢你。

2 个答案:

答案 0 :(得分:1)

如前所述,Visual Studio 2010不支持AVX2,您必须使用Visual Studio 2013.

但是如果你想使用可在两个版本的Visual Studio中编译的通用代码,你必须使用条件编译和宏。

有一个例子:

#if defined(_MSC_VER) && _MSC_VER >= 1700 //Visual Studio 2013
#define AVX2_ENABLE
#endif

#ifdef AVX2_ENABLE
void func()
{
     //code with AVX2
}
#else
void func()
{
     //code without AVX2
}
#endif

Here您可以在一个项目中找到更多如何使用不同SIMD扩展的示例。

答案 1 :(得分:0)

似乎符号_mm256_max_epu8可以与Visual Studio 2013Visual Studio 2012一起使用,就像在这两个内在列表中一样。

当然,它与VS2015

同样适用
  

visual studio 2010

中不存在      

Visual Studio 2010支持:/arch:SSE|SSE2|AVX

     

Visual Studio 2013支持:/arch:IA32|SSE|SSE2|AVX|AVX2