dot_i16x8_s: Wasm SIMD Arithmetik-Instruktion
Die dot_i16x8_s SIMD Arithmetik-Instruktion führt eine Punktprodukt-Berechnung auf zwei vorzeichenbehafteten v128 i16x8-Wertinterpretationen durch. Die entsprechenden Lanes der Eingabewerte werden miteinander multipliziert und dann wird jedes angrenzende 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 erstellen:
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 wird als i32x4 auf den Stack 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ärcode
| Instruktion | Binärformat | Beispieltext => Binär |
|---|---|---|
i32x4.dot_i16x8_s |
0xfd 186:u32 |
i32x4.dot_i16x8_s => 0xfd 0xba 0x01 |
Spezifikationen
| Spezifikation |
|---|
| WebAssembly Core Specification> # vector-instructions%E2%91%A8> |