3

命令を機能させようとしていますが、このコードで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'|
4

2 に答える 2

2

ここには、複数のインクルージョンから始まる混乱はほとんどありません。

まず、あなたのコードはきれいな C ではなく、きれいな C++ でもありません。これは、これから何の利益も得られないため、頭痛の種になるだけのミックスです。

本当にC++でコーディングしたい場合は、いくつか追加して関連するものextern "C"を削除する必要がありC headersます.CIがそれを削除して代わりに#include <iostream>使用することをお勧めする場合.gccg++

また、同時に複数の SSE セットのヘッダーを含めています。よりクリーンなアプローチについては、この投稿を参照してください。

最後に、これはおそらくあなたが探しているビジネス ロジックを模倣しようとするプログラムのソース コードです。

#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
于 2013-07-07T02:14:36.463 に答える
1

元の質問の __m256 データ型を使用する例を次に示します。gcc または g++ 4.8.1、または VS2012 を使用してエラーなしでコンパイルします。

// gcc compile command line: gcc -mavx sample.c
// g++ compile command line: g++ -mavx sample.c
// VS2012 compile command line: cl sample.c

#include <intrin.h>

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

    return 0;
}
于 2013-07-07T16:14:57.507 に答える