3

組み込み関数を介したベクトル命令の使用に従って、このプログラムはコンパイルする必要があります。

int main(){
    double v_sse __attribute__ ((vector_size (16)));

    /*
     * Should work: "For the convenience in C it is allowed to use a binary vector operation where one operand is a scalar."
     */
    v_sse=v_sse+3.4;

    /*
     * Should work: "Vectors can be subscripted as if the vector were an array with the same number of elements and base type."
     */
    double result=v_sse[0];
}

代わりに、両方の操作でエラーが発生し、無効なオペランド/タイプについて不平を言います。

x86-64システムでコンパイルするので、-msse2は暗黙的であり、コンパイラーは4.6.3です(4.7.0でもテストされているため、機能しません)。キャッチはどこですか?

4

1 に答える 1

5

http://gcc.gnu.org/onlinedocs/gcc/のドキュメントは、現在の開発について言及しています。

http://gcc.gnu.org/onlinedocs/gcc-XYZ/ を見て、使用しているバージョンのドキュメントを見つけてください ( http://gcc.gnu.org/onlinedocs/のインデックスを参照して、各シリーズの最新のポイント リリースのドキュメント)。

この場合:

  • 二項演算子の機能は、4.6.3では文書化されていません。これは、4.7 で新機能として導入されたためです。4.7 のリリース ノートを参照してください。
  • 添字機能4.6.3 にあります。と
  • 両方の機能は、「C で」動作するものとして具体的に文書化されています。

...これは、あなたが見ているものを説明しています。

これらは両方とも、C としてコンパイルする場合は 4.7.0 で機能しますが、C++ としてコンパイルする場合は機能しません。

于 2012-05-16T00:57:34.450 に答える