extmul_low_i8x16_u: Wasm SIMD Rechenanweisung
Die extmul_low_i8x16_u SIMD Rechenanweisung nimmt die Lanes 0–7 zweier unsigned v128 i8x16 Werteinterpretationen, multipliziert die Werte in den entsprechenden Lanes und gibt das Ergebnis dieser Operationen in einer i16x8 Werteinterpretation 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_low_i8x16_u
i16x8.extract_lane_s 7
call $log ;; log the result
)
(start $main)
)
WebAssembly.instantiateStreaming(fetch("{%wasm-url%}"), { console });
Im obigen Beispiel werden die Lanes 0–7 der beiden i8x16 Eingabewerte miteinander multipliziert, und die Produkte als i16x8 ausgegeben. Lane 0 des ersten Eingangs wird mit Lane 0 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 8 (2 * 4).
Die extmul_low_i8x16_u Anweisung ist ein leistungsfähigeres Pendant zum Übergeben der Ergebnisse von zwei extend_low_i8x16_u Anweisungen in eine mul Anweisung.
Mit anderen Worten:
(i16x8.extmul_low_i8x16_u
(input1)
(input2)
)
ist äquivalent zu
(i16x8.mul
(i16x8.extend_low_i8x16_u
(input1)
)
(i16x8.extend_low_i8x16_u
(input2)
)
)
Syntax
i16x8.extmul_low_i8x16_u
i16x8.extmul_low_i8x16_u-
Die
i16x8.extmul_low_i8x16_uAnweisung.
Typ
[input1, input2] -> [output]
Binäre Codierung
| Anweisung | Binärformat | Beispieltext => Binär |
|---|---|---|
i16x8.extmul_low_i8x16_u |
0xfd 158:u32 |
i16x8.extmul_low_i8x16_u => 0xfd 0x9e 0x01 |