extmul_high_i16x8_s: Wasm SIMD Arithmetikanweisung
Die extmul_high_i16x8_s SIMD Arithmetikanweisung 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 });
Im obigen Beispiel werden die Spuren 4–7 der beiden i16x8 Eingabewerte miteinander multipliziert und die Produkte als i32x4 ausgegeben. Spur 4 des ersten Eingabewerts wird mit Spur 4 des zweiten Eingabewerts multipliziert und das Produkt wird zu Spur 0 der Ausgabe und so weiter. Dadurch enthält jede Spur der Ausgabe den Wert 24 (6 * 4).
Die Anweisung extmul_high_i16x8_s ist eine leistungsfähigere Entsprechung zum Durchlauf der Ergebnisse von zwei extend_high_i16x8_s Anweisungen in eine mul Anweisung.
Anders ausgedrückt:
(i32x4.extmul_high_i16x8_s
(input1)
(input2)
)
ist gleichbedeutend mit
(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ärcode
| Anweisung | Binärformat | Beispieltext => binär |
|---|---|---|
i32x4.extmul_high_i16x8_s |
0xfd 189:u32 |
i32x4.extmul_high_i16x8_s => 0xfd 0xbd 0x01 |