首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当我想在visual studio 2010中使用_mm256_max_epu8指令时,无法找到符号“AVX2”

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

Stack Overflow用户
提问于 2017-03-30 04:03:35
回答 2查看 399关注 0票数 1

环境: Win10,Intel Core i7 5500 2010,Visual 2010终极版

现在我想使用"_mm256_max_epu8“Intel指令,它在AVX2中,但是Visual 2010告诉我:

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

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

...\Microsoft VisualStudio10.0\VC\include\immintrin.h

然而,该文件只有AVX指令,"_mm256_max_epu8“和其他指令不在该文件中。

而Visual 2013的immintrin.h文件包含AVX2指令。

SomeOne知道如何在Visual 2010中编译这段代码吗?

非常感谢。

EN

回答 2

Stack Overflow用户

发布于 2017-03-30 06:14:41

如前所述,Visual 2010不支持AVX2,因此必须使用Visual 2013。

但是,如果要使用在Visual的两个版本中都可以编译的通用代码,则必须在使用宏时使用条件编译。

有一个例子:

代码语言:javascript
复制
#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

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

票数 1
EN

Stack Overflow用户

发布于 2017-03-30 06:18:55

在这两个Intrinsics列表中,符号_mm256_max_epu8似乎可以与20132012一起使用。

当然,它也适用于VS2015

但在2010中不存在 Visual 2010支持:/arch:SSE|SSE2|AVX, 和Visual 2013支持:/arch:IA32|SSE|SSE2|AVX|AVX2

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43108354

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档