SSE レジスターに 32 ビット int として表現できない 1 つ以上のパックされた値 (Inf
または など) が含まれており、 /NaN
などの int への変換が呼び出されたとします。_mm_cvtpd_epi32
cvtpd2dq
- 安全ですか、つまり動作が定義されていますか?
- 制御フローを壊しますか、それとも単にフラグを立てますか?
- 定義されている場合、変換の結果は何ですか?
SSE レジスターに 32 ビット int として表現できない 1 つ以上のパックされた値 (Inf
または など) が含まれており、 /NaN
などの int への変換が呼び出されたとします。_mm_cvtpd_epi32
cvtpd2dq
これらの質問に対する答えは、主にインテル® 64 および IA-32 アーキテクチャー・ソフトウェア開発者マニュアルに記載されています。
CVTPD2DQ
... 変換結果が最大符号付きダブルワード整数よりも大きい場合、浮動小数点無効例外が発生し、この例外がマスクされている場合、不定整数値 (80000000H) が返されます。
このセクションでは明確に説明していませんが、これは無限大と NaN にも当てはまります。そう:
0x80000000
です。