浮動小数点精度変換 | |
CVTSS2SD VCVTSS2SD | 単一単精度を倍精度に変換 [SSE2] |
---|---|
CVTSD2SS VCVTSD2SS | 単一倍精度を単精度に変換 [SSE2] |
CVTPS2PD VCVTPS2PD | パック単精度を倍精度に変換 [SSE2] |
CVTPD2PS VCVTPD2PS | パック倍精度を単精度に変換 [SSE2] |
半精度 (16bit) | |
VCVTPH2PS | パック半精度→単精度変換 [F16C] |
VCVTPS2PH | パック単精度→半精度変換 [F16C] |
整数→浮動小数点 | |
CVTDQ2PS VCVTDQ2PS | パック符号付き32bit整数を単精度に変換 [SSE2] |
CVTDQ2PD VCVTDQ2PD | パック符号付き32bit整数を倍精度に変換 [SSE2] |
浮動小数点→整数 | |
CVTPS2DQ VCVTPS2DQ | パック単精度を符号付き32bit整数に変換 (丸め) [SSE2] |
CVTTPS2DQ VCVTTPS2DQ | パック単精度を符号付き32bit整数に変換 (切り捨て) [SSE2] |
CVTPD2DQ VCVTPD2DQ | パック倍精度を符号付き32bit整数に変換 (丸め) [SSE2] |
CVTTPD2DQ VCVTTPD2DQ | パック倍精度を符号付き32bit整数に変換 (切り捨て) [SSE2] |
汎用レジスタ/メモリ | |
CVTSI2SS VCVTSI2SS | 汎用レジスタ/メモリの符号付き整数値を単精度に変換 [SSE] |
CVTSI2SD VCVTSI2SD | 汎用レジスタ/メモリの符号付き整数値を倍精度に変換 [SSE2] |
CVTSS2SI VCVTSS2SI | 単一単精度を符号付き整数に変換して汎用レジスタに (丸め) [SSE] |
CVTTSS2SI VCVTTSS2SI | 単一単精度を符号付き整数に変換して汎用レジスタに (切り捨て) [SSE] |
CVTSD2SI VCVTSD2SI | 単一倍精度を符号付き整数に変換して汎用レジスタに (丸め) [SSE2] |
CVTTSD2SI VCVTTSD2SI | 単一倍精度を符号付き整数に変換して汎用レジスタに (切り捨て) [SSE2] |
丸め | |
丸めの即値バイト | 丸めの即値バイト |
ROUNDSS VROUNDSS | 単一単精度の丸め [SSE4.1] |
ROUNDPS VROUNDPS | パック単精度の丸め [SSE4.1] |
ROUNDSD VROUNDSD | 単一倍精度の丸め [SSE4.1] |
ROUNDPD VROUNDPD | パック倍精度の丸め [SSE4.1] |
浮動小数点精度変換
CVTSS2SD xmm1, xmm2/mem32 | F3 0F 5A /r | SSE2 VCVTSS2SD xmm1, xmm2, xmm3/mem64 | C4 RXB.00001 X.src.X.10 5A /r | AVX
下位 32bit の単精度浮動小数点値を、倍精度浮動小数点値に変換し、宛先の下位 64bit に書き込みます。
CVTSS2SD: 宛先 XMM レジスタの上位ビットは変更されません。
VCVTSS2SD: 宛先 xmm1 の上位ビットは xmm2 からコピーされます。
CVTSS2SD: 宛先 XMM レジスタの上位ビットは変更されません。
VCVTSS2SD: 宛先 xmm1 の上位ビットは xmm2 からコピーされます。
CVTSD2SS xmm1, xmm2/mem64 | F2 0F 5A /r | SSE2 VCVTSD2SS xmm1, xmm2, xmm3/mem64 | C4 RXB.00001 X.src.X.11 5A /r | AVX
下位 64bit の倍精度浮動小数点値を、単精度浮動小数点値に変換し、宛先の下位 32bit に書き込みます。
CVTSD2SS: 宛先 XMM レジスタの上位ビットは変更されません。
VCVTSD2SS: 宛先 xmm1 の上位ビットは xmm2 からコピーされます。
結果が不正確な値の場合、MXCSR.RC の指定に従って丸められます。
CVTSD2SS: 宛先 XMM レジスタの上位ビットは変更されません。
VCVTSD2SS: 宛先 xmm1 の上位ビットは xmm2 からコピーされます。
結果が不正確な値の場合、MXCSR.RC の指定に従って丸められます。
CVTPS2PD xmm1, xmm2/mem64 | 0F 5A /r | SSE2 VCVTPS2PD xmm1, xmm2/mem64 | C4 RXB.00001 X.1111.0.00 5A /r | AVX VCVTPS2PD ymm1, ymm2/mem128 | C4 RXB.00001 X.1111.1.00 5A /r | AVX
パック単精度浮動小数点値を、それぞれ倍精度浮動小数点値に変換し、結果をパックして宛先に書き込みます。
128bit の場合は下位の2つ、256bit の場合は下位の4つを変換します。
128bit の場合は下位の2つ、256bit の場合は下位の4つを変換します。
CVTPD2PS xmm1, xmm2/mem128 | 66 0F 5A /r | SSE2 VCVTPD2PS xmm1, xmm2/mem128 | C4 RXB.00001 X.1111.0.01 5A /r | AVX VCVTPD2PS xmm1, ymm2/mem256 | C4 RXB.00001 X.1111.1.01 5A /r | AVX
パック倍精度浮動小数点値を、それぞれ単精度浮動小数点値に変換し、結果をパックして宛先に書き込みます。
宛先の空いた上位ビットは 0 になります。
結果が不正確な値の場合、MXCSR.RC の指定に従って丸められます。
宛先の空いた上位ビットは 0 になります。
結果が不正確な値の場合、MXCSR.RC の指定に従って丸められます。
半精度 (16bit)
VCVTPH2PS xmm1, xmm2/mem64 | C4 RXB.02 0.1111.0.01 13 /r VCVTPH2PS ymm1, xmm2/mem128 | C4 RXB.02 0.1111.1.01 13 /r
パックされた 16bit 浮動小数点値を、単精度浮動小数点値に変換します。
非正規の値は、通常の結果として変換されます。MXCSR.DAZ は無視され、MXCSR の非正規例外は報告されません。
非正規化エンコードを含む 16bit 浮動小数点エンコードの全範囲は、単精度形式で正確に表現できるため、丸め、不正確な結果、非正規化された結果は適用されません。
CPUID: F16C
非正規の値は、通常の結果として変換されます。MXCSR.DAZ は無視され、MXCSR の非正規例外は報告されません。
非正規化エンコードを含む 16bit 浮動小数点エンコードの全範囲は、単精度形式で正確に表現できるため、丸め、不正確な結果、非正規化された結果は適用されません。
CPUID: F16C
VCVTPS2PH xmm1/mem64, xmm2, imm8 | C4 RXB.03 0.1111.0.01 1D /r /imm8 VCVTPS2PH xmm1/mem128, ymm2, imm8 | C4 RXB.03 0.1111.1.01 1D /r /imm8
パックされた単精度浮動小数点値を、16bit 浮動小数点値に変換し、宛先に書き込みます。
即値オペランドにより、丸め制御を指定できます。
CPUID: F16C
即値オペランドにより、丸め制御を指定できます。
bit 1:0 (RC) | 00b: 近い方に丸め 01b: 負の無限大に近い方に丸め 10b: 正の無限大に近い方に丸め 11b: 0 に近い方に切り捨て |
---|---|
bit 2 (RS) | 0 = 即値の RC を適用 1 = MXCSR.RC を適用 |
CPUID: F16C
整数→浮動小数点
CVTDQ2PS xmm1, xmm2/mem128 | 0F 5B /r | SSE2 VCVTDQ2PS xmm1, xmm2/mem128 | C4 RXB.00001 X.1111.0.00 5B /r | AVX VCVTDQ2PS ymm1, ymm2/mem256 | C4 RXB.00001 X.1111.1.00 5B /r | AVX
パックされた符号付き 32bit 整数値を、それぞれ単精度浮動小数点値に変換し、結果をパックして宛先に書き込みます。
結果が不正確な値の場合、MXCSR.RC の指定に従って丸められます。
結果が不正確な値の場合、MXCSR.RC の指定に従って丸められます。
CVTDQ2PD xmm1, xmm2/mem64 | F3 0F E6 /r | SSE2 VCVTDQ2PD xmm1, xmm2/mem64 | C4 RXB.00001 X.1111.0.10 E6 /r | AVX VCVTDQ2PD ymm1, ymm2/mem256 | C4 RXB.00001 X.1111.1.10 E6 /r | AVX
パックされた符号付き 32bit 整数値を、それぞれ倍精度浮動小数点値に変換し、結果をパックして宛先に書き込みます。
128bit の場合は下位の2つ、256bit の場合は下位の4つを変換します。
128bit の場合は下位の2つ、256bit の場合は下位の4つを変換します。
浮動小数点→整数
CVTPS2DQ xmm1, xmm2/mem128 | 66 0F 5B /r | SSE2 VCVTPS2DQ xmm1, xmm2/mem128 | C4 RXB.00001 X.1111.0.01 5B /r | AVX VCVTPS2DQ ymm1, ymm2/mem256 | C4 RXB.00001 X.1111.1.01 5B /r | AVX
パック単精度浮動小数点値を、それぞれ符号付き 32bit 整数値に変換し、結果をパックして宛先に書き込みます。
結果が不正確な値の場合、MXCSR.RC の指定に従って丸められます。
操作例外 (IE) がマスクされており、浮動小数点値が NaN か 無限大、または、変換結果が符号付き 32bit 整数の範囲より大きい場合、32bit の不定整数値 (8000_0000h) を返します。
結果が不正確な値の場合、MXCSR.RC の指定に従って丸められます。
操作例外 (IE) がマスクされており、浮動小数点値が NaN か 無限大、または、変換結果が符号付き 32bit 整数の範囲より大きい場合、32bit の不定整数値 (8000_0000h) を返します。
CVTTPS2DQ xmm1, xmm2/mem128 | F3 0F 5B /r | SSE2 VCVTTPS2DQ xmm1, xmm2/mem128 | C4 RXB.00001 X.1111.0.10 5B /r | AVX VCVTTPS2DQ ymm1, ymm2/mem256 | C4 RXB.00001 X.1111.1.10 5B /r | AVX
パック単精度浮動小数点値を、それぞれ符号付き 32bit 整数値に変換し、結果をパックして宛先に書き込みます。
結果が不正確な値である場合、値は切り捨てられます (ゼロ方向に丸められます)。
操作例外 (IE) がマスクされており、浮動小数点値が NaN か 無限大、または、変換結果が符号付き 32bit 整数の範囲より大きい場合、32bit の不定整数値 (8000_0000h) を返します。
結果が不正確な値である場合、値は切り捨てられます (ゼロ方向に丸められます)。
操作例外 (IE) がマスクされており、浮動小数点値が NaN か 無限大、または、変換結果が符号付き 32bit 整数の範囲より大きい場合、32bit の不定整数値 (8000_0000h) を返します。
CVTPD2DQ xmm1, xmm2/mem128 | F2 0F E6 /r | SSE2 VCVTPD2DQ xmm1, xmm2/mem128 | C4 RXB.00001 X.1111.0.11 E6 /r | AVX VCVTPD2DQ xmm1, ymm2/mem256 | C4 RXB.00001 X.1111.1.11 E6 /r | AVX
パック倍精度浮動小数点値を、それぞれ符号付き 32bit 整数に変換し、結果をパックして宛先に書き込みます。
宛先の空いた上位ビットは 0 になります。
結果が不正確な値の場合、MXCSR.RC の指定に従って丸められます。
操作例外 (IE) がマスクされており、浮動小数点値が NaN か 無限大、または、変換結果が符号付き 32bit 整数の範囲より大きい場合、32bit の不定整数値 (8000_0000h) を返します。
宛先の空いた上位ビットは 0 になります。
結果が不正確な値の場合、MXCSR.RC の指定に従って丸められます。
操作例外 (IE) がマスクされており、浮動小数点値が NaN か 無限大、または、変換結果が符号付き 32bit 整数の範囲より大きい場合、32bit の不定整数値 (8000_0000h) を返します。
CVTTPD2DQ xmm1, xmm2/mem128 | 66 0F E6 /r | SSE2 VCVTTPD2DQ xmm1, xmm2/mem128 | C4 RXB.00001 X.1111.0.01 E6 /r | AVX VCVTTPD2DQ xmm1, ymm2/mem256 | C4 RXB.00001 X.1111.1.01 E6 /r | AVX
パック倍精度浮動小数点値を、それぞれ符号付き 32bit 整数値に変換し、結果をパックして宛先に書き込みます。
結果が不正確な値の場合、切り捨てられます (ゼロに向かって丸められます)。
操作例外 (IE) がマスクされており、浮動小数点値が NaN か 無限大、または、変換結果が符号付き 32bit 整数の範囲より大きい場合、32bit の不定整数値 (8000_0000h) を返します。
結果が不正確な値の場合、切り捨てられます (ゼロに向かって丸められます)。
操作例外 (IE) がマスクされており、浮動小数点値が NaN か 無限大、または、変換結果が符号付き 32bit 整数の範囲より大きい場合、32bit の不定整数値 (8000_0000h) を返します。
汎用レジスタ/メモリ
CVTSI2SS xmm1, reg32/mem32 | F3 (W0) 0F 2A /r | SSE CVTSI2SS xmm1, reg64/mem64 | F3 (W1) 0F 2A /r | SSE VCVTSI2SS xmm1, xmm2, reg32/mem32 | C4 RXB.00001 0.src.X.10 2A /r | AVX VCVTSI2SS xmm1, xmm2, reg64/mem64 | C4 RXB.00001 1.src.X.10 2A /r | AVX
汎用レジスタ/メモリの符号付き整数値を、単精度浮動小数点値に変換し、値を XMM レジスタに書き込みます。
CVTSI2SS: 宛先 XMM レジスタの上位ビットは変更されません。
VCVTSI2SS: 宛先 xmm1 の上位ビットは、xmm2 からコピーされます。
変換結果が不正確な値の場合、値は MXCSR.RC の指定に従って丸められます。
CVTSI2SS: 宛先 XMM レジスタの上位ビットは変更されません。
VCVTSI2SS: 宛先 xmm1 の上位ビットは、xmm2 からコピーされます。
変換結果が不正確な値の場合、値は MXCSR.RC の指定に従って丸められます。
CVTSI2SD xmm1, reg32/mem32 | F2 (W0) 0F 2A /r | SSE2 CVTSI2SD xmm1, reg64/mem64 | F2 (W1) 0F 2A /r | SSE2 VCVTSI2SD xmm1, xmm2, reg32/mem32 | C4 RXB.00001 0.src.X.11 2A /r | AVX VCVTSI2SD xmm1, xmm2, reg64/mem64 | C4 RXB.00001 1.src.X.11 2A /r | AVX
汎用レジスタ/メモリの符号付き 32bit or 64bit 整数値を、倍精度浮動小数点値に変換し、宛先レジスタに書き込みます。
CVTSI2SD: 宛先 XMM レジスタの上位ビットは変更されません。
VCVTSI2SD: 宛先 xmm1 の上位ビットは、xmm2 からコピーされます。
変換結果が不正確な値の場合、値は MXCSR.RC の指定に従って丸められます。
CVTSI2SD: 宛先 XMM レジスタの上位ビットは変更されません。
VCVTSI2SD: 宛先 xmm1 の上位ビットは、xmm2 からコピーされます。
変換結果が不正確な値の場合、値は MXCSR.RC の指定に従って丸められます。
CVTSS2SI reg32, xmm1/mem32 | F3 (W0) 0F 2D /r | SSE CVTSS2SI reg64, xmm1/mem64 | F3 (W1) 0F 2D /r | SSE VCVTSS2SI reg32, xmm1/mem32 | C4 RXB.00001 0.1111.X.10 2D /r | AVX VCVTSS2SI reg64, xmm1/mem64 | C4 RXB.00001 1.1111.X.10 2D /r | AVX
下位 32bit の単精度浮動小数点値を、32bit または 64bit の符号付き整数値に変換し、値を汎用レジスタに書き込みます。
変換結果が不正確な値の場合、値は MXCSR.RC の指定に従って丸められます。
操作例外 (IE) がマスクされており、浮動小数点値が NaN か 無限大、または、変換結果が対象の符号付き整数の範囲より大きい場合、不定整数値を返します。
(32bit 整数の場合は 8000_0000h、64bit 整数の場合は 8000_0000_0000_0000h)。
変換結果が不正確な値の場合、値は MXCSR.RC の指定に従って丸められます。
操作例外 (IE) がマスクされており、浮動小数点値が NaN か 無限大、または、変換結果が対象の符号付き整数の範囲より大きい場合、不定整数値を返します。
(32bit 整数の場合は 8000_0000h、64bit 整数の場合は 8000_0000_0000_0000h)。
CVTTSS2SI reg32, xmm1/mem32 | F3 (W0) 0F 2C /r | SSE CVTTSS2SI reg64, xmm1/mem64 | F3 (W1) 0F 2C /r | SSE VCVTTSS2SI reg32, xmm1/mem32 | C4 RXB.00001 0.1111.X.10 2C /r | AVX VCVTTSS2SI reg64, xmm1/mem64 | C4 RXB.00001 1.1111.X.10 2C /r | AVX
下位 32bit の単精度浮動小数点値を、32bit または 64bit の符号付き整数値に変換し、値を汎用レジスタに書き込みます。
変換の結果が不正確な値である場合、値は切り捨てられます (ゼロ方向に丸められます)。
操作例外 (IE) がマスクされており、浮動小数点値が NaN か 無限大、または、変換結果が対象の符号付き整数の範囲より大きい場合、不定整数値を返します。
(32bit 整数の場合は 8000_0000h、64bit 整数の場合は 8000_0000_0000_0000h)。
変換の結果が不正確な値である場合、値は切り捨てられます (ゼロ方向に丸められます)。
操作例外 (IE) がマスクされており、浮動小数点値が NaN か 無限大、または、変換結果が対象の符号付き整数の範囲より大きい場合、不定整数値を返します。
(32bit 整数の場合は 8000_0000h、64bit 整数の場合は 8000_0000_0000_0000h)。
CVTSD2SI reg32, xmm1/mem64 | F2 (W0) 0F 2D /r | SSE2 CVTSD2SI reg64, xmm1/mem64 | F2 (W1) 0F 2D /r | SSE2 VCVTSD2SI reg32, xmm2/mem64 | C4 RXB.00001 0.1111.X.11 2D /r | AVX VCVTSD2SI reg64, xmm2/mem64 | C4 RXB.00001 1.1111.X.11 2D /r | AVX
下位 64bit の倍精度浮動小数点値を、32bit または 64bit の符号付き整数値に変換し、値を汎用レジスタに書き込みます。
結果が不正確な値の場合、MXCSR.RC の指定に従って丸められます。
操作例外 (IE) がマスクされており、浮動小数点値が NaN か 無限大、または、変換結果が対象の符号付き整数の範囲より大きい場合、不定整数値を返します。
(32bit 整数の場合は 8000_0000h、64bit 整数の場合は 8000_0000_0000_0000h)。
結果が不正確な値の場合、MXCSR.RC の指定に従って丸められます。
操作例外 (IE) がマスクされており、浮動小数点値が NaN か 無限大、または、変換結果が対象の符号付き整数の範囲より大きい場合、不定整数値を返します。
(32bit 整数の場合は 8000_0000h、64bit 整数の場合は 8000_0000_0000_0000h)。
CVTTSD2SI reg32, xmm1/mem64 | F2 (W0) 0F 2C /r | SSE2 CVTTSD2SI reg64, xmm1/mem64 | F2 (W1) 0F 2C /r | SSE2 VCVTTSD2SI reg32, xmm2/mem64 | C4 RXB.00001 0.1111.X.11 2C /r | AVX VCVTTSD2SI reg64, xmm2/mem64 | C4 RXB.00001 1.1111.X.11 2C /r | AVX
下位 64bit の倍精度浮動小数点値を、32bit または 64bit の符号付き整数値に変換し、値を汎用レジスタに書き込みます。
結果が不正確な値である場合、値は切り捨てられます (ゼロ方向に丸められます)。
操作例外 (IE) がマスクされており、浮動小数点値が NaN か 無限大、または、変換結果が対象の符号付き整数の範囲より大きい場合、不定整数値を返します。
(32bit 整数の場合は 8000_0000h、64bit 整数の場合は 8000_0000_0000_0000h)。
結果が不正確な値である場合、値は切り捨てられます (ゼロ方向に丸められます)。
操作例外 (IE) がマスクされており、浮動小数点値が NaN か 無限大、または、変換結果が対象の符号付き整数の範囲より大きい場合、不定整数値を返します。
(32bit 整数の場合は 8000_0000h、64bit 整数の場合は 8000_0000_0000_0000h)。
丸め
|7 4|3|2|1 0| bit |---|P|O| RC|
丸めの即値バイト
bit 1-0 (RC)
丸め制御。
00b: 近い方に丸め
01b: 負の無限大方向に丸め
10b: 正の無限大方向に丸め
11b: 0 の方向に切り捨て
00b: 近い方に丸め
01b: 負の無限大方向に丸め
10b: 正の無限大方向に丸め
11b: 0 の方向に切り捨て
bit 2 (O)
丸め制御のソース。
0 : 丸め制御は即値の RC から
1 : 丸め制御は MXCSR の RC から
0 : 丸め制御は即値の RC から
1 : 丸め制御は MXCSR の RC から
bit 3 (P)
精度例外。
0 : 通常の精度例外
1 : MXCSR の PE は変更されない。マスクを解除しても、精度例外は発生しません。
0 : 通常の精度例外
1 : MXCSR の PE は変更されない。マスクを解除しても、精度例外は発生しません。
ROUNDSS xmm1, xmm2/mem64, imm8 | 66 0F 3A 0A /r ib | SSE4.1 VROUNDSS xmm1, xmm2, xmm3/mem64, imm8 | C4 RXB.03 X.src1.X.01 0A /r ib | AVX
下位 32bit の単精度の値を、即値バイトの指定に従って整数に丸め、結果を宛先の下位 32bit に、単精度値として書き込みます。
SNaN は QNaN に変換されます。
DAZ = 1 の場合、非正規化値は丸め前に 0 に変換されます。
SNaN は QNaN に変換されます。
DAZ = 1 の場合、非正規化値は丸め前に 0 に変換されます。
ROUNDPS xmm1, xmm2/mem128, imm8 | 66 0F 3A 08 /r ib | SSE4.1 VROUNDPS xmm1, xmm2/mem128, imm8 | C4 RXB.03 X.1111.0.01 08 /r ib | AVX VROUNDPS ymm1, xmm2/mem256, imm8 | C4 RXB.03 X.1111.1.01 08 /r ib | AVX
パック単精度の各値を、即値バイトの指定に従って整数に丸め、結果を宛先の対応する位置に、単精度値として書き込みます。
SNaN は QNaN に変換されます。
DAZ = 1 の場合、非正規化値は丸め前に 0 に変換されます。
SNaN は QNaN に変換されます。
DAZ = 1 の場合、非正規化値は丸め前に 0 に変換されます。
ROUNDSD xmm1, xmm2/mem64, imm8 | 66 0F 3A 0B /r ib | SSE4.1 VROUNDSD xmm1, xmm2, xmm3/mem64, imm8 | C4 RXB.03 X.src1.X.01 0B /r ib | AVX
下位 64bit の倍精度の値を、即値バイトの指定に従って整数に丸め、結果を宛先の下位 64bit に、倍精度値として書き込みます。
SNaN は QNaN に変換されます。
DAZ = 1 の場合、非正規化値は丸め前に 0 に変換されます。
SNaN は QNaN に変換されます。
DAZ = 1 の場合、非正規化値は丸め前に 0 に変換されます。
ROUNDPD xmm1, xmm2/mem128, imm8 | 66 0F 3A 09 /r ib | SSE4.1 VROUNDPD xmm1, xmm2/mem128, imm8 | C4 RXB.03 X.1111.0.01 09 /r ib | AVX VROUNDPD ymm1, xmm2/mem256, imm8 | C4 RXB.03 X.1111.1.01 09 /r ib | AVX
パック倍精度の各値を、即値バイトの指定に従って整数に丸め、結果を宛先の対応する位置に、倍精度値として書き込みます。
SNaN は QNaN に変換されます。
DAZ = 1 の場合、非正規化値は丸め前に 0 に変換されます。
SNaN は QNaN に変換されます。
DAZ = 1 の場合、非正規化値は丸め前に 0 に変換されます。