extmul_high_i32x4_u: Wasm SIMD Arithmetikinstruktion
Die extmul_high_i32x4_u SIMD Arithmetikinstruktion nimmt die Lanes 2–3 von zwei unsignierten 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_u
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 beiden i32x4-Eingabewerte zusammen multipliziert, und die Produkte werden als eine i64x2 ausgegeben. Lane 2 des ersten Eingangs wird mit Lane 2 des zweiten Eingangs multipliziert, und das Produkt wird zu Lane 0 des Ausgabewerts, und so weiter. Daher enthält jede Lane des Ausgabewerts den Wert 2000 (50 * 40).
Die extmul_high_i32x4_u-Instruktion ist eine leistungsfähigere Entsprechung dazu, die Ergebnisse von zwei extend_high_i32x4_u-Instruktionen in eine mul-Instruktion zu übergeben.
Anders ausgedrückt:
(i64x2.extmul_high_i32x4_u
(input1)
(input2)
)
ist equivalent zu
(i64x2.mul
(i64x2.extend_high_i32x4_u
(input1)
)
(i64x2.extend_high_i32x4_u
(input2)
)
)
Syntax
i64x2.extmul_high_i32x4_u
i64x2.extmul_high_i32x4_u-
Die
i64x2.extmul_high_i32x4_u-Instruktion.
Typ
[input1, input2] -> [output]
Binärcodierung
| Instruktion | Binärformat | Beispieltext => binär |
|---|---|---|
i64x2.extmul_high_i32x4_u |
0xfd 223:u32 |
i64x2.extmul_high_i32x4_u => 0xfd 0xdf 0x01 |
Spezifikationen
| Spezifikation |
|---|
| WebAssembly Core Specification> # vector-instructions%E2%91%A8> |