SSSE3 是Intel 命名的SSE3 指令集的擴充,不使用新的號碼是因為SSSE3比較像是加強版的SSE3,以至於推出SSSE3之前,SSE4 的定義容易被混淆。在公開Intel的Core微架構的時候,SSSE3出現在Xeon 5100與Intel Core 2行動版與桌上型處理器上。
SSSE3包含了16個新的不同於SSE3的指令。每一個都能夠運作於64位元的MMX暫存器或是128位元XMM暫存器之中。因此,有些Intel的文件表示有32個新指令。之前的SIMD指令由舊排到新依序是MMX 、3DNow! (AMD開發的)、SSE 、3DNow! Professional 、SSE2 與SSE3 。
支援SSSE3指令集的處理器 [ 编辑 ]
新增的指令 [ 编辑 ]
在以下的列表中,satsw(X)(飽和爲有符號字(saturate to signed word)的簡寫),任取有號整數X,如果X小於-32768時就代表-32768,X大於32767時就代表32767 ,其餘數值不變。在一般的Intel架構上,字節(byte)表示8位元,字(word)是16位元,而雙字(dword)是32位元;暫存器表示MMX或是XMM向量暫存器。
PSIGNB, PSIGNW, PSIGND
包裹式有符號整型取反
如果另一個暫存器中的整形爲負,那麼將目標暫存器中的數取反。
PABSB, PABSW, PABSD
包裹式絕對值
將源暫存器中的數取絕對值並放到目標暫存器中。
PALIGNR
包裹式右移
將兩個暫存器的值串起來,然後根據編碼到指令中的立即數將暫存器中的值右移。
PSHUFB
包裹式將任意字節重新排布到目的暫存器
如果源暫存器高位被置1,就把目的暫存器賦值爲0,否則根據源操作數的低4位選擇目的操作數,將其拷貝到目的操作數的相應位置。
PMULHRSW
包裹式捨入相乘
將兩個暫存器中的16位word處理成-1到1間的15位定點數(例如0x4000被處理成0.5,0xa000 處理成−0.75), 並且將他們捨入相乘。
PMADDUBSW
相乘並相加包裹式整型然後飽和
將兩個暫存器中的8位整型相乘並相加,然後飽和成有符號整型。(也就是 [a0 a1 a2 …] pmaddubsw [b0 b1 b2 …] = [satsw(a0b0+a1b1) satsw(a2b2+a3b3) …])
PHSUBW, PHSUBD
包裹式水平相減
將兩個暫存器 A = [a0 a1 a2 …] 和 B = [b0 b1 b2 …] 相減輸出 [a0−a1 a2−a3 … b0−b1 b2−b3 …]
PHSUBSW
包裹式水平相減並且飽和爲有符號字
類似PHSUBW, 但是輸出的是[satsw(a0−a1) satsw(a2−a3) … satsw(b0−b1) satsw(b2−b3) …]
PHADDW, PHADDD
包裹式有符號相加
將兩個暫存器 A = [a0 a1 a2 …] 和 B = [b0 b1 b2 …] 相加然後輸出 [a0+a1 a2+a3 … b0+b1 b2+b3 …]
PHADDSW
包裹式水平相加並且飽和爲有符號字
類似PHADDW, 但是輸出的是[satsw(a0+a1) satsw(a2+a3) … satsw(b0+b1) satsw(b2+b3) …]
外部連結 [ 编辑 ]