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]
Binärcodierung
| Instruktion | Binärformat | Beispielt <=> Binär |
|---|---|---|
i32x4.dot_i16x8_s |
0xfd 186:u32 |
i32x4.dot_i16x8_s => 0xfd 0xba 0x01 |