SSSE3

A Supplemental Streaming SIMD Extension 3 ( SSSE3 ) az Intel által a negyedik utasításkészlet-kiterjesztésnek adott jelölés. Az előző az SSE3 volt , és az Intel a mellékállomás számának növelése helyett egy másik "S"-t adott hozzá, talán azért, mert az SSSE3-at az SSE3 egyszerű kiegészítésének tekintették. Gyakran az SSSE3 hivatalos megnevezés használata előtt ezeket az új parancsokat SSE4-nek hívták. Tejas New Instructions (TNI) és Merom New Instructions (MNI) kódneveket is kapták azon processzorok után, ahol az Intel először támogatni kívánta ezeket az új utasításokat. Az Intel Core Microarchitektúrában bevezetett SSSE3 a Xeon 5100 processzorsorozatban (szerver és munkaállomás verziók), valamint Intel Core 2 processzorokban (notebook és asztali verziók) és Intel Atomban érhető el.

Az SSSE3 újdonsága az SSE3-hoz képest 16 egyedi csomagolt egész számú parancs. Mindegyik 64 bites (MMX) és 128 bites (XMM) regiszterekkel is működhet, így az Intel 32 új parancsra hivatkozik anyagaiban.

Új utasítások

Munka a jellel

Minden eredménymező az src1 megfelelő mezőjének abszolút értéke. Valójában ezek ugyanazok a PSIGNB, PSIGNH, PSIGNW műveletek, mindkettőnek ugyanaz a regisztere.

Minden eredménymező az src1 mező szorzata {-1,0,1}-szeresével, az src2 megfelelő mezőjének előjelétől függően (ez 0-val szorozva, ha az src2 mezője nulla).

Változások

Az operandus két regiszterét egy, kétszer akkora méretű, előjel nélküli köztes értékként kezeljük, amelyből a 64/128 bites érték a parancs közvetlen konstans argumentumában megadott bájtból kiindulva kerül kinyerésre.

Byte shuffling

Bájt permutáció, minden eredmény bájt az első argumentum egy bizonyos bájtja, amelyet a második argumentum megfelelő bájtja határoz meg (ha a bájt negatív, akkor az eredmény bájtba nulla kerül, ellenkező esetben az alacsony 3 vagy 4 bit kerül felhasználásra bájtszám az első argumentumban).

Szorzások

Az A és B argumentumot 16 bites előjelű fixpontos számok vektoraiként kezeljük, amelyek a [-1,+1) tartományban vannak ábrázolva (azaz 0x4000 0,5 és 0xa000 -0,75 stb.), amelyeket megszoroznak egymással a helyes értékkel. kerekítés.

Az A és B vektorok bájtonkénti szorzását hajtjuk végre, a köztes 16 bites eredményeket páronként telítettséggel adjuk össze, és eredményül adjuk meg.

Vízszintes egész számok összeadása/kivonása

16/32 bites egész mezők vízszintes kivonása.

16 bites egész mezők vízszintes kivonása telítettséggel.

16/32 bites egész mezők vízszintes összeadása.

16 bites egész mezők vízszintes hozzáadása telítettséggel.

SSSE3-at támogató processzorok

Irodalom