SSSE3 - SSSE3

Supplemental Streaming SIMD Extensions 3 ( SSSE3 oder SSE3S ) ist ein von Intel erstellter SIMD- Befehlssatz und ist die vierte Iteration der SSE- Technologie.

Geschichte

SSSE3 wurde erstmals am 26. Juni 2006 mit den "Woodcrest"-Xeons mit Intel-Prozessoren auf Basis der Core-Mikroarchitektur eingeführt .

SSSE3 wurde für die ersten Prozessordesigns, die es unterstützen sollten , mit den Codenamen Tejas New Instructions (TNI) oder Merom New Instructions (MNI) bezeichnet .

Funktionalität

SSSE3 enthält 16 neue diskrete Befehle. Jeder Befehl kann auf 64-Bit-MMX- oder 128-Bit-XMM-Register wirken. Daher verweisen Intels Materialien auf 32 neue Anweisungen. Sie beinhalten:

  • Zwölf Befehle, die horizontale Additions- oder Subtraktionsoperationen ausführen.
  • Sechs Anweisungen, die Absolutwerte auswerten.
  • Zwei Befehle, die Multiplikations- und Addieroperationen ausführen und die Bewertung von Punktprodukten beschleunigen.
  • Zwei Befehle, die gepackte Ganzzahl-Multiplikationsoperationen beschleunigen und ganzzahlige Werte mit Skalierung erzeugen.
  • Zwei Befehle, die ein byteweises Mischen an Ort und Stelle gemäß dem zweiten Mischsteueroperanden durchführen.
  • Sechs Befehle, die gepackte Ganzzahlen im Zieloperanden negieren, wenn die Vorzeichen des entsprechenden Elements im Quelloperanden kleiner als Null sind.
  • Zwei Befehle, die Daten aus der Zusammensetzung zweier Operanden ausrichten.

CPUs mit SSSE3

Neue Anleitung

In der folgenden Tabelle nimmt satsw(X) (gelesen als 'sättigung in Wort mit Vorzeichen') eine vorzeichenbehaftete ganze Zahl X und wandelt sie in -32768 um, wenn sie kleiner als -32768 ist, in +32767, wenn sie größer als 32767 ist, und lässt es ansonsten unverändert. Wie bei der Intel-Architektur üblich, sind Bytes 8 Bits, Wörter 16 Bits und Dwords 32 Bits; 'register' bezieht sich auf ein MMX- oder XMM-Vektorregister.

PSIGNB, PSIGNW, PSIGND Gepacktes Zeichen Negieren Sie die Elemente eines Registers aus Bytes, Wörtern oder D-Worten, wenn das Vorzeichen der entsprechenden Elemente eines anderen Registers negativ ist.
PABSB, PABSW, PABSD Verpackter absoluter Wert Füllen Sie die Elemente eines Registers aus Bytes, Wörtern oder Dwords mit den Absolutwerten der Elemente eines anderen Registers
PALIGNR Gepackt rechts ausrichten Nehmen Sie zwei Register, verketten Sie ihre Werte und ziehen Sie einen Registerlängenabschnitt aus einem Offset heraus, der durch einen im Befehl codierten unmittelbaren Wert gegeben ist.
PSHUFB Gepackte Shuffle-Bytes nimmt Register von Bytes A = [a 0 a 1 a 2 ...] und B = [b 0 b 1 b 2 ...] und ersetzt A durch [a b0 a b1 a b2 ...]; außer dass es den i-ten Eintrag durch 0 ersetzt, wenn das oberste Bit von b i gesetzt ist.
PMULHRSW Verpackt Multiply High mit Round und Scale behandeln die 16-Bit-Wörter in den Registern A und B als vorzeichenbehaftete 16-Bit-Festkommazahlen zwischen −1.00000000 und +0.99996948... (zB 0x4000 wird als +0.5 behandelt und 0xA000 als −0.75) und multiplizieren sie mit korrekt Rundung.
PMADDUBSW Multiplizieren und Addieren von gepackten vorzeichenbehafteten und vorzeichenlosen Bytes Nehmen Sie die Bytes in den Registern A und B, multiplizieren Sie sie miteinander, addieren Sie Paare, sättigen Sie mit Vorzeichen und speichern Sie sie. Dh [a0 a1 a2 …] pmaddubsw [b0 b1 b2 …] = [satsw(a0b0+a1b1) satsw(a2b2+a3b3) …]
PHSUBW, PHSUBD Gepackter horizontaler Subtrahieren (Wörter oder Doppelwörter) nimmt Register A = [a0 a1 a2 …] und B = [b0 b1 b2 …] und gibt [a0−a1 a2−a3 … b0−b1 b2−b3 …] aus
PHSUBSW Gepackte horizontale Wörter subtrahieren und sättigen wie PHSUBW, gibt aber [satsw(a0−a1) satsw(a2−a3) … satsw(b0−b1) satsw(b2−b3) …]
PHADDW, PHADDD Gepacktes horizontales Hinzufügen (Wörter oder Doppelwörter) nimmt die Register A = [a0 a1 a2 …] und B = [b0 b1 b2 …] und gibt [a0+a1 a2+a3 … b0+b1 b2+b3 …] aus
PHADDSW Gepackte horizontale Wörter hinzufügen und sättigen wie PHADDW, gibt aber aus [satsw(a0+a1) satsw(a2+a3) … satsw(b0+b1) satsw(b2+b3) …]

Siehe auch

Verweise

Externe Links