extmul_high_i8x16_s: Wasm SIMD arithmetische Anweisung
Die extmul_high_i8x16_s SIMD arithmetische Anweisung nimmt die Lanes 8–15 von zwei vorzeichenbehafteten v128 i8x16-Wertinterpretationen, multipliziert die Werte in den entsprechenden Lanes und gibt das Ergebnis dieser Operationen als i16x8-Wertinterpretation aus.
Probieren Sie es aus
(module
(import "console" "log" (func $log (param i32)))
(func $main
v128.const i8x16 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3
v128.const i8x16 4 4 4 4 4 4 4 4 5 5 5 5 5 5 5 5
i16x8.extmul_high_i8x16_s
i16x8.extract_lane_s 7
call $log ;; log the result
)
(start $main)
)
WebAssembly.instantiateStreaming(fetch("{%wasm-url%}"), { console });
Im obigen Beispiel werden die Lanes 8–15 der beiden i8x16-Eingabewerte miteinander multipliziert, und die Produkte werden als i16x8 ausgegeben. Lane 8 des ersten Eingabewerts wird mit Lane 8 des zweiten Eingabewerts multipliziert, und das Produkt wird zu Lane 0 der Ausgabe, und so weiter. Dadurch enthält jede Lane der Ausgabe den Wert 15 (3 * 5).
Die extmul_high_i8x16_s-Anweisung ist ein leistungsfähigeres Äquivalent zum Übergeben der Ergebnisse von zwei extend_high_i8x16_s-Anweisungen an eine mul-Anweisung.
Anders ausgedrückt:
(i16x8.extmul_high_i8x16_s
(input1)
(input2)
)
ist äquivalent zu
(i16x8.mul
(i16x8.extend_high_i8x16_s
(input1)
)
(i16x8.extend_high_i8x16_s
(input2)
)
)
Syntax
i16x8.extmul_high_i8x16_s
i16x8.extmul_high_i8x16_s-
Die
i16x8.extmul_high_i8x16_s-Anweisung.
Typ
[input1, input2] -> [output]
Binärcode
| Anweisung | Binärformat | Beispieltext => binär |
|---|---|---|
i16x8.extmul_high_i8x16_s |
0xfd 157:u32 |
i16x8.extmul_high_i8x16_s => 0xfd 0x9d 0x01 |