add_sat_s: Wasm SIMD Arithmetikinstruktion
Die add_sat_s SIMD-Arithmetikinstruktion führt eine saturierende Addition von zwei vorzeichenbehafteten v128 Wertinterpretationen durch – wobei das Ergebnis auf den Bereich begrenzt wird, der durch den Werttyp erlaubt ist. Jeder Kanal des Ausgabewerts ist das Ergebnis der Addition der entsprechenden Kanäle der Eingabewerte.
Probieren Sie es aus
(module
(import "console" "log" (func $log (param i32)))
(func $main
v128.const i16x8 4 6 16 8 23 65 82 9
v128.const i16x8 0 25 2 30 2 34 45 80
i16x8.add_sat_s
i16x8.extract_lane_s 7
call $log ;; log the result
)
(start $main)
)
WebAssembly.instantiateStreaming(fetch("{%wasm-url%}"), { console });
Saturation bedeutet, dass die Ausgabewerte auf die oberen und unteren Werte begrenzt werden, die durch die Wertinterpretation erlaubt sind, anstatt zu überschreiten. Erlaubte Ausgabewerte sind:
i8x16.add_sat_s:−128bis127(der vollständige Bereich eines vorzeichenbehafteten 8-Bit-Integer)i16x8.add_sat_s:−32,768bis32,767(der vollständige Bereich eines vorzeichenbehafteten 16-Bit-Integer)
Syntax
value_type.add_sat_s
value_type-
Der Werttyp, auf dem die Instruktion ausgeführt wird. Die folgenden Typen unterstützen
add_sat_s:i8x16i16x8
add_sat_s-
Die
add_sat_sInstruktion. Muss immer nach demvalue_typeund einem Punkt (.) enthalten sein.
Typ
[input1, input2] -> [output]
Binärcodekodierung
| Instruktion | Binärformat | Beispieltext => Binär |
|---|---|---|
i8x16.add_sat_s |
0xfd 111:u32 |
i8x16.add_sat_s => 0xfd 0x6f |
i16x8.add_sat_s |
0xfd 143:u32 |
i16x8.add_sat_s => 0xfd 0x8f 0x01 |