extmul_high_i32x4_s: Wasm SIMD arithmetische Anweisung
Die extmul_high_i32x4_s SIMD arithmetische Anweisung nimmt die Lanes 2–3 von zwei vorzeichenbehafteten v128 i32x4 Wertinterpretationen, multipliziert die Werte in den entsprechenden Lanes und gibt das Ergebnis dieser Operationen in einer i64x2 Wertinterpretation aus.
Probieren Sie es aus
(module
(import "console" "log" (func $log (param i64)))
(func $main
v128.const i32x4 25 25 50 50
v128.const i32x4 20 20 40 40
i64x2.extmul_high_i32x4_s
i64x2.extract_lane 1
call $log ;; log the result
)
(start $main)
)
WebAssembly.instantiateStreaming(fetch("{%wasm-url%}"), { console });
Im obigen Beispiel werden die Lanes 2–3 der zwei i32x4 Eingabewerte miteinander multipliziert und die Produkte als i64x2 ausgegeben. Lane 2 des ersten Eingabewerts wird mit Lane 2 des zweiten Eingabewerts multipliziert, und das Produkt wird zu Lane 0 der Ausgabe, und so weiter. Als Ergebnis enthält jede Lane der Ausgabe den Wert 2000 (50 * 40).
Die extmul_high_i32x4_s Anweisung ist ein leistungsfähigeres Äquivalent zur Übergabe der Ergebnisse von zwei extend_high_i32x4_s Anweisungen in eine mul Anweisung.
Anders ausgedrückt:
(i64x2.extmul_high_i32x4_s
(input1)
(input2)
)
entspricht
(i64x2.mul
(i64x2.extend_high_i32x4_s
(input1)
)
(i64x2.extend_high_i32x4_s
(input2)
)
)
Syntax
i64x2.extmul_high_i32x4_s
i64x2.extmul_high_i32x4_s-
Die
i64x2.extmul_high_i32x4_sAnweisung.
Typ
[input1, input2] -> [output]
Binärcodierung
| Anweisung | Binärformat | Beispieltext => binär |
|---|---|---|
i64x2.extmul_high_i32x4_s |
0xfd 221:u32 |
i64x2.extmul_high_i32x4_s => 0xfd 0xdd 0x01 |
Spezifikationen
| Spezifikation |
|---|
| WebAssembly Core Specification> # vector-instructions%E2%91%A8> |