Supplemental Streaming SIMD Extensions 3 ( SSSE3またはSSE3S ) は、Intelが作成したSIMD命令セットであり、 SSEテクノロジの 4 番目の反復です。
SSSE3 は、2006 年 6 月 26 日に「Woodcrest」Xeon とともに、 Core マイクロアーキテクチャに基づく Intel プロセッサに初めて導入されました。
SSSE3 は、それをサポートすることを目的とした最初のプロセッサ設計では、 Tejas New Instructions (TNI)またはMerom New Instructions (MNI)というコード名で呼ばれていました。
SSSE3 では、 AACなどの HD オーディオ/ビデオのデコード/エンコードが強化されています。
SSSE3には16個の新しい個別命令が含まれています。各命令は64ビットMMXレジスタまたは128ビットXMMレジスタに対して動作します。したがって、Intelの資料では32個の新しい命令について言及されています。これらには以下が含まれます。[ 1 ]
下の表において、satsw (X)(「符号付きワードに飽和」と読みます)は符号付き整数Xを受け取り、それが-32768より小さい場合は-32768に、32767より大きい場合は+32767に変換し、それ以外の場合はそのままにします。Intelアーキテクチャでは一般的に、バイトは8ビット、ワードは16ビット、ダブルワードは32ビットです。「レジスタ」はMMXまたはXMMベクターレジスタを指します。[ 1 ]
| 命令 | 意味 | 説明 |
|---|---|---|
PSIGNB、、PSIGNWPSIGND | 満員のサイン | 別のレジスタの対応する要素の符号が負の場合、バイト、ワード、またはダブルワードのレジスタの要素を否定します。 |
PABSB、、PABSWPABSD | パック絶対値 | バイト、ワード、またはダブルワードのレジスタの要素を別のレジスタの要素の絶対値で埋めます。 |
PALIGNR | 右揃え | 2 つのレジスタを取得し、それらの値を連結し、命令にエンコードされた即値によって指定されたオフセットからレジスタ長のセクションを取り出します。 |
PSHUFB | パックされたシャッフルバイト | バイト A = [a 0 a 1 a 2 ...] および B = [b 0 b 1 b 2 ...] のレジスタを取り、A を [a b0 a b1 a b2 ...] に置き換えます。ただし、b iの最上位ビットが設定されている場合は、i 番目のエントリを 0 に置き換えます。 |
PMULHRSW | 丸めとスケール付きのパックされた乗算高 | レジスタ A と B の 16 ビットワードを -1.00000000 から +0.99996948... までの符号付き 16 ビット固定小数点数として扱い (たとえば、0x4000 は +0.5 として扱われ、0xA000 は -0.75 として扱われます)、正しい丸めでそれらを乗算します。 |
PMADDUBSW | パックされた符号付きバイトと符号なしバイトの乗算と加算 | レジスタAとBのバイト列を乗算し、ペアを加算し、符号付き飽和演算を行って格納します。つまり、[a 0 a 1 a 2 ...] PMADDUBSW[b 0 b 1 b 2 ...] = [ satsw (a 0 b 0 + a 1 b 1 ) satsw (a 2 b 2 + a 3 b 3 ) ... ] |
PHSUBW、PHSUBD | パックされた水平減算(ワードまたはダブルワード) | レジスタA = [a 0 a 1 a 2 ...]とレジスタB = [b 0 b 1 b 2 ...]を受け取り、[a 0 −a 1 a 2 −a 3 ... b 0 −b 1 b 2 −b 3 ...] を出力します。 |
PHSUBSW | 水平方向の単語の減算と飽和 | PHSUBWと同様だが、出力は[ satsw (a 0 −a 1 ) satsw (a 2 −a 3 ) ... satsw (b 0 −b 1 ) satsw (b 2 −b 3 ) ... ] |
PHADDW、PHADDD | パックされた水平加算(ワードまたはダブルワード) | レジスタA = [a 0 a 1 a 2 ...]およびレジスタB = [b 0 b 1 b 2 ...]を受け取り、[a 0 +a 1 a 2 +a 3 ... b 0 +b 1 b 2 +b 3 ...] を出力します。 |
PHADDSW | 横書きの単語の追加と飽和 | PHADDWと同様ですが、出力は[ satsw (a 0 +a 1 ) satsw (a 2 +a 3 ) ... satsw (b 0 +b 1 ) satsw (b 2 +b 3 ) ... ] |