Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

shuffle: Wasm SIMD Konvertierungsbefehl

Der shuffle SIMD Konvertierungsbefehl gibt einen neuen v128-Wert zurück, dessen Lane-Werte aus zwei Eingabe-v128-Werten ausgewählt werden, bestimmt durch die bereitgestellten Indexwerte.

Probieren Sie es aus

(module
  (import "console" "log" (func $log (param i32)))
  (func $main
    v128.const i8x16 10 23 56 15 25 29 92 45 36 4 78 12 34 25 72 82
    v128.const i8x16 0 80 5 7 3 5 9 2 4 6 1 7 0 3 5 1
    i8x16.shuffle 0 17 2 3 8 9 10 11 31 30 28 27 16 17 18 19

    i8x16.extract_lane_u 14
    call $log ;; log the result
  )
  (start $main)
)
WebAssembly.instantiateStreaming(fetch("{%wasm-url%}"), { console });

Im obigen Beispiel extrahieren und protokollieren wir den Wert an der Indexposition 14 des Ausgabewertes der shuffle-Anweisung. Dieser wird 5 sein, da die Shuffle-Anweisung den Wert an der Indexposition 3 des zweiten v128-Eingabewertes (dargestellt durch den Indexwert 18) ausgewählt hat, um ihn an die Indexposition 14 des output zu setzen.

Syntax

value_type.shuffle indices
value_type

Der Typ des Wertes, auf dem die Anweisung ausgeführt wird. Die folgenden v128-Wertinterpretationen unterstützen shuffle:

  • i8x16
shuffle

Die shuffle-Anweisung. Muss immer nach dem value_type und einem Punkt (.) angegeben werden.

indices

16 Ganzzahlen im Bereich 0 bis 31 inklusive, die die Indizes der Werte darstellen, die aus den beiden Eingabewerten genommen werden sollen. Werte von 0 bis 15 repräsentieren die 16 Indizes des ersten Eingabewertes, und Werte von 16 bis 31 repräsentieren die 16 Indizes des zweiten Eingabewertes.

Typ

[input1, input2] -> [output]
input1

Die erste Eingabe v128 i8x16 Wertinterpretation.

input2

Die zweite Eingabe v128 i8x16 Wertinterpretation.

output

Die Ausgabe v128 Wertinterpretation.

Binäre Kodierung

Anweisung Binärformat Beispieltext => binär
i8x16.shuffle 0xfd 13:u32 l:lane_idx¹⁶ i8x16.shuffle 0 17 2 3 8 9 10 11 31 30 28 27 16 17 18 19 => 0xfd 0x0d 0x00 0x11 0x02 0x03 0x08 0x09 0x0a 0x0b 0x1f 0x1e 0x1c 0x1b 0x10 0x11 0x12 0x13

Spezifikationen

Diese Funktion scheint in keiner Spezifikation definiert zu sein.

Browser-Kompatibilität

Siehe auch