extmul_high_i16x8_s: Wasm SIMD Rechenanweisung
Die extmul_high_i16x8_s SIMD Rechenanweisung nimmt die Lanes 4–7 von zwei signierten v128 i16x8 Wertinterpretationen, multipliziert die Werte in den entsprechenden Lanes 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 });
Im obigen Beispiel werden die Lanes 4–7 der beiden i16x8 Eingabewerte miteinander multipliziert und die Produkte als i32x4 ausgegeben. Lane 4 des ersten Eingangs wird mit Lane 4 des zweiten Eingangs multipliziert, und das Produkt wird zu Lane 0 der Ausgabe, und so weiter. Als Ergebnis enthält jede Lane der Ausgabe den Wert 24 (6 * 4).
Die extmul_high_i16x8_s Anweisung ist eine leistungsfähigere Entsprechung zur Übergabe der Ergebnisse von zwei extend_high_i16x8_s Anweisungen zu einer mul Anweisung.
Anders gesagt:
(i32x4.extmul_high_i16x8_s
(input1)
(input2)
)
entspricht
(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 |
Spezifikationen
| Spezifikation |
|---|
| WebAssembly Core Specification> # vector-instructions%E2%91%A8> |