我有一个相当简单的问题,但是经过一段时间的搜索,我仍然没有找到真正的答案。 Microsoft建议启用AVX增强指令集,以便也利用SSE4优化的代码。
不幸的是,尽管有一些读数,但这也强制使用了具有AVX功能的CPU。有没有已知的方法可以在不启用VC2013的情况下启用SSE4?
我想这个问题的背景很明显,我认为SSE4得到了更长的支持,并且只需要使用较旧的CPU(我认为最早是2006年),而AVX要求使用的是2011年以来的CPU。有问题的dll仅对SSE4使用了优化,但是现在我必须坚持SSE2会牺牲性能以保持其性能。

最佳答案

似乎/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;
}


您可以在线尝试herevisual-c&#43;&#43; - Visual Studio VC2013在没有AVX的情况下启用SSE4.1-LMLPHP

09-12 02:53