Visual c++ Visual Studio VC2013在不使用AVX的情况下启用SSE4.1

Visual c++ Visual Studio VC2013在不使用AVX的情况下启用SSE4.1,visual-c++,Visual C++,我有一个相当简单的问题,但经过一段时间的搜索,我还没有找到真正的答案。微软建议启用AVX增强指令集,以便同时使用SSE4优化代码。 不幸的是,尽管有一些读数,这也强制使用支持AVX的CPU。是否有一种已知的方法可以在VC2013中启用SSE4而不强制执行AVX? 这个问题的背景很明显,我认为SSE4的支持时间更长,只需要较旧的CPU(我认为是从2006年开始),而AVX从2011年开始需要CPU。所讨论的dll只对SSE4进行了优化,但目前我必须坚持使用SSE2,牺牲性能以保持其正常工作。似乎/

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

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

#包括
#包括
使用名称空间std;
int main()
{
__declspec(align(16))浮点值[4]={1.3f,2.1f,4.3f,5.1f};
对于(int i=0;i<4;i++)

你想依赖SSE4的编译器优化吗?还是只想使用内部函数?完全优化会更好,但使用内部函数已经很好了。谢谢,这已经非常有用了!我进一步介绍了这个示例,并尝试使用/arch:IA32参数编译它,它也可以编译并工作-而MS说“您必须指定/arch:IA32以禁用为x86处理器生成SSE和SSE2指令。”-因此,我认为无论在那里设置了什么,都可以使用Intrinsic。这再次引发了更多关于性能差异和“启用增强指令集”的一般用途的问题“选项。尽管如此,我还是会暂时保留这个问题,看看是否有人对全面优化有更多的想法。经过更多的研究,这是唯一的答案。对于“启用增强指令集”的优化,尽管设置了什么,但Intrinics仍然有效。”似乎没有其他选择-虽然我从未见过为“一些随机代码”设置此选项时有任何性能差异。但这是一个不同的问题。
#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;
}