4

我在一些网站上读到,当使用 SSE2 架构并检测 AVX 支持运行时时,MSVC 实际上可以发出 AVX 指令。这是真的吗?

我测试了各种肯定会受益于 AVX/AVX2 支持的循环,但是当在调试器中运行时,我真的找不到任何 AVX 指令。

当使用 /arch:AVX 时,它会发出 AVX 指令,但它当然会在不支持它的 CPU 上崩溃(经过测试),因此也没有运行时检测。我可以使用 AVX 内在函数,它会成功地从它们创建 AVX 指令。有任何想法吗?

4

1 回答 1

2

我已经联系了 VC++ 团队,答案是“不”。问题下方评论中链接的错误报告仅显示正常错误,而不是自动调度代码生成器中的错误。

因此,如果指定了 /arch:SSE2(默认情况下),VC++ 只能自动调度到 SSE4。这是当前支持的唯一自动调度形式。换句话说,VC++ 不能自动分派到 AVX/AVX2。

于 2018-05-25T05:30:25.310 回答