0
(movdの前後に多くのavx命令があると仮定します)vmovdを使用して汎用レジスタとymmレジスタ間でデータを移動すると、ymmのfloat値が1つだけ使用されるため速度が低下しますか?vmovdにavx-sseトランジションペナルティがありますか?
(movdの前後に多くのavx命令があると仮定します)vmovdを使用して汎用レジスタとymmレジスタ間でデータを移動すると、ymmのfloat値が1つだけ使用されるため速度が低下しますか?vmovdにavx-sseトランジションペナルティがありますか?
avx-sseトランジションペナルティは、非VEXエンコードSSE命令およびSSEエンコード命令を実行する場合にのみ適用されます。 movd
の代わりにvmovd
を使用している限り、すべて正常です。
詳しいことはできますか? avx-sseトランジションペナルティは、非VEXエンコードSSE命令およびSSEエンコード命令を実行する場合にのみ適用されます。 'movd'の代わりに' vmovd'を使う限り、すべてがうまくいくはずです。 – fuz
ありがとうございます。それが私の必要なものでした。私はそれの周りにavxのintrinsicsを使用するC++でいくつかのインラインasmを書いています。 –
インラインアセンブリのみを使用し、インラインアセンブリをスクラップすることを検討してください。コンパイラは通常、この種のペナルティを回避する命令を選択するのに非常に優れています。 – fuz