2012-02-20 15 views
1

ubuntu LinuxシステムでSSEに問題があります。SSE命令はどのように使用できますか?

Linux上でmsdn(sse4) 使用SSE4.1操作上の例のソースコード

gcc -o test test.c -msse4.1 

エラーメッセージ:

error: request for member 'm128i_u16' in something not a structure or union 

どのように私は、このサンプルコードを使用することができますか? また、任意のコード例を使用できますか?

+10

GCCで* Microsoftコンパイラ*組み込み関数を使用するのに問題があります。これはあなたを驚かせるか? –

答えて

2

これはMicrosoft固有の組み込み関数ではなく、データ型に関するものです。実際の組み込み関数は、両方のコンパイラで100%同一であり、事実上の標準です(インテルのものです)。

あなたが直面している問題は__m128iタイプが便宜のためにunionで、m128i_u16などのフィールドを含むMSVCであるということです。リンクするコードサンプルは、これを前提としています。

gccの下では、__m128iではなく、であり、したがって、これらのフィールドはありません。このような組合のフィールドにアクセスすると、最初にSSEを使用することで得られる利益が奪われるため、これは実際には欠点ではありません。したがって、上記のようなデモスニペット以外では、(ほとんど)決してこのようなもの。

関連する問題