AVX2-Simulator

Eine kurze Intrinsics-Pipeline erstellen und Registerbits, Lanes und Speicherzugriffe untersuchen.

Über dieses Tool

Eine Pipeline mit bis zu acht AVX2-Intrinsics oder den angebotenen AVX-Gleitkomma-Intrinsics erstellen und Ausführen drücken. Eingabeänderungen löschen alle Ergebnisse; nichts wird automatisch berechnet. Ergebnisse löschen erhält die Eingaben. Ein anderes Ausgabeformat interpretiert nur die vorhandenen Ergebnisbits neu und bleibt beim nächsten Lauf gewählt. Beim erneuten Öffnen erscheint das ungestartete Additionsbeispiel; lange Pipelines und Speicher werden nicht gespeichert. Werte kopieren übernimmt die gewählte Vektoransicht, die vorzeichenlose skalare Maske oder nach einem Store alle 256 Speicherbytes.

Jeder Operand hat ein ausdrücklich gewähltes Format. Lane 0 enthält die niedrigen Bits und steht in der Eingabe zuerst, von links nach rechts gelesen. Ganzzahlen sind vorzeichenbehaftete oder vorzeichenlose Dezimalzahlen im Bereich des gewählten Typs; 64-Bit-Ganzzahlen bleiben exakt. Kommas oder Leerraum trennen Zahlen, ohne leere Kommaeinträge. Gleitkommaeingaben verwenden einen Dezimalpunkt und dürfen Exponenten, NaN, Infinity, -Infinity oder -0 enthalten. Ein endlicher Wert, der den gewählten Gleitkommatyp überlaufen würde, wird abgelehnt. Hex verwendet vollständige Bytepaare; im Bitformat steht je Byte das höchste Bit zuerst. Die Bytes selbst folgen stets aufsteigenden Adressen. Genau die angegebene Anzahl eingeben; Werte werden weder aufgefüllt noch abgeschnitten, und beim Einfügen wird kein Typ erraten.

Das Intrinsic bestimmt Arithmetik, Lane-Breite und Vorzeichenbehandlung. u32 statt i32 ändert die Ansicht der Bits, nicht die Instruktion. Ein Wechsel des Eingabeformats formatiert gültige vorhandene Bits neu; ungültiger Entwurfstext bleibt zur Korrektur erhalten. Ergebnistabellen zeigen Lane-Indizes, Bitbereiche, die gewählte Ansicht, gegebenenfalls ganzzahlige Gegenansichten und Little-Endian-Bytes. Getrennte Tabellenabschnitte markieren die 128-Bit-Hälften. Hinweise benennen Sättigung, Überlauf, Operationen innerhalb der Hälften sowie besondere Quell- oder Maskenregeln.

Vorheriges Ergebnis verwenden verbindet nur einen Vektor mit genau passender Breite mit dem ersten Operanden. Dessen Text erscheint nach erfolgreichem Ausführen. Eine skalare Movemask oder ein Speicherergebnis lässt sich nicht als Vektor verketten. Es gibt keine automatische Erweiterung von 128 auf 256 Bits. Ohne Häkchen gilt der manuelle Operand. Skalare Masken werden getrennt als vorzeichenlose Dezimalzahl und Hexwert angezeigt.

Speicheroperationen teilen sich einen Quellspeicher aus 256 Hexbytes. Jeder Lauf arbeitet auf einer Kopie: Schreibvorgänge speisen spätere Speicheroperationen desselben Laufs, überschreiben aber nicht den Quelltext. Basisoffset und Gather-Skala beziehen sich auf Bytes; Gather-Indizes sind vorzeichenbehaftet. Bereichsgrenzen gelten nur für aktive Zugriffe. Für eine inaktive maskierte Lane wird keine Adresse ausgewertet; dafür steht ein Strich. Das höchste Maskenbit entscheidet über die Auswahl. Stream-Ladevorgänge benötigen 32-Byte-Ausrichtung, loadu erlaubt unausgerichtete Adressen. Schreibvorgänge zeigen geänderte Bytes und optional den gesamten Speicher; Zugriffsdetails zeigen auch Schreibvorgänge ohne Byteänderung.

Beispiele zeigen Addition, Ganzzahlüberlauf, Sättigung, Byteumordnung innerhalb der 128-Bit-Hälften, unausgerichtetes Laden ab Offset 3 und Addition mit anschließendem Schieben. Beim Shuffle-Beispiel setzt ein hohes Steuerbit das erste Byte auf null. Beispiele bereiten nur Eingaben vor; Ausführen berechnet. Scheitert ein Schritt, veröffentlicht die Pipeline kein Teilergebnis.

Dies ist eine Lernsimulation, kein CPU-Emulator. Laufzeiten, CPU-Flags, MXCSR-Modi, NaN-Payloads, Caches und Hardwarefehler werden nicht modelliert. Gleitkommaoperationen verwenden normale IEEE-f32/f64-Werte mit JavaScripts Rundung zum nächsten Wert; Ergebnisse können Infinity oder NaN sein. Quelle: Intel Intrinsics Guide.