私はいくつかのコードを書いており、SIMD 組み込み関数 SSE2/3 を使用して高速化しようとしています。私のコードは、いくつかのデータを XMM レジスターにロードして何度も操作する必要があるような性質のものです。生成されたアセンブラー コードを見ていると、XMM0 と XMM1 で別のものをリロードするために、GCC がデータをメモリにフラッシュし続けているようです。x86-64 用にコンパイルしているので、15 個のレジスタがあります。GCC が 2 つしか使用していないのはなぜですか? さらに使用するように依頼するにはどうすればよいですか? レジスタに値を「固定」する方法はありますか? 変数定義に "register" キーワードを追加しましたが、生成されたアセンブリ コードは同じです。
florin
質問する
2438 次