2017-12-05 10 views
0

SSE組み込み関数を使用してコードを最適化しようとしています。ドキュメントを読んだ後、浮動小数点変数のためにSSEに__m128データ型があり、4つの浮動小数点数を格納できることがわかりました。 SSE2には2つの浮動小数点数しか格納できない__m128dがありますか?これらの変数の違いは何ですか? SSE2はSSEより高速であるとは思われませんか?SSE 2以上 - 浮動小数点データ型に浮動小数点数が2つしかない理由

+2

*は、SSE2はSSEよりも高速であることを想定されていない*いいえ、それはだけではなく、単精度浮動小数点数の、整数および倍精度浮動小数点数のための命令を提供することになっています?。 SSEタグwiki:https://stackoverflow.com/tags/sse/infoを参照してください。多分あなたはAVXを探しています。AVXは256bのレジスタを提供しています:8フロートまたは4ダブルです。 –

+0

私はそれらすべてを異なる命令セットに混同しました!とった。ありがとう。 – Blue

+1

これらは異なる命令セットです。 Pentium IIIはSSEのみをサポートしていたため、整数または倍精度ではなく、スカラーまたはパックド単精度のXMMレジスタしか使用できませんでした。 SSE2は後で追加された。 –

答えて

6

SSE命令は128ビットレジスタを使用します。

floatは4バイト= 32ビット - >したがって4フロート(4 * 32 = 128)を格納できます。これらは__m128です。

doubleは8バイト= 64ビット - >使用するため、2倍(2 * 64 = 128)の値を格納できます。これらは__m128dです。

- >さらなる情報https://felix.abecassis.me/2011/09/cpp-getting-started-with-sse/

関連する問題