c++ - SSE HADDPS 错误 : '__m256' does not name a type?

标签 c++ types g++ sse intrinsics

我正在尝试让 HADDPS 指令工作,但我似乎无法在此代码中声明 __256

#include <xmmintrin.h>
#include <emmintrin.h>
#include <pmmintrin.h>
#include <stdio.h>
#include <stdint.h>
#include <iostream>

__m256 HADDPS(__m256 __X, __m256 __Y)
{
    return _mm256_hadd_ps (__X, __Y);
}
int main()
{
    //horizontal add packed single-------------------------------------------------
    __m256 HADDPSA = _mm_set_ps(4.0f, 3.0f, 2.0f, 1.0f);
    __m256 HADDPSB = _mm_set_ps(4.0f, 3.0f, 2.0f, 1.0f);
    __m256 HADDPSR = HADDPS(HADDPSA, HADDPSB);

    return 0;
}

我将 g++ 与 -msse -msse2 -msse3 -msse4 结合使用。

这是错误。

HADDPS.cpp|8|error: '__m256' does not name a type|
HADDPS.cpp||In function 'int main()':|
HADDPS.cpp|15|error: '__m256' was not declared in this scope|
HADDPS.cpp|15|error: expected ';' before 'HADDPSA'|
HADDPS.cpp|16|error: expected ';' before 'HADDPSB'|
HADDPS.cpp|17|error: expected ';' before 'HADDPSR'|

最佳答案

从您拥有的多个内含物开始,这里几乎没有困惑。

首先,您的代码既不是干净的 C,也不是干净的 C++,这种混合只会让您头疼,因为您不会从中获得任何好处。

如果你真的想用 C++ 编写代码,你应该添加一些 extern "C"并删除 C headers涉及,如果您更喜欢 C,我建议删除 #include <iostream>并使用 gcc而不是 g++ .

您还同时包含多个 SSE 集的 header ,请参阅 this post更清洁的方法。

最后,这是一个试图模仿您可能正在寻找的业务逻辑的程序的源代码

#include <pmmintrin.h>
#include <immintrin.h>

__m128 HADDPS(__m128 __X, __m128 __Y)
{
  return _mm_hadd_ps (__X, __Y);
}

int main()
{
  __m128 HADDPSA = _mm_set_ps(4.0f, 3.0f, 2.0f, 1.0f);
  __m128 HADDPSB = _mm_set_ps(4.0f, 3.0f, 2.0f, 1.0f);
  __m128 HADDPSR = HADDPS(HADDPSA, HADDPSB);

  return 0;
}

你应该编译它

gcc -msse3 main.c

关于c++ - SSE HADDPS 错误 : '__m256' does not name a type?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17508392/

相关文章:

opencv - 在Beaglebone中使用openCV编译C++代码

c++ - "undefined reference"到模板类函数

c++ - 编译器在处理 volatile 内存位置时必须遵循哪些规则?

python - 检查数字是否为 decimal.Python 中的 Decimal 类型

haskell - 发生检查: cannot construct the infinite type

c++ - 使用 mingw 和 g++ 4.7.2 让 std::thread/mutex 在 Win7 下工作

c++ - 为什么iterator vector::insert填充后无效:iterator insert(const_iterator position, size_type n, const value_type& val);

c++ - 组合和继承设计问题

java - 泛型 - 动态创建数据

c++ - 编译错误 : "no matching function for call to" when returning static_cast reference