SSE/SSE2 への完全移行

いわゆる x64 Edition な Windows では,浮動小数点演算が SSE/SSE2 に完全移行することになる.コンパイラx87 FPU, MMX, 3DNow! 命令を含むコードを出力しない.ただしこれは 64-bit アプリケーションに要求される仕様で,WOW 上で実行される 32-bit アプリケーションについては従来通り x87 FPU が使用可能.ただしコンテキストスイッチ等の関係でFPU コントロールレジスタの変更追跡が行われるようになった模様.

The AMD Athlon 64 and Opteron processors support SSE and SSE2 instruction set extensions which are used by the Microsoft 64-bit compiler. Athlon 64 and Opteron processors fully support 32-bit 3DNow!, x87, and MMX instructions for 32-bit applications, whether they're running on 32-bit or 64-bit Windows. However, those instruction sets are not supported for native 64-bit applications. Instead, like the Microsoft 64-bit compiler, your 64-bit assembly code should use SSE and SSE2 instructions. Those instructions provide you with terrific performance for single-precision and double-precision floating point and integer SSE2 vector operations—and it's not difficult to do the port.


One final complication: on x64 architectures, the Windows traps
modifications to the FP control word to deal with some architectural
differences in the floating-point so it is more expensive to do than
just a single instruction.