SSSE3
此條目没有列出任何参考或来源。 (2019年5月3日) |
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指令集的處理器
- Intel:
- Xeon 5100系列
- Xeon 5300系列
- Xeon 3000系列
- Core 2
- Core i3
- Core i5
- Core i7
- Core i9
- Pentium Dual-Core
- Celeron 4xx的Conroe-L
- Celeron Dual Core系列
- Celeron M 500系列
- Atom
- AMD
- VIA:
新增的指令
在以下的列表中,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) …] |