extmul_low_i16x8_u: Wasm SIMD arithmetische Anweisung
Die extmul_low_i16x8_u SIMD arithmetische Anweisung nimmt die Bahnen 0–3 von zwei unsignierten i16x8-Werten mit v128 Elementtypen, multipliziert die Werte in den entsprechenden Bahnen 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_low_i16x8_u
i32x4.extract_lane 3
call $log ;; log the result
)
(start $main)
)
WebAssembly.instantiateStreaming(fetch("{%wasm-url%}"), { console });
Im obigen Beispiel werden die Bahnen 0–3 der beiden i16x8-Eingangswerte miteinander multipliziert und die Produkte als i32x4 ausgegeben. Bahn 0 des ersten Eingangs wird mit Bahn 0 des zweiten Eingangs multipliziert, und das Produkt wird zu Bahn 0 der Ausgabe, und so weiter. Als Ergebnis enthält jede Bahn der Ausgabe den Wert 6 (3 * 2).
Die extmul_low_i16x8_u-Anweisung ist eine leistungsfähigere Alternative zum Übergang der Ergebnisse von zwei extend_low_i16x8_u-Anweisungen in eine mul-Anweisung.
Mit anderen Worten:
(i32x4.extmul_low_i16x8_u
(input1)
(input2)
)
ist gleichwertig zu
(i32x4.mul
(i32x4.extend_low_i16x8_u
(input1)
)
(i32x4.extend_low_i16x8_u
(input2)
)
)
Syntax
i32x4.extmul_low_i16x8_u
i32x4.extmul_low_i16x8_u-
Die
i32x4.extmul_low_i16x8_u-Anweisung.
Typ
[input1, input2] -> [output]
Binäre Codierung
| Anweisung | Binärformat | Beispieltext => binär |
|---|---|---|
i32x4.extmul_low_i16x8_u |
0xfd 190:u32 |
i32x4.extmul_low_i16x8_u => 0xfd 0xbe 0x01 |
Spezifikationen
| Spezifikation |
|---|
| WebAssembly Core Specification> # vector-instructions%E2%91%A8> |