・ SSE3
5.4. MMX ® 命令
5.5.1. SSE SIMD 単精度浮動小数点命令
これらの命令は、
XMM レジスタまたはメモリ内のパックド /
スカラ単精度浮動小数点 値を操作する。このサブグループは、さらに下位のサブグループであるデータ転送命 令、パックド算術命令、比較命令、論理演算命令、シャッフル命令とアンパック命令、変換命令に分けられる。
5.5.1.1. SSEデータ転送命令
SSE
データ転送命令は、XMM
レジスタ同士およびXMM
レジスタとメモリの間で、パックド
/
スカラ単精度浮動小数点オペランドを転送する。MOVAPS Move four aligned packed single-precision floating-point values between XMM registers or between and XMM register and memory.
アライメントの合った 4 つのパックド単精度浮動小数点値を XMM レジスタ同士の間、または XMM レジスタとメモリとの間 で転送
MOVUPS Move four unaligned packed single-precision floating-point values between XMM registers or between and XMM register and memory.
アライメントの合っていない4つのパックド単精度浮動小数点値 を XMM レジスタ同士の間、または XMM レジスタとメモリとの 間で転送
MOVHPS Move two packed single-precision floating-point values to an from the high quadword of an XMM register and memory.
2 つのパックド単精度浮動小数点値を XMM レジスタの上位ク ワッドワードとメモリとの間で転送
MOVHLPS Move two packed single-precision floating-point values from the high quadword of an XMM register to the low quadword of another XMM register.
2 つのパックド単精度浮動小数点値を XMM レジスタの上位ク ワッドワードから別の XMM レジスタの下位クワッドワードに転 送
MOVLPS Move two packed single-precision floating-point values to an from the low quadword of an XMM register and memory.
2 つのパックド単精度浮動小数点値を XMM レジスタの下位ク ワッドワードとメモリとの間で転送
MOVLHPS Move two packed single-precision floating-point values from the low quadword of an XMM register to the high quadword of another XMM register.
2 つのパックド単精度浮動小数点値を XMM レジスタの下位ク ワッドワードから別の XMM レジスタの上位クワッドワードに転 送
MOVMSKPS Extract sign mask from four packed single-precision floating-point values.
4つのパックド単精度浮動小数点値から符号マスクを抽出
IA-32 インテル® アーキテクチャ・ソフトウェア・デベロッパーズ・マニュアル 上巻:基本アーキテクチャ
5-26
MOVSS Move scalar single-precision floating-point value between XMM registers or between an XMM register and memory.
スカラ単精度浮動小数点値を XMM レジスタ同士の間、または XMM レジスタとメモリとの間で転送
5.5.1.2. SSEパックド算術命令
SSE
パックド算術命令は、パックド/
スカラ単精度浮動小数点オペランドに対する、パックド
/
スカラ算術演算を実行する。ADDPS Add packed single-precision floating-point values.
パックド単精度浮動小数点値を加算 ADDSS Add scalar single-precision floating-point values.
スカラ単精度浮動小数点値を加算
SUBPS Subtract packed single-precision floating-point values.
パックド単精度浮動小数点値を減算
SUBSS Subtract scalar single-precision floating-point values.
スカラ単精度浮動小数点値を減算
MULPS Multiply packed single-precision floating-point values.
パックド単精度浮動小数点値を乗算
MULSS Multiply scalar single-precision floating-point values.
スカラ単精度浮動小数点値を乗算
DIVPS Divide packed single-precision floating-point values.
パックド単精度浮動小数点値を除算 DIVSS Divide scalar single-precision floating-point values.
スカラ単精度浮動小数点値を除算
RCPPS Compute reciprocals of packed single-precision floating-point values.
パックド単精度浮動小数点値の逆数を計算
RCPSS Compute reciprocal of scalar single-precision floating-point values.
スカラ単精度浮動小数点値の逆数を計算
SQRTPS Compute square roots of packed single-precision floating-point values.
パックド単精度浮動小数点値の平方根を計算
SQRTSS Compute square root of scalar single-precision floating-point values.
スカラ単精度浮動小数点値の平方根を計算
RSQRTPS Compute reciprocals of square roots of packed single-precision floating-point values.
パックド単精度浮動小数点値の平方根の逆数を計算
RSQRTSS Compute reciprocal of square root of scalar single-precision floating-point values.
スカラ単精度浮動小数点値の平方根の逆数を計算 MAXPS Return maximum packed single-precision floating-point values.
パックド単精度浮動小数点値の最大値を返す
MAXSS Return maximum scalar single-precision floating-point values.
スカラ単精度浮動小数点値の最大値を返す
命令セットの要約
5
MINPS Return minimum packed single-precision floating-point values.
パックド単精度浮動小数点値の最小値を返す MINSS Return minimum scalar single-precision floating-point values.
スカラ単精度浮動小数点値の最小値を返す
5.5.1.3. SSE比較命令
SSE
比較命令は、パックド/
スカラ単精度浮動小数点オペランドの比較を実行する。CMPPS Compare packed single-precision floating-point values.
パックド単精度浮動小数点値を比較
CMPSS Compare scalar single-precision floating-point values.
スカラ単精度浮動小数点値を比較
COMISS Perform ordered comparison of scalar single-precision floating-point values and set flags in EFLAGS register.
スカラ単精度浮動小数点値を順序付きで比較し、EFLAGS レジス タにフラグをセット
UCOMISS Perform unordered comparison of scalar single-precision floating-point values and set flags in EFLAGS register.
スカラ単精度浮動小数点値を順序付けなしで比較し、EFLAGS レ ジスタにフラグをセット
5.5.1.4. SSE論理演算命令
SSE
論理演算命令は、パックド単精度浮動小数点オペランドのビット単位のAND、
AND NOT、OR、または XOR
演算を実行する。ANDPS Perform bitwise logical AND of packed single-precision floating-point values.
パックド単精度浮動小数点値のビットごとの AND(論理積)演算 を実行
ANDNPS Perform bitwise logical AND NOT of packed single-precision floating-point values.
パックド単精度浮動小数点値のビットごとの AND NOT(否定論 理積)演算を実行
ORPS Perform bitwise logical OR of packed single-precision floating-point values.
パックド単精度浮動小数点値のビットごとの OR(論理和)演算 を実行
XORPS Perform bitwise logical XOR of packed single-precision floating-point values.
パックド単精度浮動小数点値のビットごとの XOR(排他的論理 和)演算を実行
IA-32 インテル® アーキテクチャ・ソフトウェア・デベロッパーズ・マニュアル 上巻:基本アーキテクチャ
5-28
5.5.1.5. SSEシャッフル命令とアンパック命令
SSE
シャッフル命令とアンパック命令は、パックド単精度浮動小数点オペランド内の 単精度浮動小数点値のシャッフルまたはインターリーブを実行する。SHUFPS Shuffles values in packed single-precision floating-point operands.
パックド単精度浮動小数点オペランド内の値をシャッフル UNPCKHPS Unpacks and interleaves the two high-order values from two single-precision
floating-point operands.
2つの単精度浮動小数点オペランドから上位の値を2つアンパッ クしてインターリーブ
UNPCKLPS Unpacks and interleaves the two low-order values from two single-precision floating-point operands.
2つの単精度浮動小数点オペランドから下位の値を2つアンパッ クしてインターリーブ
5.5.1.6. SSE変換命令
SSE
変換命令は、パックドまたは個々のダブルワード整数を、パックドまたはスカラ 単精度浮動小数点値に変換する。あるいは、その逆方向の変換を行う。CVTPI2PS Convert packed doubleword integers to packed single-precision floating-point values.
パックド・ダブルワード整数をパックド単精度浮動小数点値に変 換
CVTSI2SS Convert doubleword integer to scalar single-precision floating-point value.
ダブルワード整数をスカラ単精度浮動小数点値に変換
CVTPS2PI Convert packed single-precision floating-point values to packed doubleword integers.
パックド単精度浮動小数点値をパックド・ダブルワード整数に変 換
CVTTPS2PI Convert with truncation packed single-precision floating-point values to packed doubleword integers.
切り捨てを使用して、パックド単精度浮動小数点値をパックド・
ダブルワード整数に変換
CVTSS2SI Convert scalar single-precision floating-point value to a doubleword integer.
スカラ単精度浮動小数点値をダブルワード整数に変換
CVTTSS2SI Convert with truncation scalar single-precision floating-point value to scalar doubleword integer.
切り捨てを使用して、スカラ単精度浮動小数点値をスカラ・ダブ ルワード整数に変換
命令セットの要約