未声明的C++内部

未声明的C++内部,c++,gcc,compiler-errors,intrinsics,C++,Gcc,Compiler Errors,Intrinsics,我正在学习使用内部函数而不是asm内联。昨天,他们在工作,但我今天总是出错。什么也没变 #include <iostream> #include <intrin.h> // immintrin.h, smmintrin.h ... tried all, never worked using namespace std; int main() { _m256_zeroupper(); // __mm256_zeroupper(); doe

我正在学习使用内部函数而不是asm内联。昨天,他们在工作,但我今天总是出错。什么也没变

#include <iostream>
#include <intrin.h> // immintrin.h, smmintrin.h ... tried all, never worked

using namespace std;

    int main()
    {
        _m256_zeroupper(); // __mm256_zeroupper(); does not work too
        _mm128 x; // __mm128 x; does not work too
        _mm256 y; // __mm256 y; does not work too
        _m256_zeroupper(); // __mm256_zeroupper();  does not work too
        cout << "Hello world!" << endl;
        return 0;
    }
在64位cpu和64位windows上使用64位最新版本的gcc。 CPU是FX8150。 尝试了-march=bdver1-mtune=bdver1,它产生了数百个垃圾错误

所有这些都意味着我的CPU快死了吗

编辑:其他一些项目正在工作,但我没有改变任何事情。这必须是一个项目特定的事情。 使用code::blocks,当我右键单击一个标题并选择open时,它会给出找不到的错误,但在编译与此相关的代码时不会给出任何错误,只是针对intrinsinc命令的错误。同样适用于工作项目他们编译所有内容并工作,但在右键单击并单击“打开”时找不到头文件。可能是其他windows服务在干扰?我不知道,但是编译器的错误正在消失,并且一次又一次地出现。重新安装代码块也无法解决此问题。只有一些项目可以使用intrinsic,而其他项目即使所有项目都有相同的头,也不能使用intrinsic

下面的代码也不起作用

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

int main()
{
    _m256_zeroupper();

    __mm128 x;

    __mm256 y;

    _m256_zeroupper();
    cout << "Hello world!" << endl;
    return 0;
}

有三件事可以让代码正常工作:

确保您使用的是-mavx编译标志

您的变量应声明为uu m256而不是u mm256

确保你包括了immintrin.h


有三件事可以让代码正常工作:

确保您使用的是-mavx编译标志

您的变量应声明为uu m256而不是u mm256

确保你包括了immintrin.h


您正在使用哪些编译器选项?是否启用了正确的处理器类型?请记住,编译器内部函数非常特定于编译器。检查GCC中针对其目标的可用功能。FX-8150已尝试-march=bdver1-mtune=bdver1,但它产生了数百个垃圾错误。我如何启用avx以允许它从标题声明avx?GCC和clang的最新版本以及ICC升级了标题,函数使用mm前缀,变量使用uM256。您使用的编译器选项是什么?是否启用了正确的处理器类型?请记住,编译器内部函数非常特定于编译器。检查GCC中针对其目标的可用功能。FX-8150尝试了-march=bdver1-mtune=bdver1,它产生了数百个垃圾错误。如何使avx允许它从标题声明avx?GCC和clang以及ICC的最新版本升级了标题,对函数使用_mm前缀,对变量使用__m256。或者更好,-march=native或-march=haswell,而不仅仅是-mavx。另请参见re:gcc的tune=generic将未对齐的256b加载/存储拆分为movdqu/vinsertf128。或者使用-mavx-mno-avx256-split-unaligned-load-mno-avx256-split-unaligned-store,除非您实际上正在调整SnB,并且您的数据实际上大部分时间都未对齐。或者更好,-march=native或-march=haswell,而不仅仅是-mavx。另请参见re:gcc的tune=generic将未对齐的256b加载/存储拆分为movdqu/vinsertf128。或者使用-mavx-mno-avx256-split-unaligned-load-mno-avx256-split-unaligned-store,除非您实际上正在为SnB进行调优,并且您的数据实际上大部分时间未对齐。
#include <iostream>
#include <immintrin.h>
using namespace std;

int main()
{
    _m256_zeroupper();

    __mm128 x;

    __mm256 y;

    _m256_zeroupper();
    cout << "Hello world!" << endl;
    return 0;
}