2

私はSSE組み込み関数をいじろうとしています。4つの16ビット要素を含む2つのベクトルを追加するだけのテストプログラムを作成しました。

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

void test_vec_add(){
  const int length = 4;
  float product[128*4]  __attribute__ ((aligned(16)));
  _m128 x = _mm_set_ps(1.0f,2.0f,3.0f,4.0f);
  _m128 y = _mm_set_ps(1.0f,2.0f,3.0f,4.0f);
  _m128 z = _mm_add_ps(x,y);
  _mm_store_ps(product,z);
}
int main(){
  test_vec_add();
}

私はこのコードをコンパイルしています

g++ -msse3 test_sse.cpp

ただし、次の複雑なエラーが発生します

test_sse.cpp: In function ‘void test_vec_add()’:
test_sse.cpp:7:3: error: ‘_m128’ was not declared in this scope
test_sse.cpp:7:9: error: expected ‘;’ before ‘x’
test_sse.cpp:8:9: error: expected ‘;’ before ‘y’
test_sse.cpp:9:9: error: expected ‘;’ before ‘z’
test_sse.cpp:10:24: error: ‘z’ was not declared in this scope
test_sse.cpp: In function ‘int main()’:
test_sse.cpp:15:20: error: ‘test_vec_add’ was not declared in this scope

それはおそらく本当に間抜けな間違いですが、私はそれがどこにあるのか指を置くことができません。どんな助けでも大歓迎です。

4

1 に答える 1

8

単純なタイプミスです。

などのタイプ__m128は、2つのアンダースコアで始まります。などの機能は、_mm_store_psアンダースコアが1つだけで始まります。

于 2012-11-14T07:55:45.180 に答える