extmul_high_i16x8_s: Wasm SIMD Arithmetik-Anweisung
Die extmul_high_i16x8_s SIMD-Arithmetik-Anweisung nimmt die Spuren 4–7 von zwei vorzeichenbehafteten v128 i16x8 Wertinterpretationen, multipliziert die Werte in den entsprechenden Spuren und gibt das Ergebnis dieser Operationen in einer i32x4 Wertinterpretation aus.
Probieren Sie es aus
(module
(import "console" "log" (func $log (param i32)))
(func $main
v128.const i16x8 3 3 3 3 6 6 6 6
v128.const i16x8 2 2 2 2 4 4 4 4
i32x4.extmul_high_i16x8_s
i32x4.extract_lane 3
call $log ;; log the result
)
(start $main)
)
WebAssembly.instantiateStreaming(fetch("{%wasm-url%}"), { console });
In dem obigen Beispiel werden die Spuren 4–7 der beiden i16x8 Eingabewerte miteinander multipliziert und die Produkte als i32x4 ausgegeben. Spur 4 des ersten Eingangs wird mit Spur 4 des zweiten Eingangs multipliziert, und das Produkt wird zu Spur 0 der Ausgabe, und so weiter. Infolgedessen enthält jede Spur der Ausgabe den Wert 24 (6 * 4).
Die extmul_high_i16x8_s Anweisung ist eine leistungsfähigere Entsprechung als das Übergeben der Ergebnisse von zwei extend_high_i16x8_s Anweisungen in eine mul Anweisung.
Mit anderen Worten:
(i32x4.extmul_high_i16x8_s
(input1)
(input2)
)
ist gleichwertig zu
(i32x4.mul
(i32x4.extend_high_i16x8_s
(input1)
)
(i32x4.extend_high_i16x8_s
(input2)
)
)
Syntax
i32x4.extmul_high_i16x8_s
i32x4.extmul_high_i16x8_s-
Die
i32x4.extmul_high_i16x8_sAnweisung.
Typ
[input1, input2] -> [output]
Binäre Kodierung
| Anweisung | Binärformat | Beispieltext => binär |
|---|---|---|
i32x4.extmul_high_i16x8_s |
0xfd 189:u32 |
i32x4.extmul_high_i16x8_s => 0xfd 0xbd 0x01 |