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

View in English Always switch to English

dot_i16x8_s: Wasm SIMD Arithmetikinstruktion

Die dot_i16x8_s SIMD Arithmetikinstruktion führt eine Punktprodukt-Berechnung auf zwei signierten v128 i16x8 Wertinterpretationen durch. Die entsprechenden Lanes der Eingabewerte werden miteinander multipliziert, dann wird jedes benachbarte Paar von Produkten zusammen addiert. Die vier Ergebnisse dieser Additionen werden als i32x4 Wertinterpretation ausgegeben.

Probieren Sie es aus

(module
  (import "console" "log" (func $log (param i32)))
  (func $main
    v128.const i16x8 4 6 16 8 23 65 82 9
    v128.const i16x8 0 25 2 30 2 34 45 80

    i32x4.dot_i16x8_s
    i32x4.extract_lane 3
    call $log ;; log the result
  )
  (start $main)
)
WebAssembly.instantiateStreaming(fetch("{%wasm-url%}"), { console });

Im obigen Beispiel werden die entsprechenden Lanes jeder Eingabe miteinander multipliziert, um acht Zwischenwerte zu erzeugen:

input1   4 6 16 8 23 65 82 9
input2   0 25 2 30 2 34 45 80
product  0 150 32 240 46 2210 3690 720

Jedes benachbarte Paar von Produkten wird dann addiert, und das Ergebnis als i32x4 auf den Stapel ausgegeben, der die folgenden Werte enthält:

150 272 2256 4410

Syntax

i32x4.dot_i16x8_s
i32x4.dot_i16x8_s

Die i32x4.dot_i16x8_s-Instruktion.

Typ

[input1, input2] -> [output]
input1

Die erste Eingabe v128 i16x8 Wertinterpretation.

input2

Die zweite Eingabe v128 i16x8 Wertinterpretation.

output

Die Ausgabe v128 i32x4 Wertinterpretation.

Binärcodierung

Instruktion Binärformat Beispielt <=> Binär
i32x4.dot_i16x8_s 0xfd 186:u32 i32x4.dot_i16x8_s => 0xfd 0xba 0x01

Spezifikationen

Diese Funktion scheint in keiner Spezifikation definiert zu sein.

Browser-Kompatibilität

Siehe auch