Visual Studio VC2013 在没有 AVX 的情况下启用 SSE4.1

Gna*_*mpf 5 visual-c++

我有一个相当简单的问题,但经过一段时间的搜索后,我还没有找到真正的答案。Microsoft 建议启用 AVX 增强指令集,以便也利用 SSE4 优化代码。不幸的是,尽管有一些读数,这也强制使用支持 AVX 的 CPU。有没有一种已知的方法可以在 VC2013 中启用 SSE4 而不强制执行 AVX?这个问题的背景很明显,我认为,SSE4 的支持时间更长,只需要较旧的 CPU(我认为首先是 2006 年的),而 AVX 需要 2011 年的 CPU。有问题的 dll 仅使用 SSE4 的优化,但现在我必须坚持SSE2 牺牲性能以保持其正常运行。

Naz*_*554 4

该标志似乎/arch:SSE2增加了对 SSE2 和更高版本内在函数的支持。我没有安装 Visual Studio,但此示例有效(_mm_floor_ps特定于 SSE4):

#include <smmintrin.h>
#include <iostream>
using namespace std;

int main()
{
    __declspec(align(16)) float values[4] = {1.3f, 2.1f, 4.3f, 5.1f};
    for(int i = 0; i < 4; i++)
        cout << values[i] << ' ';
    cout << endl;

    __m128 x = _mm_load_ps(values);
    x = _mm_floor_ps(x);
    _mm_store_ps(values, x);

   for(int i = 0; i < 4; i++)
        cout << values[i] << ' ';
    cout << endl;
}
Run Code Online (Sandbox Code Playgroud)

您可以在这里在线尝试。编译结果