AVXの導入に伴い、IntelはVEXエンコーディングスキームをIntel64およびIA-32アーキテクチャに導入しました。このエンコード方式は、主にAVX命令で使用されます。VEXでエンコードされた命令と現在「レガシーSSE」命令と呼ばれている命令を混在させても大丈夫かどうか疑問に思いました。
私がこの質問をする主な理由は、コードサイズです。次の2つの手順を検討してください。
shufps xmm0, xmm0, 0
vshufps xmm0, xmm0, xmm0, 0
私は通常、最初のものを使用して、XMMレジスタ内のすべての場所にスカラー値を「ブロードキャスト」します。ここで、命令セットは、これら2つ(この場合)の唯一の違いは、VEXでエンコードされたものがYMMレジスタの上位(> = 128)ビットをクリアすることです。私がそれを必要としないと仮定すると、この場合、VEXでエンコードされたバージョンを使用する利点は何ですか?最初の命令は4バイト(0FC6C000
)、2番目の命令は-5(C5F8C6C000
)を取ります。
事前にすべての回答をありがとう。