Ez a lap egy ellenőrzött változata
ASupplemental Streaming SIMD Extensions 3 (SSSE3 vagySSE3S) azIntel által létrehozottSIMD-utasításkészlet, azSSE-technológia negyedik változata.
Az SSSE3-at azIntel Core mikroarchitektúrán alapuló processzoraiba 2006. június 26-án vezette be a Woodcrest Xeonokkal.
Az SSSE3-ra Tejas New Instructions (TNI) és Merom New Instructions kódnéven hivatkoztak az első azt támogatni kívánt processzorváltozatokra.
Az SSSE3 16 új utasítást tartalmaz, melyek 64 bites MMX- vagy 128 bites XMM-regisztereken is működhetnek. Ezért az Intel közleményei 32 új utasításról szólnak. Ezek közé az alábbiak tartoznak:[1]
Az alábbi táblázatban asatsw(X) (olv. „saturate to signed word”, jelentése: „töltsd fel előjeles szóra”) egy előjeles X egészet átalakít −32768-ra, ha annál kisebb, +32767-re, ha annál nagyobb, ellenkező esetben változatlanul hagyja. Az Intel-architektúrának megfelelően a bájtok 8, a szavak 16, a duplaszavak 32 bitesek, a „regiszter” MMX- vagy XMM-vektorregiszter.[1]
Utasítás | Jelentés | Magyarázat |
---|---|---|
PSIGNB ,PSIGNW ,PSIGND | Packed Sign | Egy bájt-, szó- vagy duplaszóregiszter elemeit negálja, ha egy másik regiszter megfelelő elemei negatívak. |
PABSB ,PABSW ,PABSD | Packed Absolute Value | Egy bájt-, szó- vagy duplaszóregiszter értékeit egy másik regiszter abszolút értékeivel tölti fel. |
PALIGNR | Packed Align Right | Két regiszter értékeit összefűzi, és az eltolódás regiszterhosszú részét adja ki, melyet az utasításban kódolt közvetlen érték ad meg. |
PSHUFB | Packed Shuffle Bytes | A = [a0 a1 a2 …] és B = [b0 b1 b2 …] bemeneti regiszterek esetén A elemeit lecseréli az [ab0 ab1 ab2 …] sorozatra, de az i. elemet 0-ra cseréli, ha bi első bitje 1. |
PMULHRSW | Packed Multiply High with Round and Scale | Az A és B regiszterek 16 bites szavait előjeles 16 bites –1 és +0,99996948… közti fixpontos számokként kezeli (például a 0x4000-et +0,5-ként, a 0xA000-t −0,75-ként kezeli), és megfelelő kerekítéssel összeszorozza őket. |
PMADDUBSW | Multiply and Add Packed Signed and Unsigned Bytes | A és B regiszterek bájtjait összeszorozza, páronként összeadja, előjelesen tölti, az eredményt tárolja. [a0 a1 a2 …]PMADDUBSW [b0 b1 b2 …] = [satsw(a0b0 + a1b1)satsw(a2b2 + a3b3) ...] |
PHSUBW ,PHSUBD | Packed Horizontal Subtract (Words or Doublewords) | A = [a0 a1 a2 …] és B = [b0 b1 b2 …] bemeneti regiszterekre a kimenet [a0−a1 a2−a3 … b0−b1 b2−b3 …] |
PHSUBSW | Packed Horizontal Subtract and Saturate Words | hasonlít a PHSUBW-re, de kimenete [satsw(a0−a1)satsw(a2−a3) …satsw(b0−b1)satsw(b2−b3) ...] |
PHADDW ,PHADDD | Packed Horizontal Add (Words or Doublewords) | A = [a0 a1 a2 …] és B = [b0 b1 b2 …] bemeneti regiszterekre kimenete [a0+a1 a2+a3 … b0+b1 b2+b3 …] |
PHADDSW | Packed Horizontal Add and Saturate Words | hasonlít a PHADDW-re, de kimenete [satsw(a0+a1)satsw(a2+a3) …satsw(b0+b1)satsw(b2+b3) …] |