diff --git a/interpreter/binary/decode.ml b/interpreter/binary/decode.ml index 8eded9028..b0a66eb36 100644 --- a/interpreter/binary/decode.ml +++ b/interpreter/binary/decode.ml @@ -315,11 +315,11 @@ let simd_prefix s = | 0x65l -> i8x16_narrow_i16x8_s | 0x66l -> i8x16_narrow_i16x8_u | 0x6el -> i8x16_add - | 0x6fl -> i8x16_add_saturate_s - | 0x70l -> i8x16_add_saturate_u + | 0x6fl -> i8x16_add_sat_s + | 0x70l -> i8x16_add_sat_u | 0x71l -> i8x16_sub - | 0x72l -> i8x16_sub_saturate_s - | 0x73l -> i8x16_sub_saturate_u + | 0x72l -> i8x16_sub_sat_s + | 0x73l -> i8x16_sub_sat_u | 0x76l -> i8x16_min_s | 0x77l -> i8x16_min_u | 0x78l -> i8x16_max_s @@ -340,11 +340,11 @@ let simd_prefix s = | 0x8cl -> i16x8_shr_s | 0x8dl -> i16x8_shr_u | 0x8el -> i16x8_add - | 0x8fl -> i16x8_add_saturate_s - | 0x90l -> i16x8_add_saturate_u + | 0x8fl -> i16x8_add_sat_s + | 0x90l -> i16x8_add_sat_u | 0x91l -> i16x8_sub - | 0x92l -> i16x8_sub_saturate_s - | 0x93l -> i16x8_sub_saturate_u + | 0x92l -> i16x8_sub_sat_s + | 0x93l -> i16x8_sub_sat_u | 0x95l -> i16x8_mul | 0x96l -> i16x8_min_s | 0x97l -> i16x8_min_u diff --git a/interpreter/syntax/operators.ml b/interpreter/syntax/operators.ml index eee0dcd4b..ffe7c713c 100644 --- a/interpreter/syntax/operators.ml +++ b/interpreter/syntax/operators.ml @@ -278,11 +278,11 @@ let i8x16_shl = SimdShift V128Op.(I8x16 Shl) let i8x16_shr_s = SimdShift V128Op.(I8x16 ShrS) let i8x16_shr_u = SimdShift V128Op.(I8x16 ShrU) let i8x16_add = Binary (V128 (V128Op.I8x16 V128Op.Add)) -let i8x16_add_saturate_s = Binary (V128 V128Op.(I8x16 AddSatS)) -let i8x16_add_saturate_u = Binary (V128 V128Op.(I8x16 AddSatU)) +let i8x16_add_sat_s = Binary (V128 V128Op.(I8x16 AddSatS)) +let i8x16_add_sat_u = Binary (V128 V128Op.(I8x16 AddSatU)) let i8x16_sub = Binary (V128 (V128Op.I8x16 V128Op.Sub)) -let i8x16_sub_saturate_s = Binary (V128 V128Op.(I8x16 SubSatS)) -let i8x16_sub_saturate_u = Binary (V128 V128Op.(I8x16 SubSatU)) +let i8x16_sub_sat_s = Binary (V128 V128Op.(I8x16 SubSatS)) +let i8x16_sub_sat_u = Binary (V128 V128Op.(I8x16 SubSatU)) let i8x16_abs = Unary (V128 (V128Op.I8x16 V128Op.Abs)) let i8x16_min_s = Binary (V128 (V128Op.I8x16 V128Op.MinS)) let i8x16_min_u = Binary (V128 (V128Op.I8x16 V128Op.MinU)) @@ -314,11 +314,11 @@ let i16x8_shl = SimdShift V128Op.(I16x8 Shl) let i16x8_shr_s = SimdShift V128Op.(I16x8 ShrS) let i16x8_shr_u = SimdShift V128Op.(I16x8 ShrU) let i16x8_add = Binary (V128 (V128Op.I16x8 V128Op.Add)) -let i16x8_add_saturate_s = Binary (V128 V128Op.(I16x8 AddSatS)) -let i16x8_add_saturate_u = Binary (V128 V128Op.(I16x8 AddSatU)) +let i16x8_add_sat_s = Binary (V128 V128Op.(I16x8 AddSatS)) +let i16x8_add_sat_u = Binary (V128 V128Op.(I16x8 AddSatU)) let i16x8_sub = Binary (V128 (V128Op.I16x8 V128Op.Sub)) -let i16x8_sub_saturate_s = Binary (V128 V128Op.(I16x8 SubSatS)) -let i16x8_sub_saturate_u = Binary (V128 V128Op.(I16x8 SubSatU)) +let i16x8_sub_sat_s = Binary (V128 V128Op.(I16x8 SubSatS)) +let i16x8_sub_sat_u = Binary (V128 V128Op.(I16x8 SubSatU)) let i16x8_mul = Binary (V128 (V128Op.I16x8 V128Op.Mul)) let i16x8_abs = Unary (V128 (V128Op.I16x8 V128Op.Abs)) let i16x8_min_s = Binary (V128 (V128Op.I16x8 V128Op.MinS)) diff --git a/interpreter/text/arrange.ml b/interpreter/text/arrange.ml index 9eeac2da5..336e99a42 100644 --- a/interpreter/text/arrange.ml +++ b/interpreter/text/arrange.ml @@ -266,11 +266,11 @@ struct | I8x16 NarrowS -> "i8x16.narrow_i16x8_s" | I8x16 NarrowU -> "i8x16.narrow_i16x8_u" | I8x16 Add -> "i8x16.add" - | I8x16 AddSatS -> "i8x16.add_saturate_s" - | I8x16 AddSatU -> "i8x16.add_saturate_u" + | I8x16 AddSatS -> "i8x16.add_sat_s" + | I8x16 AddSatU -> "i8x16.add_sat_u" | I8x16 Sub -> "i8x16.sub" - | I8x16 SubSatS -> "i8x16.sub_saturate_s" - | I8x16 SubSatU -> "i8x16.sub_saturate_u" + | I8x16 SubSatS -> "i8x16.sub_sat_s" + | I8x16 SubSatU -> "i8x16.sub_sat_u" | I8x16 MinS -> "i8x16.min_s" | I8x16 MinU -> "i8x16.min_u" | I8x16 MaxS -> "i8x16.max_s" @@ -279,11 +279,11 @@ struct | I16x8 NarrowS -> "i16x8.narrow_i32x4_s" | I16x8 NarrowU -> "i16x8.narrow_i32x4_u" | I16x8 Add -> "i16x8.add" - | I16x8 AddSatS -> "i16x8.add_saturate_s" - | I16x8 AddSatU -> "i16x8.add_saturate_u" + | I16x8 AddSatS -> "i16x8.add_sat_s" + | I16x8 AddSatU -> "i16x8.add_sat_u" | I16x8 Sub -> "i16x8.sub" - | I16x8 SubSatS -> "i16x8.sub_saturate_s" - | I16x8 SubSatU -> "i16x8.sub_saturate_u" + | I16x8 SubSatS -> "i16x8.sub_sat_s" + | I16x8 SubSatU -> "i16x8.sub_sat_u" | I16x8 Mul -> "i16x8.mul" | I16x8 MinS -> "i16x8.min_s" | I16x8 MinU -> "i16x8.min_u" diff --git a/interpreter/text/lexer.mll b/interpreter/text/lexer.mll index f7f69aa48..b6977a6b2 100644 --- a/interpreter/text/lexer.mll +++ b/interpreter/text/lexer.mll @@ -550,14 +550,14 @@ rule token = parse | "i32x4.widen_high_i16x8_"(sign as s) { UNARY (ext s i32x4_widen_high_i16x8_s i32x4_widen_high_i16x8_u) } - | "i8x16.add_saturate_"(sign as s) - { BINARY (ext s i8x16_add_saturate_s i8x16_add_saturate_u) } - | "i8x16.sub_saturate_"(sign as s) - { BINARY (ext s i8x16_sub_saturate_s i8x16_sub_saturate_u) } - | "i16x8.add_saturate_"(sign as s) - { BINARY (ext s i16x8_add_saturate_s i16x8_add_saturate_u) } - | "i16x8.sub_saturate_"(sign as s) - { BINARY (ext s i16x8_sub_saturate_s i16x8_sub_saturate_u) } + | "i8x16.add_sat_"(sign as s) + { BINARY (ext s i8x16_add_sat_s i8x16_add_sat_u) } + | "i8x16.sub_sat_"(sign as s) + { BINARY (ext s i8x16_sub_sat_s i8x16_sub_sat_u) } + | "i16x8.add_sat_"(sign as s) + { BINARY (ext s i16x8_add_sat_s i16x8_add_sat_u) } + | "i16x8.sub_sat_"(sign as s) + { BINARY (ext s i16x8_sub_sat_s i16x8_sub_sat_u) } | (simd_shape as s) { SIMD_SHAPE (simd_shape s) } diff --git a/proposals/simd/BinarySIMD.md b/proposals/simd/BinarySIMD.md index 91acfc22e..6699e7c61 100644 --- a/proposals/simd/BinarySIMD.md +++ b/proposals/simd/BinarySIMD.md @@ -126,11 +126,11 @@ For example, `ImmLaneIdx16` is a byte with values in the range 0-15 (inclusive). | `i8x16.shr_s` | `0x6c`| - | | `i8x16.shr_u` | `0x6d`| - | | `i8x16.add` | `0x6e`| - | -| `i8x16.add_saturate_s` | `0x6f`| - | -| `i8x16.add_saturate_u` | `0x70`| - | +| `i8x16.add_sat_s` | `0x6f`| - | +| `i8x16.add_sat_u` | `0x70`| - | | `i8x16.sub` | `0x71`| - | -| `i8x16.sub_saturate_s` | `0x72`| - | -| `i8x16.sub_saturate_u` | `0x73`| - | +| `i8x16.sub_sat_s` | `0x72`| - | +| `i8x16.sub_sat_u` | `0x73`| - | | `i8x16.min_s` | `0x76`| - | | `i8x16.min_u` | `0x77`| - | | `i8x16.max_s` | `0x78`| - | @@ -151,11 +151,11 @@ For example, `ImmLaneIdx16` is a byte with values in the range 0-15 (inclusive). | `i16x8.shr_s` | `0x8c`| - | | `i16x8.shr_u` | `0x8d`| - | | `i16x8.add` | `0x8e`| - | -| `i16x8.add_saturate_s` | `0x8f`| - | -| `i16x8.add_saturate_u` | `0x90`| - | +| `i16x8.add_sat_s` | `0x8f`| - | +| `i16x8.add_sat_u` | `0x90`| - | | `i16x8.sub` | `0x91`| - | -| `i16x8.sub_saturate_s` | `0x92`| - | -| `i16x8.sub_saturate_u` | `0x93`| - | +| `i16x8.sub_sat_s` | `0x92`| - | +| `i16x8.sub_sat_u` | `0x93`| - | | `i16x8.mul` | `0x95`| - | | `i16x8.min_s` | `0x96`| - | | `i16x8.min_u` | `0x97`| - | diff --git a/proposals/simd/ImplementationStatus.md b/proposals/simd/ImplementationStatus.md index e3c48535f..8b5ba53aa 100644 --- a/proposals/simd/ImplementationStatus.md +++ b/proposals/simd/ImplementationStatus.md @@ -94,11 +94,11 @@ | `i8x16.shr_s` | `-msimd128` | :heavy_check_mark: | | | :heavy_check_mark: | | `i8x16.shr_u` | `-msimd128` | :heavy_check_mark: | | | :heavy_check_mark: | | `i8x16.add` | `-msimd128` | :heavy_check_mark: | | | :heavy_check_mark: | -| `i8x16.add_saturate_s` | `-msimd128` | :heavy_check_mark: | | | :heavy_check_mark: | -| `i8x16.add_saturate_u` | `-msimd128` | :heavy_check_mark: | | | :heavy_check_mark: | +| `i8x16.add_sat_s` | `-msimd128` | :heavy_check_mark: | | | :heavy_check_mark: | +| `i8x16.add_sat_u` | `-msimd128` | :heavy_check_mark: | | | :heavy_check_mark: | | `i8x16.sub` | `-msimd128` | :heavy_check_mark: | | | :heavy_check_mark: | -| `i8x16.sub_saturate_s` | `-msimd128` | :heavy_check_mark: | | | :heavy_check_mark: | -| `i8x16.sub_saturate_u` | `-msimd128` | :heavy_check_mark: | | | :heavy_check_mark: | +| `i8x16.sub_sat_s` | `-msimd128` | :heavy_check_mark: | | | :heavy_check_mark: | +| `i8x16.sub_sat_u` | `-msimd128` | :heavy_check_mark: | | | :heavy_check_mark: | | `i8x16.min_s` | `-msimd128` | :heavy_check_mark: | | | :heavy_check_mark: | | `i8x16.min_u` | `-msimd128` | :heavy_check_mark: | | | :heavy_check_mark: | | `i8x16.max_s` | `-msimd128` | :heavy_check_mark: | | | :heavy_check_mark: | @@ -119,11 +119,11 @@ | `i16x8.shr_s` | `-msimd128` | :heavy_check_mark: | | | :heavy_check_mark: | | `i16x8.shr_u` | `-msimd128` | :heavy_check_mark: | | | :heavy_check_mark: | | `i16x8.add` | `-msimd128` | :heavy_check_mark: | | | :heavy_check_mark: | -| `i16x8.add_saturate_s` | `-msimd128` | :heavy_check_mark: | | | :heavy_check_mark: | -| `i16x8.add_saturate_u` | `-msimd128` | :heavy_check_mark: | | | :heavy_check_mark: | +| `i16x8.add_sat_s` | `-msimd128` | :heavy_check_mark: | | | :heavy_check_mark: | +| `i16x8.add_sat_u` | `-msimd128` | :heavy_check_mark: | | | :heavy_check_mark: | | `i16x8.sub` | `-msimd128` | :heavy_check_mark: | | | :heavy_check_mark: | -| `i16x8.sub_saturate_s` | `-msimd128` | :heavy_check_mark: | | | :heavy_check_mark: | -| `i16x8.sub_saturate_u` | `-msimd128` | :heavy_check_mark: | | | :heavy_check_mark: | +| `i16x8.sub_sat_s` | `-msimd128` | :heavy_check_mark: | | | :heavy_check_mark: | +| `i16x8.sub_sat_u` | `-msimd128` | :heavy_check_mark: | | | :heavy_check_mark: | | `i16x8.mul` | `-msimd128` | :heavy_check_mark: | | | :heavy_check_mark: | | `i16x8.min_s` | `-msimd128` | :heavy_check_mark: | | | :heavy_check_mark: | | `i16x8.min_u` | `-msimd128` | :heavy_check_mark: | | | :heavy_check_mark: | diff --git a/proposals/simd/NewOpcodes.md b/proposals/simd/NewOpcodes.md index 50daf4d82..8cac717f3 100644 --- a/proposals/simd/NewOpcodes.md +++ b/proposals/simd/NewOpcodes.md @@ -93,11 +93,11 @@ | i8x16.shr_s | 0x6c | i16x8.shr_s | 0x8c | i32x4.shr_s | 0xac | i64x2.shr_s | 0xcc | | i8x16.shr_u | 0x6d | i16x8.shr_u | 0x8d | i32x4.shr_u | 0xad | i64x2.shr_u | 0xcd | | i8x16.add | 0x6e | i16x8.add | 0x8e | i32x4.add | 0xae | i64x2.add | 0xce | -| i8x16.add_saturate_s | 0x6f | i16x8.add_saturate_s | 0x8f | ---- add_sat ---- | 0xaf | ---- | 0xcf | -| i8x16.add_saturate_u | 0x70 | i16x8.add_saturate_u | 0x90 | ---- add_sat ---- | 0xb0 | ---- | 0xd0 | +| i8x16.add_sat_s | 0x6f | i16x8.add_sat_s | 0x8f | ---- add_sat ---- | 0xaf | ---- | 0xcf | +| i8x16.add_sat_u | 0x70 | i16x8.add_sat_u | 0x90 | ---- add_sat ---- | 0xb0 | ---- | 0xd0 | | i8x16.sub | 0x71 | i16x8.sub | 0x91 | i32x4.sub | 0xb1 | i64x2.sub | 0xd1 | -| i8x16.sub_saturate_s | 0x72 | i16x8.sub_saturate_s | 0x92 | ---- sub_sat ---- | 0xb2 | ---- | 0xd2 | -| i8x16.sub_saturate_u | 0x73 | i16x8.sub_saturate_u | 0x93 | ---- sub_sat ---- | 0xb3 | ---- | 0xd3 | +| i8x16.sub_sat_s | 0x72 | i16x8.sub_sat_s | 0x92 | ---- sub_sat ---- | 0xb2 | ---- | 0xd2 | +| i8x16.sub_sat_u | 0x73 | i16x8.sub_sat_u | 0x93 | ---- sub_sat ---- | 0xb3 | ---- | 0xd3 | | ---- dot ---- | 0x74 | ---- dot ---- | 0x94 | ---- dot ---- | 0xb4 | ---- | 0xd4 | | ---- mul ---- | 0x75 | i16x8.mul | 0x95 | i32x4.mul | 0xb5 | i64x2.mul | 0xd5 | | i8x16.min_s | 0x76 | i16x8.min_s | 0x96 | i32x4.min_s | 0xb6 | ---- | 0xd6 | diff --git a/proposals/simd/SIMD.md b/proposals/simd/SIMD.md index 78b19c11d..27cbb2eaa 100644 --- a/proposals/simd/SIMD.md +++ b/proposals/simd/SIMD.md @@ -433,40 +433,40 @@ def S.UnsignedSaturate(x): ``` ### Saturating integer addition -* `i8x16.add_saturate_s(a: v128, b: v128) -> v128` -* `i8x16.add_saturate_u(a: v128, b: v128) -> v128` -* `i16x8.add_saturate_s(a: v128, b: v128) -> v128` -* `i16x8.add_saturate_u(a: v128, b: v128) -> v128` +* `i8x16.add_sat_s(a: v128, b: v128) -> v128` +* `i8x16.add_sat_u(a: v128, b: v128) -> v128` +* `i16x8.add_sat_s(a: v128, b: v128) -> v128` +* `i16x8.add_sat_u(a: v128, b: v128) -> v128` Lane-wise saturating addition: ```python -def S.add_saturate_s(a, b): +def S.add_sat_s(a, b): def addsat(x, y): return S.SignedSaturate(x + y) return S.lanewise_binary(addsat, S.AsSigned(a), S.AsSigned(b)) -def S.add_saturate_u(a, b): +def S.add_sat_u(a, b): def addsat(x, y): return S.UnsignedSaturate(x + y) return S.lanewise_binary(addsat, S.AsUnsigned(a), S.AsUnsigned(b)) ``` ### Saturating integer subtraction -* `i8x16.sub_saturate_s(a: v128, b: v128) -> v128` -* `i8x16.sub_saturate_u(a: v128, b: v128) -> v128` -* `i16x8.sub_saturate_s(a: v128, b: v128) -> v128` -* `i16x8.sub_saturate_u(a: v128, b: v128) -> v128` +* `i8x16.sub_sat_s(a: v128, b: v128) -> v128` +* `i8x16.sub_sat_u(a: v128, b: v128) -> v128` +* `i16x8.sub_sat_s(a: v128, b: v128) -> v128` +* `i16x8.sub_sat_u(a: v128, b: v128) -> v128` Lane-wise saturating subtraction: ```python -def S.sub_saturate_s(a, b): +def S.sub_sat_s(a, b): def subsat(x, y): return S.SignedSaturate(x - y) return S.lanewise_binary(subsat, S.AsSigned(a), S.AsSigned(b)) -def S.sub_saturate_u(a, b): +def S.sub_sat_u(a, b): def subsat(x, y): return S.UnsignedSaturate(x - y) return S.lanewise_binary(subsat, S.AsUnsigned(a), S.AsUnsigned(b)) diff --git a/test/core/simd/meta/simd_integer_op.py b/test/core/simd/meta/simd_integer_op.py index 85a2ac94d..ec7fede83 100644 --- a/test/core/simd/meta/simd_integer_op.py +++ b/test/core/simd/meta/simd_integer_op.py @@ -12,8 +12,8 @@ class ArithmeticOp: may be required for the operations. The following operators are covered: add, sub, mul, neg, - add_saturate_s, add_saturate_u, - sub_saturate_s, sub_saturate_u, + add_sat_s, add_sat_u, + sub_sat_s, sub_sat_u, min_s, min_u, max_s, max_u, avgr_u, abs """ def __init__(self, op: str): @@ -45,7 +45,7 @@ def _saturate(self, operand1: int, operand2: int, lane: LaneValue) -> int: """Get the result of saturating arithmetic operation on 2 operands. The operands can be both signed or unsigned. The following ops are covered: - add_saturate_s, sub_saturate_s, add_saturate_u, sub_saturate_u, + add_sat_s, sub_sat_s, add_sat_u, sub_sat_u, Saturating arithmetic can make sure: When the operation result is less than the minimum, return the minimum. @@ -56,7 +56,7 @@ def _saturate(self, operand1: int, operand2: int, lane: LaneValue) -> int: :param lane: the LaneValue instance of a lane in v128 :return: the result of the saturating arithmetic operation """ - if self.op.endswith('saturate_s'): + if self.op.endswith('sat_s'): if operand1 > lane.max: operand1 -= lane.mod if operand2 > lane.max: @@ -72,7 +72,7 @@ def _saturate(self, operand1: int, operand2: int, lane: LaneValue) -> int: if value < lane.min: return lane.min - if self.op.endswith('saturate_u'): + if self.op.endswith('sat_u'): if operand1 < 0: operand1 += lane.mod if operand2 < 0: @@ -127,8 +127,8 @@ def binary_op(self, operand1, operand2, lane): Supported ops: add, sub, mul, - add_saturate_s, add_saturate_u, - sub_saturate_s, sub_saturate_u, + add_sat_s, add_sat_u, + sub_sat_s, sub_sat_u, min_s, min_u, max_s, max_u, avgr_u :param operand1: the operand 1, integer or literal string in hex or decimal format @@ -155,7 +155,7 @@ def binary_op(self, operand1, operand2, lane): value = v1 - v2 elif self.op == 'mul': value = v1 * v2 - elif 'saturate' in self.op: + elif 'sat' in self.op: value = self._saturate(v1, v2, lane) if self.op.endswith('_u'): result_signed = False diff --git a/test/core/simd/meta/simd_sat_arith.py b/test/core/simd/meta/simd_sat_arith.py index 547ee25cf..5831f5c76 100644 --- a/test/core/simd/meta/simd_sat_arith.py +++ b/test/core/simd/meta/simd_sat_arith.py @@ -11,8 +11,8 @@ class SimdSaturateArithmeticCases(SimdArithmeticCase): UNARY_OPS = () - BINARY_OPS = ('add_saturate_s', 'add_saturate_u', - 'sub_saturate_s', 'sub_saturate_u') + BINARY_OPS = ('add_sat_s', 'add_sat_u', + 'sub_sat_s', 'sub_sat_u') malformed_template = '(assert_malformed (module quote\n "(func (result v128) ' \ '({lane_type}.{op} ({operand_1}) ({operand_2})))")\n "unknown operator")' @@ -39,7 +39,7 @@ def get_malformed_cases(self): # for saturating integer arithmetic operation for op in inst_ops: malformed_cases.append(self.malformed_template.format( - lane_type=self.LANE_TYPE, op='_'.join([op, 'saturate']), + lane_type=self.LANE_TYPE, op='_'.join([op, 'sat']), operand_1=self.v128_const(self.LANE_TYPE, '1'), operand_2=self.v128_const(self.LANE_TYPE, '2'))) return '\n'.join(malformed_cases) @@ -139,8 +139,8 @@ def get_combine_cases(self): '(local.get 2)))' for func in sorted(self.combine_ternary_arith_test_data): func_parts = func.split('-') - op1 = func_parts[1].replace('_', '_saturate_') - op2 = func_parts[2].replace('_', '_saturate_') + op1 = func_parts[1].replace('_', '_sat_') + op2 = func_parts[2].replace('_', '_sat_') combine_cases.append(ternary_func_template.format(func=func, lane=self.LANE_TYPE, op1=op1, @@ -149,7 +149,7 @@ def get_combine_cases(self): ' ({lane}.{op1} ({lane}.{op2} (local.get 0)) (local.get 1)))' for func in sorted(self.combine_binary_arith_test_data): func_parts = func.split('-') - op1 = func_parts[1].replace('_', '_saturate_') + op1 = func_parts[1].replace('_', '_sat_') combine_cases.append(binary_func_template.format(func=func, lane=self.LANE_TYPE, op1=op1, @@ -197,28 +197,28 @@ def hex_unary_op_test_data(self): @property def i8x16_f32x4_test_data(self): return { - 'i8x16.add_saturate_s': [ + 'i8x16.add_sat_s': [ [['0x80', '-0.0'], '0x80', ['i8x16', 'f32x4', 'i8x16']], [['1', '+inf'], ['0x01', '0x01', '0x81', '0x7f'] * 4, ['i8x16', 'f32x4', 'i8x16']], [['1', '-inf'], ['0x01', '0x01', '0x81', '0'] * 4, ['i8x16', 'f32x4', 'i8x16']], [['1', 'nan'], ['0x01', '0x01', '0xc1', '0x7f'] * 4, ['i8x16', 'f32x4', 'i8x16']], [['1', '-nan'], ['0x01', '0x01', '0xc1', '0'] * 4, ['i8x16', 'f32x4', 'i8x16']] ], - 'i8x16.add_saturate_u': [ + 'i8x16.add_sat_u': [ [['0x80', '-0.0'], ['0x80', '0x80', '0x80', '0xff'] * 4, ['i8x16', 'f32x4', 'i8x16']], [['1', '+inf'], ['0x01', '0x01', '0x81', '0x80'] * 4, ['i8x16', 'f32x4', 'i8x16']], [['1', '-inf'], ['0x01', '0x01', '0x81', '0xff'] * 4, ['i8x16', 'f32x4', 'i8x16']], [['1', 'nan'], ['0x01', '0x01', '0xc1', '0x80'] * 4, ['i8x16', 'f32x4', 'i8x16']], [['1', '-nan'], ['0x01', '0x01', '0xc1', '0xff'] * 4, ['i8x16', 'f32x4', 'i8x16']], ], - 'i8x16.sub_saturate_s': [ + 'i8x16.sub_sat_s': [ [['0x80', '-0.0'], ['0x80', '0x80', '0x80', '0'] * 4, ['i8x16', 'f32x4', 'i8x16']], [['1', '+inf'], ['0x01', '0x01', '0x7f', '0x82'] * 4, ['i8x16', 'f32x4', 'i8x16']], [['1', '-inf'], ['0x01', '0x01', '0x7f', '0x02'] * 4, ['i8x16', 'f32x4', 'i8x16']], [['1', 'nan'], ['0x01', '0x01', '0x41', '0x82'] * 4, ['i8x16', 'f32x4', 'i8x16']], [['1', '-nan'], ['0x01', '0x01', '0x41', '0x02'] * 4, ['i8x16', 'f32x4', 'i8x16']], ], - 'i8x16.sub_saturate_u': [ + 'i8x16.sub_sat_u': [ [['0x80', '-0.0'], ['0x80', '0x80', '0x80', '0'] * 4, ['i8x16', 'f32x4', 'i8x16']], [['1', '+inf'], ['0x01', '0x01', '0', '0'] * 4, ['i8x16', 'f32x4', 'i8x16']], [['1', '-inf'], ['0x01', '0x01', '0', '0'] * 4, ['i8x16', 'f32x4', 'i8x16']], @@ -230,19 +230,19 @@ def i8x16_f32x4_test_data(self): @property def combine_dec_hex_test_data(self): return { - 'i8x16.add_saturate_s': [ + 'i8x16.add_sat_s': [ [[['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15'], ['0', '0xff', '0xfe', '0xfd', '0xfc', '0xfb', '0xfa', '0xf9', '0xf8', '0xf7', '0xf6', '0xf5', '0xf4', '0xf3', '0xf2', '0xf1']], ['0'] * 16, ['i8x16', 'i8x16', 'i8x16']] ], - 'i8x16.add_saturate_u': [ + 'i8x16.add_sat_u': [ [[['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15'], ['0', '0xff', '0xfe', '0xfd', '0xfc', '0xfb', '0xfa', '0xf9', '0xf8', '0xf7', '0xf6', '0xf5', '0xf4', '0xf3', '0xf2', '0xf1']], ['0'] + ['0xff'] * 15, ['i8x16', 'i8x16', 'i8x16']] ], - 'i8x16.sub_saturate_s': [ + 'i8x16.sub_sat_s': [ [[['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15'], ['0', '0xff', '0xfe', '0xfd', '0xfc', '0xfb', '0xfa', '0xf9', '0xf8', '0xf7', '0xf6', '0xf5', '0xf4', '0xf3', '0xf2', '0xf1']], @@ -250,7 +250,7 @@ def combine_dec_hex_test_data(self): '0x18', '0x1a', '0x1c', '0x1e'], ['i8x16', 'i8x16', 'i8x16']] ], - 'i8x16.sub_saturate_u': [ + 'i8x16.sub_sat_u': [ [[['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13', '14', '15'], ['0', '0xff', '0xfe', '0xfd', '0xfc', '0xfb', '0xfa', '0xf9', '0xf8', '0xf7', '0xf6', '0xf5', '0xf4', '0xf3', '0xf2', '0xf1']], @@ -262,19 +262,19 @@ def combine_dec_hex_test_data(self): @property def range_test_data(self): return { - 'i8x16.add_saturate_s': [ + 'i8x16.add_sat_s': [ [[[str(i) for i in range(16)], [str(i * 2) for i in range(16)]], [str(i * 3) for i in range(16)], ['i8x16', 'i8x16', 'i8x16']] ], - 'i8x16.add_saturate_u': [ + 'i8x16.add_sat_u': [ [[[str(i) for i in range(16)], [str(i * 2) for i in range(16)]], [str(i * 3) for i in range(16)], ['i8x16', 'i8x16', 'i8x16']] ], - 'i8x16.sub_saturate_s': [ + 'i8x16.sub_sat_s': [ [[[str(i) for i in range(16)], [str(i * 2) for i in range(16)]], [str(-i) for i in range(16)], ['i8x16', 'i8x16', 'i8x16']] ], - 'i8x16.sub_saturate_u': [ + 'i8x16.sub_sat_u': [ [[[str(i) for i in range(16)], [str(i * 2) for i in range(16)]], ['0'] * 16, ['i8x16', 'i8x16', 'i8x16']] ], @@ -295,7 +295,7 @@ def get_malformed_cases(self): for op in ['add', 'sub']: for suffix in ['s', 'u']: malformed_cases.append(self.malformed_template.format( - lane_type=prefix, op='_'.join([op, 'saturate', suffix]), + lane_type=prefix, op='_'.join([op, 'sat', suffix]), operand_1=self.v128_const(prefix, '0', lane_len=4), operand_2=self.v128_const(prefix, '0', lane_len=4) )) @@ -330,25 +330,25 @@ def hex_unary_op_test_data(self): @property def underscore_literal_test_data(self): return { - 'i16x8.add_saturate_s': [ + 'i16x8.add_sat_s': [ [['012_345', '032_123'], '032_767', ['i16x8'] * 3], [['012_345', '056_789'], '03_598', ['i16x8'] * 3], [['0x0_1234', '0x0_5678'], '0x0_68ac', ['i16x8'] * 3], [['0x0_90AB', '0x0_cdef'], '-0x0_8000', ['i16x8'] * 3] ], - 'i16x8.add_saturate_u': [ + 'i16x8.add_sat_u': [ [['012_345', '056_789'], '065_535', ['i16x8'] * 3], [['012_345', '-012_345'], '065_535', ['i16x8'] * 3], [['0x0_1234', '0x0_5678'], '0x0_68ac', ['i16x8'] * 3], [['0x0_90AB', '0x0_cdef'], '0x0_ffff', ['i16x8'] * 3] ], - 'i16x8.sub_saturate_s': [ + 'i16x8.sub_sat_s': [ [['012_345', '056_789'], '021_092', ['i16x8'] * 3], [['012_345', '-012_345'], '024_690', ['i16x8'] * 3], [['0x0_1234', '0x0_5678'], '0x0_bbbc', ['i16x8'] * 3], [['0x0_90AB', '-0x1234'], '0xa2df', ['i16x8'] * 3] ], - 'i16x8.sub_saturate_u': [ + 'i16x8.sub_sat_u': [ [['012_345', '056_789'], '0', ['i16x8'] * 3], [['056_789', '-12_345'], '03_598', ['i16x8'] * 3], [['0x0_1234', '-0x0_5678'], '0', ['i16x8'] * 3], @@ -359,28 +359,28 @@ def underscore_literal_test_data(self): @property def i16x8_f32x4_test_data(self): return { - 'i16x8.add_saturate_s': [ + 'i16x8.add_sat_s': [ [['0x8000', '-0.0'], '0x8000', ['i16x8', 'f32x4', 'i16x8']], [['1', '+inf'], ['0x01', '0x7f81'] * 4, ['i16x8', 'f32x4', 'i16x8']], [['1', '-inf'], ['0x01', '0xff81'] * 4, ['i16x8', 'f32x4', 'i16x8']], [['1', 'nan'], ['0x01', '0x7fc1'] * 4, ['i16x8', 'f32x4', 'i16x8']], [['1', '-nan'], ['0x01', '0xffc1'] * 4, ['i16x8', 'f32x4', 'i16x8']] ], - 'i16x8.add_saturate_u': [ + 'i16x8.add_sat_u': [ [['0x8000', '-0.0'], ['0x8000', '0xffff'] * 4, ['i16x8', 'f32x4', 'i16x8']], [['1', '+inf'], ['0x01', '0x7f81'] * 4, ['i16x8', 'f32x4', 'i16x8']], [['1', '-inf'], ['0x01', '0xff81'] * 4, ['i16x8', 'f32x4', 'i16x8']], [['1', 'nan'], ['0x01', '0x7fc1'] * 4, ['i16x8', 'f32x4', 'i16x8']], [['1', 'nan'], ['0x01', '0x7fc1'] * 4, ['i16x8', 'f32x4', 'i16x8']] ], - 'i16x8.sub_saturate_s': [ + 'i16x8.sub_sat_s': [ [['0x8000', '-0.0'], ['0x8000', '0'] * 4, ['i16x8', 'f32x4', 'i16x8']], [['1', '+inf'], ['0x01', '0x8081'] * 4, ['i16x8', 'f32x4', 'i16x8']], [['1', '-inf'], ['0x01', '0x81'] * 4, ['i16x8', 'f32x4', 'i16x8']], [['1', 'nan'], ['0x01', '0x8041'] * 4, ['i16x8', 'f32x4', 'i16x8']], [['1', '-nan'], ['0x01', '0x41'] * 4, ['i16x8', 'f32x4', 'i16x8']] ], - 'i16x8.sub_saturate_u': [ + 'i16x8.sub_sat_u': [ [['0x8000', '-0.0'], ['0x8000', '0'] * 4, ['i16x8', 'f32x4', 'i16x8']], [['1', '+inf'], ['0x01', '0'] * 4, ['i16x8', 'f32x4', 'i16x8']], [['1', '-inf'], ['0x01', '0'] * 4, ['i16x8', 'f32x4', 'i16x8']], @@ -392,22 +392,22 @@ def i16x8_f32x4_test_data(self): @property def combine_dec_hex_test_data(self): return { - 'i16x8.add_saturate_s': [ + 'i16x8.add_sat_s': [ [[['0', '1', '2', '3', '4', '5', '6', '7'], ['0', '0xffff', '0xfffe', '0xfffd', '0xfffc', '0xfffb', '0xfffa', '0xfff9']], ['0'] * 8, ['i16x8'] * 3] ], - 'i16x8.add_saturate_u': [ + 'i16x8.add_sat_u': [ [[['0', '1', '2', '3', '4', '5', '6', '7'], ['0', '0xffff', '0xfffe', '0xfffd', '0xfffc', '0xfffb', '0xfffa', '0xfff9']], ['0'] + ['0xffff'] * 7, ['i16x8'] * 3] ], - 'i16x8.sub_saturate_s': [ + 'i16x8.sub_sat_s': [ [[['0', '1', '2', '3', '4', '5', '6', '7'], ['0', '0xffff', '0xfffe', '0xfffd', '0xfffc', '0xfffb', '0xfffa', '0xfff9']], ['0', '2', '4', '6', '8', '10', '12', '14'], ['i16x8'] * 3] ], - 'i16x8.sub_saturate_u': [ + 'i16x8.sub_sat_u': [ [[['0', '1', '2', '3', '4', '5', '6', '7'], ['0', '0xffff', '0xfffe', '0xfffd', '0xfffc', '0xfffb', '0xfffa', '0xfff9']], ['0'] * 8, ['i16x8'] * 3] @@ -417,19 +417,19 @@ def combine_dec_hex_test_data(self): @property def range_test_data(self): return { - 'i16x8.add_saturate_s': [ + 'i16x8.add_sat_s': [ [[[str(i) for i in range(8)], [str(i * 2) for i in range(8)]], [str(i * 3) for i in range(8)], ['i16x8'] * 3] ], - 'i16x8.add_saturate_u': [ + 'i16x8.add_sat_u': [ [[[str(i) for i in range(8)], [str(i * 2) for i in range(8)]], [str(i * 3) for i in range(8)], ['i16x8'] * 3] ], - 'i16x8.sub_saturate_s': [ + 'i16x8.sub_sat_s': [ [[[str(i) for i in range(8)], [str(i * 2) for i in range(8)]], [str(-i) for i in range(8)], ['i16x8'] * 3] ], - 'i16x8.sub_saturate_u': [ + 'i16x8.sub_sat_u': [ [[[str(i) for i in range(8)], [str(i * 2) for i in range(8)]], ['0'] * 8, ['i16x8'] * 3] ] diff --git a/test/core/simd/simd_i16x8_sat_arith.wast b/test/core/simd/simd_i16x8_sat_arith.wast index 44f859aa5..cea4ebbc7 100644 --- a/test/core/simd/simd_i16x8_sat_arith.wast +++ b/test/core/simd/simd_i16x8_sat_arith.wast @@ -2,691 +2,691 @@ (module - (func (export "i16x8.add_saturate_s") (param v128 v128) (result v128) (i16x8.add_saturate_s (local.get 0) (local.get 1))) - (func (export "i16x8.add_saturate_u") (param v128 v128) (result v128) (i16x8.add_saturate_u (local.get 0) (local.get 1))) - (func (export "i16x8.sub_saturate_s") (param v128 v128) (result v128) (i16x8.sub_saturate_s (local.get 0) (local.get 1))) - (func (export "i16x8.sub_saturate_u") (param v128 v128) (result v128) (i16x8.sub_saturate_u (local.get 0) (local.get 1))) + (func (export "i16x8.add_sat_s") (param v128 v128) (result v128) (i16x8.add_sat_s (local.get 0) (local.get 1))) + (func (export "i16x8.add_sat_u") (param v128 v128) (result v128) (i16x8.add_sat_u (local.get 0) (local.get 1))) + (func (export "i16x8.sub_sat_s") (param v128 v128) (result v128) (i16x8.sub_sat_s (local.get 0) (local.get 1))) + (func (export "i16x8.sub_sat_u") (param v128 v128) (result v128) (i16x8.sub_sat_u (local.get 0) (local.get 1))) ) -;; i16x8.add_saturate_s -(assert_return (invoke "i16x8.add_saturate_s" (v128.const i16x8 0 0 0 0 0 0 0 0) - (v128.const i16x8 0 0 0 0 0 0 0 0)) - (v128.const i16x8 0 0 0 0 0 0 0 0)) -(assert_return (invoke "i16x8.add_saturate_s" (v128.const i16x8 0 0 0 0 0 0 0 0) - (v128.const i16x8 1 1 1 1 1 1 1 1)) - (v128.const i16x8 1 1 1 1 1 1 1 1)) -(assert_return (invoke "i16x8.add_saturate_s" (v128.const i16x8 1 1 1 1 1 1 1 1) - (v128.const i16x8 1 1 1 1 1 1 1 1)) - (v128.const i16x8 2 2 2 2 2 2 2 2)) -(assert_return (invoke "i16x8.add_saturate_s" (v128.const i16x8 0 0 0 0 0 0 0 0) - (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1)) - (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1)) -(assert_return (invoke "i16x8.add_saturate_s" (v128.const i16x8 1 1 1 1 1 1 1 1) - (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1)) - (v128.const i16x8 0 0 0 0 0 0 0 0)) -(assert_return (invoke "i16x8.add_saturate_s" (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1) - (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1)) - (v128.const i16x8 -2 -2 -2 -2 -2 -2 -2 -2)) -(assert_return (invoke "i16x8.add_saturate_s" (v128.const i16x8 16383 16383 16383 16383 16383 16383 16383 16383) - (v128.const i16x8 16384 16384 16384 16384 16384 16384 16384 16384)) - (v128.const i16x8 32767 32767 32767 32767 32767 32767 32767 32767)) -(assert_return (invoke "i16x8.add_saturate_s" (v128.const i16x8 16384 16384 16384 16384 16384 16384 16384 16384) - (v128.const i16x8 16384 16384 16384 16384 16384 16384 16384 16384)) - (v128.const i16x8 32767 32767 32767 32767 32767 32767 32767 32767)) -(assert_return (invoke "i16x8.add_saturate_s" (v128.const i16x8 -16383 -16383 -16383 -16383 -16383 -16383 -16383 -16383) - (v128.const i16x8 -16384 -16384 -16384 -16384 -16384 -16384 -16384 -16384)) - (v128.const i16x8 -32767 -32767 -32767 -32767 -32767 -32767 -32767 -32767)) -(assert_return (invoke "i16x8.add_saturate_s" (v128.const i16x8 -16384 -16384 -16384 -16384 -16384 -16384 -16384 -16384) - (v128.const i16x8 -16384 -16384 -16384 -16384 -16384 -16384 -16384 -16384)) - (v128.const i16x8 -32768 -32768 -32768 -32768 -32768 -32768 -32768 -32768)) -(assert_return (invoke "i16x8.add_saturate_s" (v128.const i16x8 -16385 -16385 -16385 -16385 -16385 -16385 -16385 -16385) - (v128.const i16x8 -16384 -16384 -16384 -16384 -16384 -16384 -16384 -16384)) - (v128.const i16x8 -32768 -32768 -32768 -32768 -32768 -32768 -32768 -32768)) -(assert_return (invoke "i16x8.add_saturate_s" (v128.const i16x8 32765 32765 32765 32765 32765 32765 32765 32765) - (v128.const i16x8 1 1 1 1 1 1 1 1)) - (v128.const i16x8 32766 32766 32766 32766 32766 32766 32766 32766)) -(assert_return (invoke "i16x8.add_saturate_s" (v128.const i16x8 32766 32766 32766 32766 32766 32766 32766 32766) - (v128.const i16x8 1 1 1 1 1 1 1 1)) - (v128.const i16x8 32767 32767 32767 32767 32767 32767 32767 32767)) -(assert_return (invoke "i16x8.add_saturate_s" (v128.const i16x8 32768 32768 32768 32768 32768 32768 32768 32768) - (v128.const i16x8 1 1 1 1 1 1 1 1)) - (v128.const i16x8 -32767 -32767 -32767 -32767 -32767 -32767 -32767 -32767)) -(assert_return (invoke "i16x8.add_saturate_s" (v128.const i16x8 -32766 -32766 -32766 -32766 -32766 -32766 -32766 -32766) - (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1)) - (v128.const i16x8 -32767 -32767 -32767 -32767 -32767 -32767 -32767 -32767)) -(assert_return (invoke "i16x8.add_saturate_s" (v128.const i16x8 -32767 -32767 -32767 -32767 -32767 -32767 -32767 -32767) - (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1)) - (v128.const i16x8 -32768 -32768 -32768 -32768 -32768 -32768 -32768 -32768)) -(assert_return (invoke "i16x8.add_saturate_s" (v128.const i16x8 -32768 -32768 -32768 -32768 -32768 -32768 -32768 -32768) - (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1)) - (v128.const i16x8 -32768 -32768 -32768 -32768 -32768 -32768 -32768 -32768)) -(assert_return (invoke "i16x8.add_saturate_s" (v128.const i16x8 32767 32767 32767 32767 32767 32767 32767 32767) - (v128.const i16x8 32767 32767 32767 32767 32767 32767 32767 32767)) - (v128.const i16x8 32767 32767 32767 32767 32767 32767 32767 32767)) -(assert_return (invoke "i16x8.add_saturate_s" (v128.const i16x8 -32768 -32768 -32768 -32768 -32768 -32768 -32768 -32768) - (v128.const i16x8 -32768 -32768 -32768 -32768 -32768 -32768 -32768 -32768)) - (v128.const i16x8 -32768 -32768 -32768 -32768 -32768 -32768 -32768 -32768)) -(assert_return (invoke "i16x8.add_saturate_s" (v128.const i16x8 -32768 -32768 -32768 -32768 -32768 -32768 -32768 -32768) - (v128.const i16x8 -32767 -32767 -32767 -32767 -32767 -32767 -32767 -32767)) - (v128.const i16x8 -32768 -32768 -32768 -32768 -32768 -32768 -32768 -32768)) -(assert_return (invoke "i16x8.add_saturate_s" (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535) - (v128.const i16x8 0 0 0 0 0 0 0 0)) - (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1)) -(assert_return (invoke "i16x8.add_saturate_s" (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535) - (v128.const i16x8 1 1 1 1 1 1 1 1)) - (v128.const i16x8 0 0 0 0 0 0 0 0)) -(assert_return (invoke "i16x8.add_saturate_s" (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535) - (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1)) - (v128.const i16x8 -2 -2 -2 -2 -2 -2 -2 -2)) -(assert_return (invoke "i16x8.add_saturate_s" (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535) - (v128.const i16x8 32767 32767 32767 32767 32767 32767 32767 32767)) - (v128.const i16x8 32766 32766 32766 32766 32766 32766 32766 32766)) -(assert_return (invoke "i16x8.add_saturate_s" (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535) - (v128.const i16x8 -32768 -32768 -32768 -32768 -32768 -32768 -32768 -32768)) - (v128.const i16x8 -32768 -32768 -32768 -32768 -32768 -32768 -32768 -32768)) -(assert_return (invoke "i16x8.add_saturate_s" (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535) - (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535)) - (v128.const i16x8 -2 -2 -2 -2 -2 -2 -2 -2)) -(assert_return (invoke "i16x8.add_saturate_s" (v128.const i16x8 0x3fff 0x3fff 0x3fff 0x3fff 0x3fff 0x3fff 0x3fff 0x3fff) - (v128.const i16x8 0x4000 0x4000 0x4000 0x4000 0x4000 0x4000 0x4000 0x4000)) - (v128.const i16x8 32767 32767 32767 32767 32767 32767 32767 32767)) -(assert_return (invoke "i16x8.add_saturate_s" (v128.const i16x8 0x4000 0x4000 0x4000 0x4000 0x4000 0x4000 0x4000 0x4000) - (v128.const i16x8 0x4000 0x4000 0x4000 0x4000 0x4000 0x4000 0x4000 0x4000)) - (v128.const i16x8 32767 32767 32767 32767 32767 32767 32767 32767)) -(assert_return (invoke "i16x8.add_saturate_s" (v128.const i16x8 -0x3fff -0x3fff -0x3fff -0x3fff -0x3fff -0x3fff -0x3fff -0x3fff) - (v128.const i16x8 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000)) - (v128.const i16x8 -32767 -32767 -32767 -32767 -32767 -32767 -32767 -32767)) -(assert_return (invoke "i16x8.add_saturate_s" (v128.const i16x8 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000) - (v128.const i16x8 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000)) - (v128.const i16x8 -32768 -32768 -32768 -32768 -32768 -32768 -32768 -32768)) -(assert_return (invoke "i16x8.add_saturate_s" (v128.const i16x8 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000) - (v128.const i16x8 -0x4001 -0x4001 -0x4001 -0x4001 -0x4001 -0x4001 -0x4001 -0x4001)) - (v128.const i16x8 -32768 -32768 -32768 -32768 -32768 -32768 -32768 -32768)) -(assert_return (invoke "i16x8.add_saturate_s" (v128.const i16x8 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff) - (v128.const i16x8 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff)) - (v128.const i16x8 32767 32767 32767 32767 32767 32767 32767 32767)) -(assert_return (invoke "i16x8.add_saturate_s" (v128.const i16x8 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff) - (v128.const i16x8 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01)) - (v128.const i16x8 32767 32767 32767 32767 32767 32767 32767 32767)) -(assert_return (invoke "i16x8.add_saturate_s" (v128.const i16x8 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000) - (v128.const i16x8 -0x01 -0x01 -0x01 -0x01 -0x01 -0x01 -0x01 -0x01)) - (v128.const i16x8 -32768 -32768 -32768 -32768 -32768 -32768 -32768 -32768)) -(assert_return (invoke "i16x8.add_saturate_s" (v128.const i16x8 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff) - (v128.const i16x8 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000)) - (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1)) -(assert_return (invoke "i16x8.add_saturate_s" (v128.const i16x8 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000) - (v128.const i16x8 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000)) - (v128.const i16x8 -32768 -32768 -32768 -32768 -32768 -32768 -32768 -32768)) -(assert_return (invoke "i16x8.add_saturate_s" (v128.const i16x8 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff) - (v128.const i16x8 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01)) - (v128.const i16x8 0 0 0 0 0 0 0 0)) -(assert_return (invoke "i16x8.add_saturate_s" (v128.const i16x8 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff) - (v128.const i16x8 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff)) - (v128.const i16x8 -2 -2 -2 -2 -2 -2 -2 -2)) -(assert_return (invoke "i16x8.add_saturate_s" (v128.const i16x8 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000) - (v128.const f32x4 -0.0 -0.0 -0.0 -0.0)) - (v128.const i16x8 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000)) -(assert_return (invoke "i16x8.add_saturate_s" (v128.const i16x8 1 1 1 1 1 1 1 1) - (v128.const f32x4 +inf +inf +inf +inf)) - (v128.const i16x8 0x01 0x7f81 0x01 0x7f81 0x01 0x7f81 0x01 0x7f81)) -(assert_return (invoke "i16x8.add_saturate_s" (v128.const i16x8 1 1 1 1 1 1 1 1) - (v128.const f32x4 -inf -inf -inf -inf)) - (v128.const i16x8 0x01 0xff81 0x01 0xff81 0x01 0xff81 0x01 0xff81)) -(assert_return (invoke "i16x8.add_saturate_s" (v128.const i16x8 1 1 1 1 1 1 1 1) - (v128.const f32x4 nan nan nan nan)) - (v128.const i16x8 0x01 0x7fc1 0x01 0x7fc1 0x01 0x7fc1 0x01 0x7fc1)) -(assert_return (invoke "i16x8.add_saturate_s" (v128.const i16x8 1 1 1 1 1 1 1 1) - (v128.const f32x4 -nan -nan -nan -nan)) - (v128.const i16x8 0x01 0xffc1 0x01 0xffc1 0x01 0xffc1 0x01 0xffc1)) -(assert_return (invoke "i16x8.add_saturate_s" (v128.const i16x8 0 1 2 3 4 5 6 7) - (v128.const i16x8 0 0xffff 0xfffe 0xfffd 0xfffc 0xfffb 0xfffa 0xfff9)) - (v128.const i16x8 0 0 0 0 0 0 0 0)) -(assert_return (invoke "i16x8.add_saturate_s" (v128.const i16x8 0 1 2 3 4 5 6 7) - (v128.const i16x8 0 2 4 6 8 10 12 14)) - (v128.const i16x8 0 3 6 9 12 15 18 21)) -(assert_return (invoke "i16x8.add_saturate_s" (v128.const i16x8 012_345 012_345 012_345 012_345 012_345 012_345 012_345 012_345) - (v128.const i16x8 032_123 032_123 032_123 032_123 032_123 032_123 032_123 032_123)) - (v128.const i16x8 032_767 032_767 032_767 032_767 032_767 032_767 032_767 032_767)) -(assert_return (invoke "i16x8.add_saturate_s" (v128.const i16x8 012_345 012_345 012_345 012_345 012_345 012_345 012_345 012_345) - (v128.const i16x8 056_789 056_789 056_789 056_789 056_789 056_789 056_789 056_789)) - (v128.const i16x8 03_598 03_598 03_598 03_598 03_598 03_598 03_598 03_598)) -(assert_return (invoke "i16x8.add_saturate_s" (v128.const i16x8 0x0_1234 0x0_1234 0x0_1234 0x0_1234 0x0_1234 0x0_1234 0x0_1234 0x0_1234) - (v128.const i16x8 0x0_5678 0x0_5678 0x0_5678 0x0_5678 0x0_5678 0x0_5678 0x0_5678 0x0_5678)) - (v128.const i16x8 0x0_68ac 0x0_68ac 0x0_68ac 0x0_68ac 0x0_68ac 0x0_68ac 0x0_68ac 0x0_68ac)) -(assert_return (invoke "i16x8.add_saturate_s" (v128.const i16x8 0x0_90AB 0x0_90AB 0x0_90AB 0x0_90AB 0x0_90AB 0x0_90AB 0x0_90AB 0x0_90AB) - (v128.const i16x8 0x0_cdef 0x0_cdef 0x0_cdef 0x0_cdef 0x0_cdef 0x0_cdef 0x0_cdef 0x0_cdef)) - (v128.const i16x8 -0x0_8000 -0x0_8000 -0x0_8000 -0x0_8000 -0x0_8000 -0x0_8000 -0x0_8000 -0x0_8000)) +;; i16x8.add_sat_s +(assert_return (invoke "i16x8.add_sat_s" (v128.const i16x8 0 0 0 0 0 0 0 0) + (v128.const i16x8 0 0 0 0 0 0 0 0)) + (v128.const i16x8 0 0 0 0 0 0 0 0)) +(assert_return (invoke "i16x8.add_sat_s" (v128.const i16x8 0 0 0 0 0 0 0 0) + (v128.const i16x8 1 1 1 1 1 1 1 1)) + (v128.const i16x8 1 1 1 1 1 1 1 1)) +(assert_return (invoke "i16x8.add_sat_s" (v128.const i16x8 1 1 1 1 1 1 1 1) + (v128.const i16x8 1 1 1 1 1 1 1 1)) + (v128.const i16x8 2 2 2 2 2 2 2 2)) +(assert_return (invoke "i16x8.add_sat_s" (v128.const i16x8 0 0 0 0 0 0 0 0) + (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1)) + (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1)) +(assert_return (invoke "i16x8.add_sat_s" (v128.const i16x8 1 1 1 1 1 1 1 1) + (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1)) + (v128.const i16x8 0 0 0 0 0 0 0 0)) +(assert_return (invoke "i16x8.add_sat_s" (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1) + (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1)) + (v128.const i16x8 -2 -2 -2 -2 -2 -2 -2 -2)) +(assert_return (invoke "i16x8.add_sat_s" (v128.const i16x8 16383 16383 16383 16383 16383 16383 16383 16383) + (v128.const i16x8 16384 16384 16384 16384 16384 16384 16384 16384)) + (v128.const i16x8 32767 32767 32767 32767 32767 32767 32767 32767)) +(assert_return (invoke "i16x8.add_sat_s" (v128.const i16x8 16384 16384 16384 16384 16384 16384 16384 16384) + (v128.const i16x8 16384 16384 16384 16384 16384 16384 16384 16384)) + (v128.const i16x8 32767 32767 32767 32767 32767 32767 32767 32767)) +(assert_return (invoke "i16x8.add_sat_s" (v128.const i16x8 -16383 -16383 -16383 -16383 -16383 -16383 -16383 -16383) + (v128.const i16x8 -16384 -16384 -16384 -16384 -16384 -16384 -16384 -16384)) + (v128.const i16x8 -32767 -32767 -32767 -32767 -32767 -32767 -32767 -32767)) +(assert_return (invoke "i16x8.add_sat_s" (v128.const i16x8 -16384 -16384 -16384 -16384 -16384 -16384 -16384 -16384) + (v128.const i16x8 -16384 -16384 -16384 -16384 -16384 -16384 -16384 -16384)) + (v128.const i16x8 -32768 -32768 -32768 -32768 -32768 -32768 -32768 -32768)) +(assert_return (invoke "i16x8.add_sat_s" (v128.const i16x8 -16385 -16385 -16385 -16385 -16385 -16385 -16385 -16385) + (v128.const i16x8 -16384 -16384 -16384 -16384 -16384 -16384 -16384 -16384)) + (v128.const i16x8 -32768 -32768 -32768 -32768 -32768 -32768 -32768 -32768)) +(assert_return (invoke "i16x8.add_sat_s" (v128.const i16x8 32765 32765 32765 32765 32765 32765 32765 32765) + (v128.const i16x8 1 1 1 1 1 1 1 1)) + (v128.const i16x8 32766 32766 32766 32766 32766 32766 32766 32766)) +(assert_return (invoke "i16x8.add_sat_s" (v128.const i16x8 32766 32766 32766 32766 32766 32766 32766 32766) + (v128.const i16x8 1 1 1 1 1 1 1 1)) + (v128.const i16x8 32767 32767 32767 32767 32767 32767 32767 32767)) +(assert_return (invoke "i16x8.add_sat_s" (v128.const i16x8 32768 32768 32768 32768 32768 32768 32768 32768) + (v128.const i16x8 1 1 1 1 1 1 1 1)) + (v128.const i16x8 -32767 -32767 -32767 -32767 -32767 -32767 -32767 -32767)) +(assert_return (invoke "i16x8.add_sat_s" (v128.const i16x8 -32766 -32766 -32766 -32766 -32766 -32766 -32766 -32766) + (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1)) + (v128.const i16x8 -32767 -32767 -32767 -32767 -32767 -32767 -32767 -32767)) +(assert_return (invoke "i16x8.add_sat_s" (v128.const i16x8 -32767 -32767 -32767 -32767 -32767 -32767 -32767 -32767) + (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1)) + (v128.const i16x8 -32768 -32768 -32768 -32768 -32768 -32768 -32768 -32768)) +(assert_return (invoke "i16x8.add_sat_s" (v128.const i16x8 -32768 -32768 -32768 -32768 -32768 -32768 -32768 -32768) + (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1)) + (v128.const i16x8 -32768 -32768 -32768 -32768 -32768 -32768 -32768 -32768)) +(assert_return (invoke "i16x8.add_sat_s" (v128.const i16x8 32767 32767 32767 32767 32767 32767 32767 32767) + (v128.const i16x8 32767 32767 32767 32767 32767 32767 32767 32767)) + (v128.const i16x8 32767 32767 32767 32767 32767 32767 32767 32767)) +(assert_return (invoke "i16x8.add_sat_s" (v128.const i16x8 -32768 -32768 -32768 -32768 -32768 -32768 -32768 -32768) + (v128.const i16x8 -32768 -32768 -32768 -32768 -32768 -32768 -32768 -32768)) + (v128.const i16x8 -32768 -32768 -32768 -32768 -32768 -32768 -32768 -32768)) +(assert_return (invoke "i16x8.add_sat_s" (v128.const i16x8 -32768 -32768 -32768 -32768 -32768 -32768 -32768 -32768) + (v128.const i16x8 -32767 -32767 -32767 -32767 -32767 -32767 -32767 -32767)) + (v128.const i16x8 -32768 -32768 -32768 -32768 -32768 -32768 -32768 -32768)) +(assert_return (invoke "i16x8.add_sat_s" (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535) + (v128.const i16x8 0 0 0 0 0 0 0 0)) + (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1)) +(assert_return (invoke "i16x8.add_sat_s" (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535) + (v128.const i16x8 1 1 1 1 1 1 1 1)) + (v128.const i16x8 0 0 0 0 0 0 0 0)) +(assert_return (invoke "i16x8.add_sat_s" (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535) + (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1)) + (v128.const i16x8 -2 -2 -2 -2 -2 -2 -2 -2)) +(assert_return (invoke "i16x8.add_sat_s" (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535) + (v128.const i16x8 32767 32767 32767 32767 32767 32767 32767 32767)) + (v128.const i16x8 32766 32766 32766 32766 32766 32766 32766 32766)) +(assert_return (invoke "i16x8.add_sat_s" (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535) + (v128.const i16x8 -32768 -32768 -32768 -32768 -32768 -32768 -32768 -32768)) + (v128.const i16x8 -32768 -32768 -32768 -32768 -32768 -32768 -32768 -32768)) +(assert_return (invoke "i16x8.add_sat_s" (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535) + (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535)) + (v128.const i16x8 -2 -2 -2 -2 -2 -2 -2 -2)) +(assert_return (invoke "i16x8.add_sat_s" (v128.const i16x8 0x3fff 0x3fff 0x3fff 0x3fff 0x3fff 0x3fff 0x3fff 0x3fff) + (v128.const i16x8 0x4000 0x4000 0x4000 0x4000 0x4000 0x4000 0x4000 0x4000)) + (v128.const i16x8 32767 32767 32767 32767 32767 32767 32767 32767)) +(assert_return (invoke "i16x8.add_sat_s" (v128.const i16x8 0x4000 0x4000 0x4000 0x4000 0x4000 0x4000 0x4000 0x4000) + (v128.const i16x8 0x4000 0x4000 0x4000 0x4000 0x4000 0x4000 0x4000 0x4000)) + (v128.const i16x8 32767 32767 32767 32767 32767 32767 32767 32767)) +(assert_return (invoke "i16x8.add_sat_s" (v128.const i16x8 -0x3fff -0x3fff -0x3fff -0x3fff -0x3fff -0x3fff -0x3fff -0x3fff) + (v128.const i16x8 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000)) + (v128.const i16x8 -32767 -32767 -32767 -32767 -32767 -32767 -32767 -32767)) +(assert_return (invoke "i16x8.add_sat_s" (v128.const i16x8 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000) + (v128.const i16x8 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000)) + (v128.const i16x8 -32768 -32768 -32768 -32768 -32768 -32768 -32768 -32768)) +(assert_return (invoke "i16x8.add_sat_s" (v128.const i16x8 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000) + (v128.const i16x8 -0x4001 -0x4001 -0x4001 -0x4001 -0x4001 -0x4001 -0x4001 -0x4001)) + (v128.const i16x8 -32768 -32768 -32768 -32768 -32768 -32768 -32768 -32768)) +(assert_return (invoke "i16x8.add_sat_s" (v128.const i16x8 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff) + (v128.const i16x8 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff)) + (v128.const i16x8 32767 32767 32767 32767 32767 32767 32767 32767)) +(assert_return (invoke "i16x8.add_sat_s" (v128.const i16x8 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff) + (v128.const i16x8 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01)) + (v128.const i16x8 32767 32767 32767 32767 32767 32767 32767 32767)) +(assert_return (invoke "i16x8.add_sat_s" (v128.const i16x8 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000) + (v128.const i16x8 -0x01 -0x01 -0x01 -0x01 -0x01 -0x01 -0x01 -0x01)) + (v128.const i16x8 -32768 -32768 -32768 -32768 -32768 -32768 -32768 -32768)) +(assert_return (invoke "i16x8.add_sat_s" (v128.const i16x8 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff) + (v128.const i16x8 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000)) + (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1)) +(assert_return (invoke "i16x8.add_sat_s" (v128.const i16x8 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000) + (v128.const i16x8 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000)) + (v128.const i16x8 -32768 -32768 -32768 -32768 -32768 -32768 -32768 -32768)) +(assert_return (invoke "i16x8.add_sat_s" (v128.const i16x8 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff) + (v128.const i16x8 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01)) + (v128.const i16x8 0 0 0 0 0 0 0 0)) +(assert_return (invoke "i16x8.add_sat_s" (v128.const i16x8 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff) + (v128.const i16x8 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff)) + (v128.const i16x8 -2 -2 -2 -2 -2 -2 -2 -2)) +(assert_return (invoke "i16x8.add_sat_s" (v128.const i16x8 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000) + (v128.const f32x4 -0.0 -0.0 -0.0 -0.0)) + (v128.const i16x8 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000)) +(assert_return (invoke "i16x8.add_sat_s" (v128.const i16x8 1 1 1 1 1 1 1 1) + (v128.const f32x4 +inf +inf +inf +inf)) + (v128.const i16x8 0x01 0x7f81 0x01 0x7f81 0x01 0x7f81 0x01 0x7f81)) +(assert_return (invoke "i16x8.add_sat_s" (v128.const i16x8 1 1 1 1 1 1 1 1) + (v128.const f32x4 -inf -inf -inf -inf)) + (v128.const i16x8 0x01 0xff81 0x01 0xff81 0x01 0xff81 0x01 0xff81)) +(assert_return (invoke "i16x8.add_sat_s" (v128.const i16x8 1 1 1 1 1 1 1 1) + (v128.const f32x4 nan nan nan nan)) + (v128.const i16x8 0x01 0x7fc1 0x01 0x7fc1 0x01 0x7fc1 0x01 0x7fc1)) +(assert_return (invoke "i16x8.add_sat_s" (v128.const i16x8 1 1 1 1 1 1 1 1) + (v128.const f32x4 -nan -nan -nan -nan)) + (v128.const i16x8 0x01 0xffc1 0x01 0xffc1 0x01 0xffc1 0x01 0xffc1)) +(assert_return (invoke "i16x8.add_sat_s" (v128.const i16x8 0 1 2 3 4 5 6 7) + (v128.const i16x8 0 0xffff 0xfffe 0xfffd 0xfffc 0xfffb 0xfffa 0xfff9)) + (v128.const i16x8 0 0 0 0 0 0 0 0)) +(assert_return (invoke "i16x8.add_sat_s" (v128.const i16x8 0 1 2 3 4 5 6 7) + (v128.const i16x8 0 2 4 6 8 10 12 14)) + (v128.const i16x8 0 3 6 9 12 15 18 21)) +(assert_return (invoke "i16x8.add_sat_s" (v128.const i16x8 012_345 012_345 012_345 012_345 012_345 012_345 012_345 012_345) + (v128.const i16x8 032_123 032_123 032_123 032_123 032_123 032_123 032_123 032_123)) + (v128.const i16x8 032_767 032_767 032_767 032_767 032_767 032_767 032_767 032_767)) +(assert_return (invoke "i16x8.add_sat_s" (v128.const i16x8 012_345 012_345 012_345 012_345 012_345 012_345 012_345 012_345) + (v128.const i16x8 056_789 056_789 056_789 056_789 056_789 056_789 056_789 056_789)) + (v128.const i16x8 03_598 03_598 03_598 03_598 03_598 03_598 03_598 03_598)) +(assert_return (invoke "i16x8.add_sat_s" (v128.const i16x8 0x0_1234 0x0_1234 0x0_1234 0x0_1234 0x0_1234 0x0_1234 0x0_1234 0x0_1234) + (v128.const i16x8 0x0_5678 0x0_5678 0x0_5678 0x0_5678 0x0_5678 0x0_5678 0x0_5678 0x0_5678)) + (v128.const i16x8 0x0_68ac 0x0_68ac 0x0_68ac 0x0_68ac 0x0_68ac 0x0_68ac 0x0_68ac 0x0_68ac)) +(assert_return (invoke "i16x8.add_sat_s" (v128.const i16x8 0x0_90AB 0x0_90AB 0x0_90AB 0x0_90AB 0x0_90AB 0x0_90AB 0x0_90AB 0x0_90AB) + (v128.const i16x8 0x0_cdef 0x0_cdef 0x0_cdef 0x0_cdef 0x0_cdef 0x0_cdef 0x0_cdef 0x0_cdef)) + (v128.const i16x8 -0x0_8000 -0x0_8000 -0x0_8000 -0x0_8000 -0x0_8000 -0x0_8000 -0x0_8000 -0x0_8000)) -;; i16x8.add_saturate_u -(assert_return (invoke "i16x8.add_saturate_u" (v128.const i16x8 0 0 0 0 0 0 0 0) - (v128.const i16x8 0 0 0 0 0 0 0 0)) - (v128.const i16x8 0 0 0 0 0 0 0 0)) -(assert_return (invoke "i16x8.add_saturate_u" (v128.const i16x8 0 0 0 0 0 0 0 0) - (v128.const i16x8 1 1 1 1 1 1 1 1)) - (v128.const i16x8 1 1 1 1 1 1 1 1)) -(assert_return (invoke "i16x8.add_saturate_u" (v128.const i16x8 1 1 1 1 1 1 1 1) - (v128.const i16x8 1 1 1 1 1 1 1 1)) - (v128.const i16x8 2 2 2 2 2 2 2 2)) -(assert_return (invoke "i16x8.add_saturate_u" (v128.const i16x8 0 0 0 0 0 0 0 0) - (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1)) - (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535)) -(assert_return (invoke "i16x8.add_saturate_u" (v128.const i16x8 1 1 1 1 1 1 1 1) - (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1)) - (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535)) -(assert_return (invoke "i16x8.add_saturate_u" (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1) - (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1)) - (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535)) -(assert_return (invoke "i16x8.add_saturate_u" (v128.const i16x8 16383 16383 16383 16383 16383 16383 16383 16383) - (v128.const i16x8 16384 16384 16384 16384 16384 16384 16384 16384)) - (v128.const i16x8 32767 32767 32767 32767 32767 32767 32767 32767)) -(assert_return (invoke "i16x8.add_saturate_u" (v128.const i16x8 16384 16384 16384 16384 16384 16384 16384 16384) - (v128.const i16x8 16384 16384 16384 16384 16384 16384 16384 16384)) - (v128.const i16x8 32768 32768 32768 32768 32768 32768 32768 32768)) -(assert_return (invoke "i16x8.add_saturate_u" (v128.const i16x8 -16383 -16383 -16383 -16383 -16383 -16383 -16383 -16383) - (v128.const i16x8 -16384 -16384 -16384 -16384 -16384 -16384 -16384 -16384)) - (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535)) -(assert_return (invoke "i16x8.add_saturate_u" (v128.const i16x8 -16384 -16384 -16384 -16384 -16384 -16384 -16384 -16384) - (v128.const i16x8 -16384 -16384 -16384 -16384 -16384 -16384 -16384 -16384)) - (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535)) -(assert_return (invoke "i16x8.add_saturate_u" (v128.const i16x8 -16385 -16385 -16385 -16385 -16385 -16385 -16385 -16385) - (v128.const i16x8 -16384 -16384 -16384 -16384 -16384 -16384 -16384 -16384)) - (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535)) -(assert_return (invoke "i16x8.add_saturate_u" (v128.const i16x8 32765 32765 32765 32765 32765 32765 32765 32765) - (v128.const i16x8 1 1 1 1 1 1 1 1)) - (v128.const i16x8 32766 32766 32766 32766 32766 32766 32766 32766)) -(assert_return (invoke "i16x8.add_saturate_u" (v128.const i16x8 32766 32766 32766 32766 32766 32766 32766 32766) - (v128.const i16x8 1 1 1 1 1 1 1 1)) - (v128.const i16x8 32767 32767 32767 32767 32767 32767 32767 32767)) -(assert_return (invoke "i16x8.add_saturate_u" (v128.const i16x8 32768 32768 32768 32768 32768 32768 32768 32768) - (v128.const i16x8 1 1 1 1 1 1 1 1)) - (v128.const i16x8 32769 32769 32769 32769 32769 32769 32769 32769)) -(assert_return (invoke "i16x8.add_saturate_u" (v128.const i16x8 -32766 -32766 -32766 -32766 -32766 -32766 -32766 -32766) - (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1)) - (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535)) -(assert_return (invoke "i16x8.add_saturate_u" (v128.const i16x8 -32767 -32767 -32767 -32767 -32767 -32767 -32767 -32767) - (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1)) - (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535)) -(assert_return (invoke "i16x8.add_saturate_u" (v128.const i16x8 -32768 -32768 -32768 -32768 -32768 -32768 -32768 -32768) - (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1)) - (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535)) -(assert_return (invoke "i16x8.add_saturate_u" (v128.const i16x8 32767 32767 32767 32767 32767 32767 32767 32767) - (v128.const i16x8 32767 32767 32767 32767 32767 32767 32767 32767)) - (v128.const i16x8 65534 65534 65534 65534 65534 65534 65534 65534)) -(assert_return (invoke "i16x8.add_saturate_u" (v128.const i16x8 -32768 -32768 -32768 -32768 -32768 -32768 -32768 -32768) - (v128.const i16x8 -32768 -32768 -32768 -32768 -32768 -32768 -32768 -32768)) - (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535)) -(assert_return (invoke "i16x8.add_saturate_u" (v128.const i16x8 -32768 -32768 -32768 -32768 -32768 -32768 -32768 -32768) - (v128.const i16x8 -32767 -32767 -32767 -32767 -32767 -32767 -32767 -32767)) - (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535)) -(assert_return (invoke "i16x8.add_saturate_u" (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535) - (v128.const i16x8 0 0 0 0 0 0 0 0)) - (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535)) -(assert_return (invoke "i16x8.add_saturate_u" (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535) - (v128.const i16x8 1 1 1 1 1 1 1 1)) - (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535)) -(assert_return (invoke "i16x8.add_saturate_u" (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535) - (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1)) - (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535)) -(assert_return (invoke "i16x8.add_saturate_u" (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535) - (v128.const i16x8 32767 32767 32767 32767 32767 32767 32767 32767)) - (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535)) -(assert_return (invoke "i16x8.add_saturate_u" (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535) - (v128.const i16x8 -32768 -32768 -32768 -32768 -32768 -32768 -32768 -32768)) - (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535)) -(assert_return (invoke "i16x8.add_saturate_u" (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535) - (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535)) - (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535)) -(assert_return (invoke "i16x8.add_saturate_u" (v128.const i16x8 0x3fff 0x3fff 0x3fff 0x3fff 0x3fff 0x3fff 0x3fff 0x3fff) - (v128.const i16x8 0x4000 0x4000 0x4000 0x4000 0x4000 0x4000 0x4000 0x4000)) - (v128.const i16x8 32767 32767 32767 32767 32767 32767 32767 32767)) -(assert_return (invoke "i16x8.add_saturate_u" (v128.const i16x8 0x4000 0x4000 0x4000 0x4000 0x4000 0x4000 0x4000 0x4000) - (v128.const i16x8 0x4000 0x4000 0x4000 0x4000 0x4000 0x4000 0x4000 0x4000)) - (v128.const i16x8 32768 32768 32768 32768 32768 32768 32768 32768)) -(assert_return (invoke "i16x8.add_saturate_u" (v128.const i16x8 -0x3fff -0x3fff -0x3fff -0x3fff -0x3fff -0x3fff -0x3fff -0x3fff) - (v128.const i16x8 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000)) - (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535)) -(assert_return (invoke "i16x8.add_saturate_u" (v128.const i16x8 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000) - (v128.const i16x8 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000)) - (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535)) -(assert_return (invoke "i16x8.add_saturate_u" (v128.const i16x8 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000) - (v128.const i16x8 -0x4001 -0x4001 -0x4001 -0x4001 -0x4001 -0x4001 -0x4001 -0x4001)) - (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535)) -(assert_return (invoke "i16x8.add_saturate_u" (v128.const i16x8 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff) - (v128.const i16x8 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff)) - (v128.const i16x8 65534 65534 65534 65534 65534 65534 65534 65534)) -(assert_return (invoke "i16x8.add_saturate_u" (v128.const i16x8 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff) - (v128.const i16x8 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01)) - (v128.const i16x8 32768 32768 32768 32768 32768 32768 32768 32768)) -(assert_return (invoke "i16x8.add_saturate_u" (v128.const i16x8 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000) - (v128.const i16x8 -0x01 -0x01 -0x01 -0x01 -0x01 -0x01 -0x01 -0x01)) - (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535)) -(assert_return (invoke "i16x8.add_saturate_u" (v128.const i16x8 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff) - (v128.const i16x8 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000)) - (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535)) -(assert_return (invoke "i16x8.add_saturate_u" (v128.const i16x8 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000) - (v128.const i16x8 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000)) - (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535)) -(assert_return (invoke "i16x8.add_saturate_u" (v128.const i16x8 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff) - (v128.const i16x8 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01)) - (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535)) -(assert_return (invoke "i16x8.add_saturate_u" (v128.const i16x8 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff) - (v128.const i16x8 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff)) - (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535)) -(assert_return (invoke "i16x8.add_saturate_u" (v128.const i16x8 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000) - (v128.const f32x4 -0.0 -0.0 -0.0 -0.0)) - (v128.const i16x8 0x8000 0xffff 0x8000 0xffff 0x8000 0xffff 0x8000 0xffff)) -(assert_return (invoke "i16x8.add_saturate_u" (v128.const i16x8 1 1 1 1 1 1 1 1) - (v128.const f32x4 +inf +inf +inf +inf)) - (v128.const i16x8 0x01 0x7f81 0x01 0x7f81 0x01 0x7f81 0x01 0x7f81)) -(assert_return (invoke "i16x8.add_saturate_u" (v128.const i16x8 1 1 1 1 1 1 1 1) - (v128.const f32x4 -inf -inf -inf -inf)) - (v128.const i16x8 0x01 0xff81 0x01 0xff81 0x01 0xff81 0x01 0xff81)) -(assert_return (invoke "i16x8.add_saturate_u" (v128.const i16x8 1 1 1 1 1 1 1 1) - (v128.const f32x4 nan nan nan nan)) - (v128.const i16x8 0x01 0x7fc1 0x01 0x7fc1 0x01 0x7fc1 0x01 0x7fc1)) -(assert_return (invoke "i16x8.add_saturate_u" (v128.const i16x8 1 1 1 1 1 1 1 1) - (v128.const f32x4 nan nan nan nan)) - (v128.const i16x8 0x01 0x7fc1 0x01 0x7fc1 0x01 0x7fc1 0x01 0x7fc1)) -(assert_return (invoke "i16x8.add_saturate_u" (v128.const i16x8 0 1 2 3 4 5 6 7) - (v128.const i16x8 0 0xffff 0xfffe 0xfffd 0xfffc 0xfffb 0xfffa 0xfff9)) - (v128.const i16x8 0 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff)) -(assert_return (invoke "i16x8.add_saturate_u" (v128.const i16x8 0 1 2 3 4 5 6 7) - (v128.const i16x8 0 2 4 6 8 10 12 14)) - (v128.const i16x8 0 3 6 9 12 15 18 21)) -(assert_return (invoke "i16x8.add_saturate_u" (v128.const i16x8 012_345 012_345 012_345 012_345 012_345 012_345 012_345 012_345) - (v128.const i16x8 056_789 056_789 056_789 056_789 056_789 056_789 056_789 056_789)) - (v128.const i16x8 065_535 065_535 065_535 065_535 065_535 065_535 065_535 065_535)) -(assert_return (invoke "i16x8.add_saturate_u" (v128.const i16x8 012_345 012_345 012_345 012_345 012_345 012_345 012_345 012_345) - (v128.const i16x8 -012_345 -012_345 -012_345 -012_345 -012_345 -012_345 -012_345 -012_345)) - (v128.const i16x8 065_535 065_535 065_535 065_535 065_535 065_535 065_535 065_535)) -(assert_return (invoke "i16x8.add_saturate_u" (v128.const i16x8 0x0_1234 0x0_1234 0x0_1234 0x0_1234 0x0_1234 0x0_1234 0x0_1234 0x0_1234) - (v128.const i16x8 0x0_5678 0x0_5678 0x0_5678 0x0_5678 0x0_5678 0x0_5678 0x0_5678 0x0_5678)) - (v128.const i16x8 0x0_68ac 0x0_68ac 0x0_68ac 0x0_68ac 0x0_68ac 0x0_68ac 0x0_68ac 0x0_68ac)) -(assert_return (invoke "i16x8.add_saturate_u" (v128.const i16x8 0x0_90AB 0x0_90AB 0x0_90AB 0x0_90AB 0x0_90AB 0x0_90AB 0x0_90AB 0x0_90AB) - (v128.const i16x8 0x0_cdef 0x0_cdef 0x0_cdef 0x0_cdef 0x0_cdef 0x0_cdef 0x0_cdef 0x0_cdef)) - (v128.const i16x8 0x0_ffff 0x0_ffff 0x0_ffff 0x0_ffff 0x0_ffff 0x0_ffff 0x0_ffff 0x0_ffff)) +;; i16x8.add_sat_u +(assert_return (invoke "i16x8.add_sat_u" (v128.const i16x8 0 0 0 0 0 0 0 0) + (v128.const i16x8 0 0 0 0 0 0 0 0)) + (v128.const i16x8 0 0 0 0 0 0 0 0)) +(assert_return (invoke "i16x8.add_sat_u" (v128.const i16x8 0 0 0 0 0 0 0 0) + (v128.const i16x8 1 1 1 1 1 1 1 1)) + (v128.const i16x8 1 1 1 1 1 1 1 1)) +(assert_return (invoke "i16x8.add_sat_u" (v128.const i16x8 1 1 1 1 1 1 1 1) + (v128.const i16x8 1 1 1 1 1 1 1 1)) + (v128.const i16x8 2 2 2 2 2 2 2 2)) +(assert_return (invoke "i16x8.add_sat_u" (v128.const i16x8 0 0 0 0 0 0 0 0) + (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1)) + (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535)) +(assert_return (invoke "i16x8.add_sat_u" (v128.const i16x8 1 1 1 1 1 1 1 1) + (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1)) + (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535)) +(assert_return (invoke "i16x8.add_sat_u" (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1) + (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1)) + (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535)) +(assert_return (invoke "i16x8.add_sat_u" (v128.const i16x8 16383 16383 16383 16383 16383 16383 16383 16383) + (v128.const i16x8 16384 16384 16384 16384 16384 16384 16384 16384)) + (v128.const i16x8 32767 32767 32767 32767 32767 32767 32767 32767)) +(assert_return (invoke "i16x8.add_sat_u" (v128.const i16x8 16384 16384 16384 16384 16384 16384 16384 16384) + (v128.const i16x8 16384 16384 16384 16384 16384 16384 16384 16384)) + (v128.const i16x8 32768 32768 32768 32768 32768 32768 32768 32768)) +(assert_return (invoke "i16x8.add_sat_u" (v128.const i16x8 -16383 -16383 -16383 -16383 -16383 -16383 -16383 -16383) + (v128.const i16x8 -16384 -16384 -16384 -16384 -16384 -16384 -16384 -16384)) + (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535)) +(assert_return (invoke "i16x8.add_sat_u" (v128.const i16x8 -16384 -16384 -16384 -16384 -16384 -16384 -16384 -16384) + (v128.const i16x8 -16384 -16384 -16384 -16384 -16384 -16384 -16384 -16384)) + (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535)) +(assert_return (invoke "i16x8.add_sat_u" (v128.const i16x8 -16385 -16385 -16385 -16385 -16385 -16385 -16385 -16385) + (v128.const i16x8 -16384 -16384 -16384 -16384 -16384 -16384 -16384 -16384)) + (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535)) +(assert_return (invoke "i16x8.add_sat_u" (v128.const i16x8 32765 32765 32765 32765 32765 32765 32765 32765) + (v128.const i16x8 1 1 1 1 1 1 1 1)) + (v128.const i16x8 32766 32766 32766 32766 32766 32766 32766 32766)) +(assert_return (invoke "i16x8.add_sat_u" (v128.const i16x8 32766 32766 32766 32766 32766 32766 32766 32766) + (v128.const i16x8 1 1 1 1 1 1 1 1)) + (v128.const i16x8 32767 32767 32767 32767 32767 32767 32767 32767)) +(assert_return (invoke "i16x8.add_sat_u" (v128.const i16x8 32768 32768 32768 32768 32768 32768 32768 32768) + (v128.const i16x8 1 1 1 1 1 1 1 1)) + (v128.const i16x8 32769 32769 32769 32769 32769 32769 32769 32769)) +(assert_return (invoke "i16x8.add_sat_u" (v128.const i16x8 -32766 -32766 -32766 -32766 -32766 -32766 -32766 -32766) + (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1)) + (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535)) +(assert_return (invoke "i16x8.add_sat_u" (v128.const i16x8 -32767 -32767 -32767 -32767 -32767 -32767 -32767 -32767) + (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1)) + (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535)) +(assert_return (invoke "i16x8.add_sat_u" (v128.const i16x8 -32768 -32768 -32768 -32768 -32768 -32768 -32768 -32768) + (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1)) + (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535)) +(assert_return (invoke "i16x8.add_sat_u" (v128.const i16x8 32767 32767 32767 32767 32767 32767 32767 32767) + (v128.const i16x8 32767 32767 32767 32767 32767 32767 32767 32767)) + (v128.const i16x8 65534 65534 65534 65534 65534 65534 65534 65534)) +(assert_return (invoke "i16x8.add_sat_u" (v128.const i16x8 -32768 -32768 -32768 -32768 -32768 -32768 -32768 -32768) + (v128.const i16x8 -32768 -32768 -32768 -32768 -32768 -32768 -32768 -32768)) + (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535)) +(assert_return (invoke "i16x8.add_sat_u" (v128.const i16x8 -32768 -32768 -32768 -32768 -32768 -32768 -32768 -32768) + (v128.const i16x8 -32767 -32767 -32767 -32767 -32767 -32767 -32767 -32767)) + (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535)) +(assert_return (invoke "i16x8.add_sat_u" (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535) + (v128.const i16x8 0 0 0 0 0 0 0 0)) + (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535)) +(assert_return (invoke "i16x8.add_sat_u" (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535) + (v128.const i16x8 1 1 1 1 1 1 1 1)) + (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535)) +(assert_return (invoke "i16x8.add_sat_u" (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535) + (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1)) + (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535)) +(assert_return (invoke "i16x8.add_sat_u" (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535) + (v128.const i16x8 32767 32767 32767 32767 32767 32767 32767 32767)) + (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535)) +(assert_return (invoke "i16x8.add_sat_u" (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535) + (v128.const i16x8 -32768 -32768 -32768 -32768 -32768 -32768 -32768 -32768)) + (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535)) +(assert_return (invoke "i16x8.add_sat_u" (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535) + (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535)) + (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535)) +(assert_return (invoke "i16x8.add_sat_u" (v128.const i16x8 0x3fff 0x3fff 0x3fff 0x3fff 0x3fff 0x3fff 0x3fff 0x3fff) + (v128.const i16x8 0x4000 0x4000 0x4000 0x4000 0x4000 0x4000 0x4000 0x4000)) + (v128.const i16x8 32767 32767 32767 32767 32767 32767 32767 32767)) +(assert_return (invoke "i16x8.add_sat_u" (v128.const i16x8 0x4000 0x4000 0x4000 0x4000 0x4000 0x4000 0x4000 0x4000) + (v128.const i16x8 0x4000 0x4000 0x4000 0x4000 0x4000 0x4000 0x4000 0x4000)) + (v128.const i16x8 32768 32768 32768 32768 32768 32768 32768 32768)) +(assert_return (invoke "i16x8.add_sat_u" (v128.const i16x8 -0x3fff -0x3fff -0x3fff -0x3fff -0x3fff -0x3fff -0x3fff -0x3fff) + (v128.const i16x8 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000)) + (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535)) +(assert_return (invoke "i16x8.add_sat_u" (v128.const i16x8 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000) + (v128.const i16x8 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000)) + (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535)) +(assert_return (invoke "i16x8.add_sat_u" (v128.const i16x8 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000) + (v128.const i16x8 -0x4001 -0x4001 -0x4001 -0x4001 -0x4001 -0x4001 -0x4001 -0x4001)) + (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535)) +(assert_return (invoke "i16x8.add_sat_u" (v128.const i16x8 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff) + (v128.const i16x8 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff)) + (v128.const i16x8 65534 65534 65534 65534 65534 65534 65534 65534)) +(assert_return (invoke "i16x8.add_sat_u" (v128.const i16x8 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff) + (v128.const i16x8 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01)) + (v128.const i16x8 32768 32768 32768 32768 32768 32768 32768 32768)) +(assert_return (invoke "i16x8.add_sat_u" (v128.const i16x8 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000) + (v128.const i16x8 -0x01 -0x01 -0x01 -0x01 -0x01 -0x01 -0x01 -0x01)) + (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535)) +(assert_return (invoke "i16x8.add_sat_u" (v128.const i16x8 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff) + (v128.const i16x8 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000)) + (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535)) +(assert_return (invoke "i16x8.add_sat_u" (v128.const i16x8 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000) + (v128.const i16x8 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000)) + (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535)) +(assert_return (invoke "i16x8.add_sat_u" (v128.const i16x8 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff) + (v128.const i16x8 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01)) + (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535)) +(assert_return (invoke "i16x8.add_sat_u" (v128.const i16x8 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff) + (v128.const i16x8 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff)) + (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535)) +(assert_return (invoke "i16x8.add_sat_u" (v128.const i16x8 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000) + (v128.const f32x4 -0.0 -0.0 -0.0 -0.0)) + (v128.const i16x8 0x8000 0xffff 0x8000 0xffff 0x8000 0xffff 0x8000 0xffff)) +(assert_return (invoke "i16x8.add_sat_u" (v128.const i16x8 1 1 1 1 1 1 1 1) + (v128.const f32x4 +inf +inf +inf +inf)) + (v128.const i16x8 0x01 0x7f81 0x01 0x7f81 0x01 0x7f81 0x01 0x7f81)) +(assert_return (invoke "i16x8.add_sat_u" (v128.const i16x8 1 1 1 1 1 1 1 1) + (v128.const f32x4 -inf -inf -inf -inf)) + (v128.const i16x8 0x01 0xff81 0x01 0xff81 0x01 0xff81 0x01 0xff81)) +(assert_return (invoke "i16x8.add_sat_u" (v128.const i16x8 1 1 1 1 1 1 1 1) + (v128.const f32x4 nan nan nan nan)) + (v128.const i16x8 0x01 0x7fc1 0x01 0x7fc1 0x01 0x7fc1 0x01 0x7fc1)) +(assert_return (invoke "i16x8.add_sat_u" (v128.const i16x8 1 1 1 1 1 1 1 1) + (v128.const f32x4 nan nan nan nan)) + (v128.const i16x8 0x01 0x7fc1 0x01 0x7fc1 0x01 0x7fc1 0x01 0x7fc1)) +(assert_return (invoke "i16x8.add_sat_u" (v128.const i16x8 0 1 2 3 4 5 6 7) + (v128.const i16x8 0 0xffff 0xfffe 0xfffd 0xfffc 0xfffb 0xfffa 0xfff9)) + (v128.const i16x8 0 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff)) +(assert_return (invoke "i16x8.add_sat_u" (v128.const i16x8 0 1 2 3 4 5 6 7) + (v128.const i16x8 0 2 4 6 8 10 12 14)) + (v128.const i16x8 0 3 6 9 12 15 18 21)) +(assert_return (invoke "i16x8.add_sat_u" (v128.const i16x8 012_345 012_345 012_345 012_345 012_345 012_345 012_345 012_345) + (v128.const i16x8 056_789 056_789 056_789 056_789 056_789 056_789 056_789 056_789)) + (v128.const i16x8 065_535 065_535 065_535 065_535 065_535 065_535 065_535 065_535)) +(assert_return (invoke "i16x8.add_sat_u" (v128.const i16x8 012_345 012_345 012_345 012_345 012_345 012_345 012_345 012_345) + (v128.const i16x8 -012_345 -012_345 -012_345 -012_345 -012_345 -012_345 -012_345 -012_345)) + (v128.const i16x8 065_535 065_535 065_535 065_535 065_535 065_535 065_535 065_535)) +(assert_return (invoke "i16x8.add_sat_u" (v128.const i16x8 0x0_1234 0x0_1234 0x0_1234 0x0_1234 0x0_1234 0x0_1234 0x0_1234 0x0_1234) + (v128.const i16x8 0x0_5678 0x0_5678 0x0_5678 0x0_5678 0x0_5678 0x0_5678 0x0_5678 0x0_5678)) + (v128.const i16x8 0x0_68ac 0x0_68ac 0x0_68ac 0x0_68ac 0x0_68ac 0x0_68ac 0x0_68ac 0x0_68ac)) +(assert_return (invoke "i16x8.add_sat_u" (v128.const i16x8 0x0_90AB 0x0_90AB 0x0_90AB 0x0_90AB 0x0_90AB 0x0_90AB 0x0_90AB 0x0_90AB) + (v128.const i16x8 0x0_cdef 0x0_cdef 0x0_cdef 0x0_cdef 0x0_cdef 0x0_cdef 0x0_cdef 0x0_cdef)) + (v128.const i16x8 0x0_ffff 0x0_ffff 0x0_ffff 0x0_ffff 0x0_ffff 0x0_ffff 0x0_ffff 0x0_ffff)) -;; i16x8.sub_saturate_s -(assert_return (invoke "i16x8.sub_saturate_s" (v128.const i16x8 0 0 0 0 0 0 0 0) - (v128.const i16x8 0 0 0 0 0 0 0 0)) - (v128.const i16x8 0 0 0 0 0 0 0 0)) -(assert_return (invoke "i16x8.sub_saturate_s" (v128.const i16x8 0 0 0 0 0 0 0 0) - (v128.const i16x8 1 1 1 1 1 1 1 1)) - (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1)) -(assert_return (invoke "i16x8.sub_saturate_s" (v128.const i16x8 1 1 1 1 1 1 1 1) - (v128.const i16x8 1 1 1 1 1 1 1 1)) - (v128.const i16x8 0 0 0 0 0 0 0 0)) -(assert_return (invoke "i16x8.sub_saturate_s" (v128.const i16x8 0 0 0 0 0 0 0 0) - (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1)) - (v128.const i16x8 1 1 1 1 1 1 1 1)) -(assert_return (invoke "i16x8.sub_saturate_s" (v128.const i16x8 1 1 1 1 1 1 1 1) - (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1)) - (v128.const i16x8 2 2 2 2 2 2 2 2)) -(assert_return (invoke "i16x8.sub_saturate_s" (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1) - (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1)) - (v128.const i16x8 0 0 0 0 0 0 0 0)) -(assert_return (invoke "i16x8.sub_saturate_s" (v128.const i16x8 16383 16383 16383 16383 16383 16383 16383 16383) - (v128.const i16x8 16384 16384 16384 16384 16384 16384 16384 16384)) - (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1)) -(assert_return (invoke "i16x8.sub_saturate_s" (v128.const i16x8 16384 16384 16384 16384 16384 16384 16384 16384) - (v128.const i16x8 16384 16384 16384 16384 16384 16384 16384 16384)) - (v128.const i16x8 0 0 0 0 0 0 0 0)) -(assert_return (invoke "i16x8.sub_saturate_s" (v128.const i16x8 -16383 -16383 -16383 -16383 -16383 -16383 -16383 -16383) - (v128.const i16x8 -16384 -16384 -16384 -16384 -16384 -16384 -16384 -16384)) - (v128.const i16x8 1 1 1 1 1 1 1 1)) -(assert_return (invoke "i16x8.sub_saturate_s" (v128.const i16x8 -16384 -16384 -16384 -16384 -16384 -16384 -16384 -16384) - (v128.const i16x8 -16384 -16384 -16384 -16384 -16384 -16384 -16384 -16384)) - (v128.const i16x8 0 0 0 0 0 0 0 0)) -(assert_return (invoke "i16x8.sub_saturate_s" (v128.const i16x8 -16385 -16385 -16385 -16385 -16385 -16385 -16385 -16385) - (v128.const i16x8 -16384 -16384 -16384 -16384 -16384 -16384 -16384 -16384)) - (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1)) -(assert_return (invoke "i16x8.sub_saturate_s" (v128.const i16x8 32765 32765 32765 32765 32765 32765 32765 32765) - (v128.const i16x8 1 1 1 1 1 1 1 1)) - (v128.const i16x8 32764 32764 32764 32764 32764 32764 32764 32764)) -(assert_return (invoke "i16x8.sub_saturate_s" (v128.const i16x8 32766 32766 32766 32766 32766 32766 32766 32766) - (v128.const i16x8 1 1 1 1 1 1 1 1)) - (v128.const i16x8 32765 32765 32765 32765 32765 32765 32765 32765)) -(assert_return (invoke "i16x8.sub_saturate_s" (v128.const i16x8 32768 32768 32768 32768 32768 32768 32768 32768) - (v128.const i16x8 1 1 1 1 1 1 1 1)) - (v128.const i16x8 -32768 -32768 -32768 -32768 -32768 -32768 -32768 -32768)) -(assert_return (invoke "i16x8.sub_saturate_s" (v128.const i16x8 -32766 -32766 -32766 -32766 -32766 -32766 -32766 -32766) - (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1)) - (v128.const i16x8 -32765 -32765 -32765 -32765 -32765 -32765 -32765 -32765)) -(assert_return (invoke "i16x8.sub_saturate_s" (v128.const i16x8 -32767 -32767 -32767 -32767 -32767 -32767 -32767 -32767) - (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1)) - (v128.const i16x8 -32766 -32766 -32766 -32766 -32766 -32766 -32766 -32766)) -(assert_return (invoke "i16x8.sub_saturate_s" (v128.const i16x8 -32768 -32768 -32768 -32768 -32768 -32768 -32768 -32768) - (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1)) - (v128.const i16x8 -32767 -32767 -32767 -32767 -32767 -32767 -32767 -32767)) -(assert_return (invoke "i16x8.sub_saturate_s" (v128.const i16x8 32767 32767 32767 32767 32767 32767 32767 32767) - (v128.const i16x8 32767 32767 32767 32767 32767 32767 32767 32767)) - (v128.const i16x8 0 0 0 0 0 0 0 0)) -(assert_return (invoke "i16x8.sub_saturate_s" (v128.const i16x8 -32768 -32768 -32768 -32768 -32768 -32768 -32768 -32768) - (v128.const i16x8 -32768 -32768 -32768 -32768 -32768 -32768 -32768 -32768)) - (v128.const i16x8 0 0 0 0 0 0 0 0)) -(assert_return (invoke "i16x8.sub_saturate_s" (v128.const i16x8 -32768 -32768 -32768 -32768 -32768 -32768 -32768 -32768) - (v128.const i16x8 -32767 -32767 -32767 -32767 -32767 -32767 -32767 -32767)) - (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1)) -(assert_return (invoke "i16x8.sub_saturate_s" (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535) - (v128.const i16x8 0 0 0 0 0 0 0 0)) - (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1)) -(assert_return (invoke "i16x8.sub_saturate_s" (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535) - (v128.const i16x8 1 1 1 1 1 1 1 1)) - (v128.const i16x8 -2 -2 -2 -2 -2 -2 -2 -2)) -(assert_return (invoke "i16x8.sub_saturate_s" (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535) - (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1)) - (v128.const i16x8 0 0 0 0 0 0 0 0)) -(assert_return (invoke "i16x8.sub_saturate_s" (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535) - (v128.const i16x8 32767 32767 32767 32767 32767 32767 32767 32767)) - (v128.const i16x8 -32768 -32768 -32768 -32768 -32768 -32768 -32768 -32768)) -(assert_return (invoke "i16x8.sub_saturate_s" (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535) - (v128.const i16x8 -32768 -32768 -32768 -32768 -32768 -32768 -32768 -32768)) - (v128.const i16x8 32767 32767 32767 32767 32767 32767 32767 32767)) -(assert_return (invoke "i16x8.sub_saturate_s" (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535) - (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535)) - (v128.const i16x8 0 0 0 0 0 0 0 0)) -(assert_return (invoke "i16x8.sub_saturate_s" (v128.const i16x8 0x3fff 0x3fff 0x3fff 0x3fff 0x3fff 0x3fff 0x3fff 0x3fff) - (v128.const i16x8 0x4000 0x4000 0x4000 0x4000 0x4000 0x4000 0x4000 0x4000)) - (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1)) -(assert_return (invoke "i16x8.sub_saturate_s" (v128.const i16x8 0x4000 0x4000 0x4000 0x4000 0x4000 0x4000 0x4000 0x4000) - (v128.const i16x8 0x4000 0x4000 0x4000 0x4000 0x4000 0x4000 0x4000 0x4000)) - (v128.const i16x8 0 0 0 0 0 0 0 0)) -(assert_return (invoke "i16x8.sub_saturate_s" (v128.const i16x8 -0x3fff -0x3fff -0x3fff -0x3fff -0x3fff -0x3fff -0x3fff -0x3fff) - (v128.const i16x8 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000)) - (v128.const i16x8 1 1 1 1 1 1 1 1)) -(assert_return (invoke "i16x8.sub_saturate_s" (v128.const i16x8 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000) - (v128.const i16x8 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000)) - (v128.const i16x8 0 0 0 0 0 0 0 0)) -(assert_return (invoke "i16x8.sub_saturate_s" (v128.const i16x8 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000) - (v128.const i16x8 -0x4001 -0x4001 -0x4001 -0x4001 -0x4001 -0x4001 -0x4001 -0x4001)) - (v128.const i16x8 1 1 1 1 1 1 1 1)) -(assert_return (invoke "i16x8.sub_saturate_s" (v128.const i16x8 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff) - (v128.const i16x8 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff)) - (v128.const i16x8 0 0 0 0 0 0 0 0)) -(assert_return (invoke "i16x8.sub_saturate_s" (v128.const i16x8 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff) - (v128.const i16x8 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01)) - (v128.const i16x8 32766 32766 32766 32766 32766 32766 32766 32766)) -(assert_return (invoke "i16x8.sub_saturate_s" (v128.const i16x8 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000) - (v128.const i16x8 -0x01 -0x01 -0x01 -0x01 -0x01 -0x01 -0x01 -0x01)) - (v128.const i16x8 -32767 -32767 -32767 -32767 -32767 -32767 -32767 -32767)) -(assert_return (invoke "i16x8.sub_saturate_s" (v128.const i16x8 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff) - (v128.const i16x8 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000)) - (v128.const i16x8 32767 32767 32767 32767 32767 32767 32767 32767)) -(assert_return (invoke "i16x8.sub_saturate_s" (v128.const i16x8 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000) - (v128.const i16x8 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000)) - (v128.const i16x8 0 0 0 0 0 0 0 0)) -(assert_return (invoke "i16x8.sub_saturate_s" (v128.const i16x8 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff) - (v128.const i16x8 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01)) - (v128.const i16x8 -2 -2 -2 -2 -2 -2 -2 -2)) -(assert_return (invoke "i16x8.sub_saturate_s" (v128.const i16x8 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff) - (v128.const i16x8 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff)) - (v128.const i16x8 0 0 0 0 0 0 0 0)) -(assert_return (invoke "i16x8.sub_saturate_s" (v128.const i16x8 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000) - (v128.const f32x4 -0.0 -0.0 -0.0 -0.0)) - (v128.const i16x8 0x8000 0 0x8000 0 0x8000 0 0x8000 0)) -(assert_return (invoke "i16x8.sub_saturate_s" (v128.const i16x8 1 1 1 1 1 1 1 1) - (v128.const f32x4 +inf +inf +inf +inf)) - (v128.const i16x8 0x01 0x8081 0x01 0x8081 0x01 0x8081 0x01 0x8081)) -(assert_return (invoke "i16x8.sub_saturate_s" (v128.const i16x8 1 1 1 1 1 1 1 1) - (v128.const f32x4 -inf -inf -inf -inf)) - (v128.const i16x8 0x01 0x81 0x01 0x81 0x01 0x81 0x01 0x81)) -(assert_return (invoke "i16x8.sub_saturate_s" (v128.const i16x8 1 1 1 1 1 1 1 1) - (v128.const f32x4 nan nan nan nan)) - (v128.const i16x8 0x01 0x8041 0x01 0x8041 0x01 0x8041 0x01 0x8041)) -(assert_return (invoke "i16x8.sub_saturate_s" (v128.const i16x8 1 1 1 1 1 1 1 1) - (v128.const f32x4 -nan -nan -nan -nan)) - (v128.const i16x8 0x01 0x41 0x01 0x41 0x01 0x41 0x01 0x41)) -(assert_return (invoke "i16x8.sub_saturate_s" (v128.const i16x8 0 1 2 3 4 5 6 7) - (v128.const i16x8 0 0xffff 0xfffe 0xfffd 0xfffc 0xfffb 0xfffa 0xfff9)) - (v128.const i16x8 0 2 4 6 8 10 12 14)) -(assert_return (invoke "i16x8.sub_saturate_s" (v128.const i16x8 0 1 2 3 4 5 6 7) - (v128.const i16x8 0 2 4 6 8 10 12 14)) - (v128.const i16x8 0 -1 -2 -3 -4 -5 -6 -7)) -(assert_return (invoke "i16x8.sub_saturate_s" (v128.const i16x8 012_345 012_345 012_345 012_345 012_345 012_345 012_345 012_345) - (v128.const i16x8 056_789 056_789 056_789 056_789 056_789 056_789 056_789 056_789)) - (v128.const i16x8 021_092 021_092 021_092 021_092 021_092 021_092 021_092 021_092)) -(assert_return (invoke "i16x8.sub_saturate_s" (v128.const i16x8 012_345 012_345 012_345 012_345 012_345 012_345 012_345 012_345) - (v128.const i16x8 -012_345 -012_345 -012_345 -012_345 -012_345 -012_345 -012_345 -012_345)) - (v128.const i16x8 024_690 024_690 024_690 024_690 024_690 024_690 024_690 024_690)) -(assert_return (invoke "i16x8.sub_saturate_s" (v128.const i16x8 0x0_1234 0x0_1234 0x0_1234 0x0_1234 0x0_1234 0x0_1234 0x0_1234 0x0_1234) - (v128.const i16x8 0x0_5678 0x0_5678 0x0_5678 0x0_5678 0x0_5678 0x0_5678 0x0_5678 0x0_5678)) - (v128.const i16x8 0x0_bbbc 0x0_bbbc 0x0_bbbc 0x0_bbbc 0x0_bbbc 0x0_bbbc 0x0_bbbc 0x0_bbbc)) -(assert_return (invoke "i16x8.sub_saturate_s" (v128.const i16x8 0x0_90AB 0x0_90AB 0x0_90AB 0x0_90AB 0x0_90AB 0x0_90AB 0x0_90AB 0x0_90AB) - (v128.const i16x8 -0x1234 -0x1234 -0x1234 -0x1234 -0x1234 -0x1234 -0x1234 -0x1234)) - (v128.const i16x8 0xa2df 0xa2df 0xa2df 0xa2df 0xa2df 0xa2df 0xa2df 0xa2df)) +;; i16x8.sub_sat_s +(assert_return (invoke "i16x8.sub_sat_s" (v128.const i16x8 0 0 0 0 0 0 0 0) + (v128.const i16x8 0 0 0 0 0 0 0 0)) + (v128.const i16x8 0 0 0 0 0 0 0 0)) +(assert_return (invoke "i16x8.sub_sat_s" (v128.const i16x8 0 0 0 0 0 0 0 0) + (v128.const i16x8 1 1 1 1 1 1 1 1)) + (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1)) +(assert_return (invoke "i16x8.sub_sat_s" (v128.const i16x8 1 1 1 1 1 1 1 1) + (v128.const i16x8 1 1 1 1 1 1 1 1)) + (v128.const i16x8 0 0 0 0 0 0 0 0)) +(assert_return (invoke "i16x8.sub_sat_s" (v128.const i16x8 0 0 0 0 0 0 0 0) + (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1)) + (v128.const i16x8 1 1 1 1 1 1 1 1)) +(assert_return (invoke "i16x8.sub_sat_s" (v128.const i16x8 1 1 1 1 1 1 1 1) + (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1)) + (v128.const i16x8 2 2 2 2 2 2 2 2)) +(assert_return (invoke "i16x8.sub_sat_s" (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1) + (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1)) + (v128.const i16x8 0 0 0 0 0 0 0 0)) +(assert_return (invoke "i16x8.sub_sat_s" (v128.const i16x8 16383 16383 16383 16383 16383 16383 16383 16383) + (v128.const i16x8 16384 16384 16384 16384 16384 16384 16384 16384)) + (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1)) +(assert_return (invoke "i16x8.sub_sat_s" (v128.const i16x8 16384 16384 16384 16384 16384 16384 16384 16384) + (v128.const i16x8 16384 16384 16384 16384 16384 16384 16384 16384)) + (v128.const i16x8 0 0 0 0 0 0 0 0)) +(assert_return (invoke "i16x8.sub_sat_s" (v128.const i16x8 -16383 -16383 -16383 -16383 -16383 -16383 -16383 -16383) + (v128.const i16x8 -16384 -16384 -16384 -16384 -16384 -16384 -16384 -16384)) + (v128.const i16x8 1 1 1 1 1 1 1 1)) +(assert_return (invoke "i16x8.sub_sat_s" (v128.const i16x8 -16384 -16384 -16384 -16384 -16384 -16384 -16384 -16384) + (v128.const i16x8 -16384 -16384 -16384 -16384 -16384 -16384 -16384 -16384)) + (v128.const i16x8 0 0 0 0 0 0 0 0)) +(assert_return (invoke "i16x8.sub_sat_s" (v128.const i16x8 -16385 -16385 -16385 -16385 -16385 -16385 -16385 -16385) + (v128.const i16x8 -16384 -16384 -16384 -16384 -16384 -16384 -16384 -16384)) + (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1)) +(assert_return (invoke "i16x8.sub_sat_s" (v128.const i16x8 32765 32765 32765 32765 32765 32765 32765 32765) + (v128.const i16x8 1 1 1 1 1 1 1 1)) + (v128.const i16x8 32764 32764 32764 32764 32764 32764 32764 32764)) +(assert_return (invoke "i16x8.sub_sat_s" (v128.const i16x8 32766 32766 32766 32766 32766 32766 32766 32766) + (v128.const i16x8 1 1 1 1 1 1 1 1)) + (v128.const i16x8 32765 32765 32765 32765 32765 32765 32765 32765)) +(assert_return (invoke "i16x8.sub_sat_s" (v128.const i16x8 32768 32768 32768 32768 32768 32768 32768 32768) + (v128.const i16x8 1 1 1 1 1 1 1 1)) + (v128.const i16x8 -32768 -32768 -32768 -32768 -32768 -32768 -32768 -32768)) +(assert_return (invoke "i16x8.sub_sat_s" (v128.const i16x8 -32766 -32766 -32766 -32766 -32766 -32766 -32766 -32766) + (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1)) + (v128.const i16x8 -32765 -32765 -32765 -32765 -32765 -32765 -32765 -32765)) +(assert_return (invoke "i16x8.sub_sat_s" (v128.const i16x8 -32767 -32767 -32767 -32767 -32767 -32767 -32767 -32767) + (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1)) + (v128.const i16x8 -32766 -32766 -32766 -32766 -32766 -32766 -32766 -32766)) +(assert_return (invoke "i16x8.sub_sat_s" (v128.const i16x8 -32768 -32768 -32768 -32768 -32768 -32768 -32768 -32768) + (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1)) + (v128.const i16x8 -32767 -32767 -32767 -32767 -32767 -32767 -32767 -32767)) +(assert_return (invoke "i16x8.sub_sat_s" (v128.const i16x8 32767 32767 32767 32767 32767 32767 32767 32767) + (v128.const i16x8 32767 32767 32767 32767 32767 32767 32767 32767)) + (v128.const i16x8 0 0 0 0 0 0 0 0)) +(assert_return (invoke "i16x8.sub_sat_s" (v128.const i16x8 -32768 -32768 -32768 -32768 -32768 -32768 -32768 -32768) + (v128.const i16x8 -32768 -32768 -32768 -32768 -32768 -32768 -32768 -32768)) + (v128.const i16x8 0 0 0 0 0 0 0 0)) +(assert_return (invoke "i16x8.sub_sat_s" (v128.const i16x8 -32768 -32768 -32768 -32768 -32768 -32768 -32768 -32768) + (v128.const i16x8 -32767 -32767 -32767 -32767 -32767 -32767 -32767 -32767)) + (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1)) +(assert_return (invoke "i16x8.sub_sat_s" (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535) + (v128.const i16x8 0 0 0 0 0 0 0 0)) + (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1)) +(assert_return (invoke "i16x8.sub_sat_s" (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535) + (v128.const i16x8 1 1 1 1 1 1 1 1)) + (v128.const i16x8 -2 -2 -2 -2 -2 -2 -2 -2)) +(assert_return (invoke "i16x8.sub_sat_s" (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535) + (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1)) + (v128.const i16x8 0 0 0 0 0 0 0 0)) +(assert_return (invoke "i16x8.sub_sat_s" (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535) + (v128.const i16x8 32767 32767 32767 32767 32767 32767 32767 32767)) + (v128.const i16x8 -32768 -32768 -32768 -32768 -32768 -32768 -32768 -32768)) +(assert_return (invoke "i16x8.sub_sat_s" (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535) + (v128.const i16x8 -32768 -32768 -32768 -32768 -32768 -32768 -32768 -32768)) + (v128.const i16x8 32767 32767 32767 32767 32767 32767 32767 32767)) +(assert_return (invoke "i16x8.sub_sat_s" (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535) + (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535)) + (v128.const i16x8 0 0 0 0 0 0 0 0)) +(assert_return (invoke "i16x8.sub_sat_s" (v128.const i16x8 0x3fff 0x3fff 0x3fff 0x3fff 0x3fff 0x3fff 0x3fff 0x3fff) + (v128.const i16x8 0x4000 0x4000 0x4000 0x4000 0x4000 0x4000 0x4000 0x4000)) + (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1)) +(assert_return (invoke "i16x8.sub_sat_s" (v128.const i16x8 0x4000 0x4000 0x4000 0x4000 0x4000 0x4000 0x4000 0x4000) + (v128.const i16x8 0x4000 0x4000 0x4000 0x4000 0x4000 0x4000 0x4000 0x4000)) + (v128.const i16x8 0 0 0 0 0 0 0 0)) +(assert_return (invoke "i16x8.sub_sat_s" (v128.const i16x8 -0x3fff -0x3fff -0x3fff -0x3fff -0x3fff -0x3fff -0x3fff -0x3fff) + (v128.const i16x8 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000)) + (v128.const i16x8 1 1 1 1 1 1 1 1)) +(assert_return (invoke "i16x8.sub_sat_s" (v128.const i16x8 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000) + (v128.const i16x8 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000)) + (v128.const i16x8 0 0 0 0 0 0 0 0)) +(assert_return (invoke "i16x8.sub_sat_s" (v128.const i16x8 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000) + (v128.const i16x8 -0x4001 -0x4001 -0x4001 -0x4001 -0x4001 -0x4001 -0x4001 -0x4001)) + (v128.const i16x8 1 1 1 1 1 1 1 1)) +(assert_return (invoke "i16x8.sub_sat_s" (v128.const i16x8 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff) + (v128.const i16x8 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff)) + (v128.const i16x8 0 0 0 0 0 0 0 0)) +(assert_return (invoke "i16x8.sub_sat_s" (v128.const i16x8 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff) + (v128.const i16x8 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01)) + (v128.const i16x8 32766 32766 32766 32766 32766 32766 32766 32766)) +(assert_return (invoke "i16x8.sub_sat_s" (v128.const i16x8 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000) + (v128.const i16x8 -0x01 -0x01 -0x01 -0x01 -0x01 -0x01 -0x01 -0x01)) + (v128.const i16x8 -32767 -32767 -32767 -32767 -32767 -32767 -32767 -32767)) +(assert_return (invoke "i16x8.sub_sat_s" (v128.const i16x8 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff) + (v128.const i16x8 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000)) + (v128.const i16x8 32767 32767 32767 32767 32767 32767 32767 32767)) +(assert_return (invoke "i16x8.sub_sat_s" (v128.const i16x8 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000) + (v128.const i16x8 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000)) + (v128.const i16x8 0 0 0 0 0 0 0 0)) +(assert_return (invoke "i16x8.sub_sat_s" (v128.const i16x8 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff) + (v128.const i16x8 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01)) + (v128.const i16x8 -2 -2 -2 -2 -2 -2 -2 -2)) +(assert_return (invoke "i16x8.sub_sat_s" (v128.const i16x8 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff) + (v128.const i16x8 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff)) + (v128.const i16x8 0 0 0 0 0 0 0 0)) +(assert_return (invoke "i16x8.sub_sat_s" (v128.const i16x8 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000) + (v128.const f32x4 -0.0 -0.0 -0.0 -0.0)) + (v128.const i16x8 0x8000 0 0x8000 0 0x8000 0 0x8000 0)) +(assert_return (invoke "i16x8.sub_sat_s" (v128.const i16x8 1 1 1 1 1 1 1 1) + (v128.const f32x4 +inf +inf +inf +inf)) + (v128.const i16x8 0x01 0x8081 0x01 0x8081 0x01 0x8081 0x01 0x8081)) +(assert_return (invoke "i16x8.sub_sat_s" (v128.const i16x8 1 1 1 1 1 1 1 1) + (v128.const f32x4 -inf -inf -inf -inf)) + (v128.const i16x8 0x01 0x81 0x01 0x81 0x01 0x81 0x01 0x81)) +(assert_return (invoke "i16x8.sub_sat_s" (v128.const i16x8 1 1 1 1 1 1 1 1) + (v128.const f32x4 nan nan nan nan)) + (v128.const i16x8 0x01 0x8041 0x01 0x8041 0x01 0x8041 0x01 0x8041)) +(assert_return (invoke "i16x8.sub_sat_s" (v128.const i16x8 1 1 1 1 1 1 1 1) + (v128.const f32x4 -nan -nan -nan -nan)) + (v128.const i16x8 0x01 0x41 0x01 0x41 0x01 0x41 0x01 0x41)) +(assert_return (invoke "i16x8.sub_sat_s" (v128.const i16x8 0 1 2 3 4 5 6 7) + (v128.const i16x8 0 0xffff 0xfffe 0xfffd 0xfffc 0xfffb 0xfffa 0xfff9)) + (v128.const i16x8 0 2 4 6 8 10 12 14)) +(assert_return (invoke "i16x8.sub_sat_s" (v128.const i16x8 0 1 2 3 4 5 6 7) + (v128.const i16x8 0 2 4 6 8 10 12 14)) + (v128.const i16x8 0 -1 -2 -3 -4 -5 -6 -7)) +(assert_return (invoke "i16x8.sub_sat_s" (v128.const i16x8 012_345 012_345 012_345 012_345 012_345 012_345 012_345 012_345) + (v128.const i16x8 056_789 056_789 056_789 056_789 056_789 056_789 056_789 056_789)) + (v128.const i16x8 021_092 021_092 021_092 021_092 021_092 021_092 021_092 021_092)) +(assert_return (invoke "i16x8.sub_sat_s" (v128.const i16x8 012_345 012_345 012_345 012_345 012_345 012_345 012_345 012_345) + (v128.const i16x8 -012_345 -012_345 -012_345 -012_345 -012_345 -012_345 -012_345 -012_345)) + (v128.const i16x8 024_690 024_690 024_690 024_690 024_690 024_690 024_690 024_690)) +(assert_return (invoke "i16x8.sub_sat_s" (v128.const i16x8 0x0_1234 0x0_1234 0x0_1234 0x0_1234 0x0_1234 0x0_1234 0x0_1234 0x0_1234) + (v128.const i16x8 0x0_5678 0x0_5678 0x0_5678 0x0_5678 0x0_5678 0x0_5678 0x0_5678 0x0_5678)) + (v128.const i16x8 0x0_bbbc 0x0_bbbc 0x0_bbbc 0x0_bbbc 0x0_bbbc 0x0_bbbc 0x0_bbbc 0x0_bbbc)) +(assert_return (invoke "i16x8.sub_sat_s" (v128.const i16x8 0x0_90AB 0x0_90AB 0x0_90AB 0x0_90AB 0x0_90AB 0x0_90AB 0x0_90AB 0x0_90AB) + (v128.const i16x8 -0x1234 -0x1234 -0x1234 -0x1234 -0x1234 -0x1234 -0x1234 -0x1234)) + (v128.const i16x8 0xa2df 0xa2df 0xa2df 0xa2df 0xa2df 0xa2df 0xa2df 0xa2df)) -;; i16x8.sub_saturate_u -(assert_return (invoke "i16x8.sub_saturate_u" (v128.const i16x8 0 0 0 0 0 0 0 0) - (v128.const i16x8 0 0 0 0 0 0 0 0)) - (v128.const i16x8 0 0 0 0 0 0 0 0)) -(assert_return (invoke "i16x8.sub_saturate_u" (v128.const i16x8 0 0 0 0 0 0 0 0) - (v128.const i16x8 1 1 1 1 1 1 1 1)) - (v128.const i16x8 0 0 0 0 0 0 0 0)) -(assert_return (invoke "i16x8.sub_saturate_u" (v128.const i16x8 1 1 1 1 1 1 1 1) - (v128.const i16x8 1 1 1 1 1 1 1 1)) - (v128.const i16x8 0 0 0 0 0 0 0 0)) -(assert_return (invoke "i16x8.sub_saturate_u" (v128.const i16x8 0 0 0 0 0 0 0 0) - (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1)) - (v128.const i16x8 0 0 0 0 0 0 0 0)) -(assert_return (invoke "i16x8.sub_saturate_u" (v128.const i16x8 1 1 1 1 1 1 1 1) - (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1)) - (v128.const i16x8 0 0 0 0 0 0 0 0)) -(assert_return (invoke "i16x8.sub_saturate_u" (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1) - (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1)) - (v128.const i16x8 0 0 0 0 0 0 0 0)) -(assert_return (invoke "i16x8.sub_saturate_u" (v128.const i16x8 16383 16383 16383 16383 16383 16383 16383 16383) - (v128.const i16x8 16384 16384 16384 16384 16384 16384 16384 16384)) - (v128.const i16x8 0 0 0 0 0 0 0 0)) -(assert_return (invoke "i16x8.sub_saturate_u" (v128.const i16x8 16384 16384 16384 16384 16384 16384 16384 16384) - (v128.const i16x8 16384 16384 16384 16384 16384 16384 16384 16384)) - (v128.const i16x8 0 0 0 0 0 0 0 0)) -(assert_return (invoke "i16x8.sub_saturate_u" (v128.const i16x8 -16383 -16383 -16383 -16383 -16383 -16383 -16383 -16383) - (v128.const i16x8 -16384 -16384 -16384 -16384 -16384 -16384 -16384 -16384)) - (v128.const i16x8 1 1 1 1 1 1 1 1)) -(assert_return (invoke "i16x8.sub_saturate_u" (v128.const i16x8 -16384 -16384 -16384 -16384 -16384 -16384 -16384 -16384) - (v128.const i16x8 -16384 -16384 -16384 -16384 -16384 -16384 -16384 -16384)) - (v128.const i16x8 0 0 0 0 0 0 0 0)) -(assert_return (invoke "i16x8.sub_saturate_u" (v128.const i16x8 -16385 -16385 -16385 -16385 -16385 -16385 -16385 -16385) - (v128.const i16x8 -16384 -16384 -16384 -16384 -16384 -16384 -16384 -16384)) - (v128.const i16x8 0 0 0 0 0 0 0 0)) -(assert_return (invoke "i16x8.sub_saturate_u" (v128.const i16x8 32765 32765 32765 32765 32765 32765 32765 32765) - (v128.const i16x8 1 1 1 1 1 1 1 1)) - (v128.const i16x8 32764 32764 32764 32764 32764 32764 32764 32764)) -(assert_return (invoke "i16x8.sub_saturate_u" (v128.const i16x8 32766 32766 32766 32766 32766 32766 32766 32766) - (v128.const i16x8 1 1 1 1 1 1 1 1)) - (v128.const i16x8 32765 32765 32765 32765 32765 32765 32765 32765)) -(assert_return (invoke "i16x8.sub_saturate_u" (v128.const i16x8 32768 32768 32768 32768 32768 32768 32768 32768) - (v128.const i16x8 1 1 1 1 1 1 1 1)) - (v128.const i16x8 32767 32767 32767 32767 32767 32767 32767 32767)) -(assert_return (invoke "i16x8.sub_saturate_u" (v128.const i16x8 -32766 -32766 -32766 -32766 -32766 -32766 -32766 -32766) - (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1)) - (v128.const i16x8 0 0 0 0 0 0 0 0)) -(assert_return (invoke "i16x8.sub_saturate_u" (v128.const i16x8 -32767 -32767 -32767 -32767 -32767 -32767 -32767 -32767) - (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1)) - (v128.const i16x8 0 0 0 0 0 0 0 0)) -(assert_return (invoke "i16x8.sub_saturate_u" (v128.const i16x8 -32768 -32768 -32768 -32768 -32768 -32768 -32768 -32768) - (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1)) - (v128.const i16x8 0 0 0 0 0 0 0 0)) -(assert_return (invoke "i16x8.sub_saturate_u" (v128.const i16x8 32767 32767 32767 32767 32767 32767 32767 32767) - (v128.const i16x8 32767 32767 32767 32767 32767 32767 32767 32767)) - (v128.const i16x8 0 0 0 0 0 0 0 0)) -(assert_return (invoke "i16x8.sub_saturate_u" (v128.const i16x8 -32768 -32768 -32768 -32768 -32768 -32768 -32768 -32768) - (v128.const i16x8 -32768 -32768 -32768 -32768 -32768 -32768 -32768 -32768)) - (v128.const i16x8 0 0 0 0 0 0 0 0)) -(assert_return (invoke "i16x8.sub_saturate_u" (v128.const i16x8 -32768 -32768 -32768 -32768 -32768 -32768 -32768 -32768) - (v128.const i16x8 -32767 -32767 -32767 -32767 -32767 -32767 -32767 -32767)) - (v128.const i16x8 0 0 0 0 0 0 0 0)) -(assert_return (invoke "i16x8.sub_saturate_u" (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535) - (v128.const i16x8 0 0 0 0 0 0 0 0)) - (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535)) -(assert_return (invoke "i16x8.sub_saturate_u" (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535) - (v128.const i16x8 1 1 1 1 1 1 1 1)) - (v128.const i16x8 65534 65534 65534 65534 65534 65534 65534 65534)) -(assert_return (invoke "i16x8.sub_saturate_u" (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535) - (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1)) - (v128.const i16x8 0 0 0 0 0 0 0 0)) -(assert_return (invoke "i16x8.sub_saturate_u" (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535) - (v128.const i16x8 32767 32767 32767 32767 32767 32767 32767 32767)) - (v128.const i16x8 32768 32768 32768 32768 32768 32768 32768 32768)) -(assert_return (invoke "i16x8.sub_saturate_u" (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535) - (v128.const i16x8 -32768 -32768 -32768 -32768 -32768 -32768 -32768 -32768)) - (v128.const i16x8 32767 32767 32767 32767 32767 32767 32767 32767)) -(assert_return (invoke "i16x8.sub_saturate_u" (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535) - (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535)) - (v128.const i16x8 0 0 0 0 0 0 0 0)) -(assert_return (invoke "i16x8.sub_saturate_u" (v128.const i16x8 0x3fff 0x3fff 0x3fff 0x3fff 0x3fff 0x3fff 0x3fff 0x3fff) - (v128.const i16x8 0x4000 0x4000 0x4000 0x4000 0x4000 0x4000 0x4000 0x4000)) - (v128.const i16x8 0 0 0 0 0 0 0 0)) -(assert_return (invoke "i16x8.sub_saturate_u" (v128.const i16x8 0x4000 0x4000 0x4000 0x4000 0x4000 0x4000 0x4000 0x4000) - (v128.const i16x8 0x4000 0x4000 0x4000 0x4000 0x4000 0x4000 0x4000 0x4000)) - (v128.const i16x8 0 0 0 0 0 0 0 0)) -(assert_return (invoke "i16x8.sub_saturate_u" (v128.const i16x8 -0x3fff -0x3fff -0x3fff -0x3fff -0x3fff -0x3fff -0x3fff -0x3fff) - (v128.const i16x8 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000)) - (v128.const i16x8 1 1 1 1 1 1 1 1)) -(assert_return (invoke "i16x8.sub_saturate_u" (v128.const i16x8 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000) - (v128.const i16x8 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000)) - (v128.const i16x8 0 0 0 0 0 0 0 0)) -(assert_return (invoke "i16x8.sub_saturate_u" (v128.const i16x8 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000) - (v128.const i16x8 -0x4001 -0x4001 -0x4001 -0x4001 -0x4001 -0x4001 -0x4001 -0x4001)) - (v128.const i16x8 1 1 1 1 1 1 1 1)) -(assert_return (invoke "i16x8.sub_saturate_u" (v128.const i16x8 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff) - (v128.const i16x8 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff)) - (v128.const i16x8 0 0 0 0 0 0 0 0)) -(assert_return (invoke "i16x8.sub_saturate_u" (v128.const i16x8 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff) - (v128.const i16x8 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01)) - (v128.const i16x8 32766 32766 32766 32766 32766 32766 32766 32766)) -(assert_return (invoke "i16x8.sub_saturate_u" (v128.const i16x8 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000) - (v128.const i16x8 -0x01 -0x01 -0x01 -0x01 -0x01 -0x01 -0x01 -0x01)) - (v128.const i16x8 0 0 0 0 0 0 0 0)) -(assert_return (invoke "i16x8.sub_saturate_u" (v128.const i16x8 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff) - (v128.const i16x8 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000)) - (v128.const i16x8 0 0 0 0 0 0 0 0)) -(assert_return (invoke "i16x8.sub_saturate_u" (v128.const i16x8 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000) - (v128.const i16x8 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000)) - (v128.const i16x8 0 0 0 0 0 0 0 0)) -(assert_return (invoke "i16x8.sub_saturate_u" (v128.const i16x8 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff) - (v128.const i16x8 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01)) - (v128.const i16x8 65534 65534 65534 65534 65534 65534 65534 65534)) -(assert_return (invoke "i16x8.sub_saturate_u" (v128.const i16x8 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff) - (v128.const i16x8 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff)) - (v128.const i16x8 0 0 0 0 0 0 0 0)) -(assert_return (invoke "i16x8.sub_saturate_u" (v128.const i16x8 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000) - (v128.const f32x4 -0.0 -0.0 -0.0 -0.0)) - (v128.const i16x8 0x8000 0 0x8000 0 0x8000 0 0x8000 0)) -(assert_return (invoke "i16x8.sub_saturate_u" (v128.const i16x8 1 1 1 1 1 1 1 1) - (v128.const f32x4 +inf +inf +inf +inf)) - (v128.const i16x8 0x01 0 0x01 0 0x01 0 0x01 0)) -(assert_return (invoke "i16x8.sub_saturate_u" (v128.const i16x8 1 1 1 1 1 1 1 1) - (v128.const f32x4 -inf -inf -inf -inf)) - (v128.const i16x8 0x01 0 0x01 0 0x01 0 0x01 0)) -(assert_return (invoke "i16x8.sub_saturate_u" (v128.const i16x8 1 1 1 1 1 1 1 1) - (v128.const f32x4 nan nan nan nan)) - (v128.const i16x8 0x01 0 0x01 0 0x01 0 0x01 0)) -(assert_return (invoke "i16x8.sub_saturate_u" (v128.const i16x8 1 1 1 1 1 1 1 1) - (v128.const f32x4 -nan -nan -nan -nan)) - (v128.const i16x8 0x01 0 0x01 0 0x01 0 0x01 0)) -(assert_return (invoke "i16x8.sub_saturate_u" (v128.const i16x8 0 1 2 3 4 5 6 7) - (v128.const i16x8 0 0xffff 0xfffe 0xfffd 0xfffc 0xfffb 0xfffa 0xfff9)) - (v128.const i16x8 0 0 0 0 0 0 0 0)) -(assert_return (invoke "i16x8.sub_saturate_u" (v128.const i16x8 0 1 2 3 4 5 6 7) - (v128.const i16x8 0 2 4 6 8 10 12 14)) - (v128.const i16x8 0 0 0 0 0 0 0 0)) -(assert_return (invoke "i16x8.sub_saturate_u" (v128.const i16x8 012_345 012_345 012_345 012_345 012_345 012_345 012_345 012_345) - (v128.const i16x8 056_789 056_789 056_789 056_789 056_789 056_789 056_789 056_789)) - (v128.const i16x8 0 0 0 0 0 0 0 0)) -(assert_return (invoke "i16x8.sub_saturate_u" (v128.const i16x8 056_789 056_789 056_789 056_789 056_789 056_789 056_789 056_789) - (v128.const i16x8 -12_345 -12_345 -12_345 -12_345 -12_345 -12_345 -12_345 -12_345)) - (v128.const i16x8 03_598 03_598 03_598 03_598 03_598 03_598 03_598 03_598)) -(assert_return (invoke "i16x8.sub_saturate_u" (v128.const i16x8 0x0_1234 0x0_1234 0x0_1234 0x0_1234 0x0_1234 0x0_1234 0x0_1234 0x0_1234) - (v128.const i16x8 -0x0_5678 -0x0_5678 -0x0_5678 -0x0_5678 -0x0_5678 -0x0_5678 -0x0_5678 -0x0_5678)) - (v128.const i16x8 0 0 0 0 0 0 0 0)) -(assert_return (invoke "i16x8.sub_saturate_u" (v128.const i16x8 0x0_cdef 0x0_cdef 0x0_cdef 0x0_cdef 0x0_cdef 0x0_cdef 0x0_cdef 0x0_cdef) - (v128.const i16x8 0x0_90AB 0x0_90AB 0x0_90AB 0x0_90AB 0x0_90AB 0x0_90AB 0x0_90AB 0x0_90AB)) - (v128.const i16x8 0x0_3d44 0x0_3d44 0x0_3d44 0x0_3d44 0x0_3d44 0x0_3d44 0x0_3d44 0x0_3d44)) +;; i16x8.sub_sat_u +(assert_return (invoke "i16x8.sub_sat_u" (v128.const i16x8 0 0 0 0 0 0 0 0) + (v128.const i16x8 0 0 0 0 0 0 0 0)) + (v128.const i16x8 0 0 0 0 0 0 0 0)) +(assert_return (invoke "i16x8.sub_sat_u" (v128.const i16x8 0 0 0 0 0 0 0 0) + (v128.const i16x8 1 1 1 1 1 1 1 1)) + (v128.const i16x8 0 0 0 0 0 0 0 0)) +(assert_return (invoke "i16x8.sub_sat_u" (v128.const i16x8 1 1 1 1 1 1 1 1) + (v128.const i16x8 1 1 1 1 1 1 1 1)) + (v128.const i16x8 0 0 0 0 0 0 0 0)) +(assert_return (invoke "i16x8.sub_sat_u" (v128.const i16x8 0 0 0 0 0 0 0 0) + (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1)) + (v128.const i16x8 0 0 0 0 0 0 0 0)) +(assert_return (invoke "i16x8.sub_sat_u" (v128.const i16x8 1 1 1 1 1 1 1 1) + (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1)) + (v128.const i16x8 0 0 0 0 0 0 0 0)) +(assert_return (invoke "i16x8.sub_sat_u" (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1) + (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1)) + (v128.const i16x8 0 0 0 0 0 0 0 0)) +(assert_return (invoke "i16x8.sub_sat_u" (v128.const i16x8 16383 16383 16383 16383 16383 16383 16383 16383) + (v128.const i16x8 16384 16384 16384 16384 16384 16384 16384 16384)) + (v128.const i16x8 0 0 0 0 0 0 0 0)) +(assert_return (invoke "i16x8.sub_sat_u" (v128.const i16x8 16384 16384 16384 16384 16384 16384 16384 16384) + (v128.const i16x8 16384 16384 16384 16384 16384 16384 16384 16384)) + (v128.const i16x8 0 0 0 0 0 0 0 0)) +(assert_return (invoke "i16x8.sub_sat_u" (v128.const i16x8 -16383 -16383 -16383 -16383 -16383 -16383 -16383 -16383) + (v128.const i16x8 -16384 -16384 -16384 -16384 -16384 -16384 -16384 -16384)) + (v128.const i16x8 1 1 1 1 1 1 1 1)) +(assert_return (invoke "i16x8.sub_sat_u" (v128.const i16x8 -16384 -16384 -16384 -16384 -16384 -16384 -16384 -16384) + (v128.const i16x8 -16384 -16384 -16384 -16384 -16384 -16384 -16384 -16384)) + (v128.const i16x8 0 0 0 0 0 0 0 0)) +(assert_return (invoke "i16x8.sub_sat_u" (v128.const i16x8 -16385 -16385 -16385 -16385 -16385 -16385 -16385 -16385) + (v128.const i16x8 -16384 -16384 -16384 -16384 -16384 -16384 -16384 -16384)) + (v128.const i16x8 0 0 0 0 0 0 0 0)) +(assert_return (invoke "i16x8.sub_sat_u" (v128.const i16x8 32765 32765 32765 32765 32765 32765 32765 32765) + (v128.const i16x8 1 1 1 1 1 1 1 1)) + (v128.const i16x8 32764 32764 32764 32764 32764 32764 32764 32764)) +(assert_return (invoke "i16x8.sub_sat_u" (v128.const i16x8 32766 32766 32766 32766 32766 32766 32766 32766) + (v128.const i16x8 1 1 1 1 1 1 1 1)) + (v128.const i16x8 32765 32765 32765 32765 32765 32765 32765 32765)) +(assert_return (invoke "i16x8.sub_sat_u" (v128.const i16x8 32768 32768 32768 32768 32768 32768 32768 32768) + (v128.const i16x8 1 1 1 1 1 1 1 1)) + (v128.const i16x8 32767 32767 32767 32767 32767 32767 32767 32767)) +(assert_return (invoke "i16x8.sub_sat_u" (v128.const i16x8 -32766 -32766 -32766 -32766 -32766 -32766 -32766 -32766) + (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1)) + (v128.const i16x8 0 0 0 0 0 0 0 0)) +(assert_return (invoke "i16x8.sub_sat_u" (v128.const i16x8 -32767 -32767 -32767 -32767 -32767 -32767 -32767 -32767) + (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1)) + (v128.const i16x8 0 0 0 0 0 0 0 0)) +(assert_return (invoke "i16x8.sub_sat_u" (v128.const i16x8 -32768 -32768 -32768 -32768 -32768 -32768 -32768 -32768) + (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1)) + (v128.const i16x8 0 0 0 0 0 0 0 0)) +(assert_return (invoke "i16x8.sub_sat_u" (v128.const i16x8 32767 32767 32767 32767 32767 32767 32767 32767) + (v128.const i16x8 32767 32767 32767 32767 32767 32767 32767 32767)) + (v128.const i16x8 0 0 0 0 0 0 0 0)) +(assert_return (invoke "i16x8.sub_sat_u" (v128.const i16x8 -32768 -32768 -32768 -32768 -32768 -32768 -32768 -32768) + (v128.const i16x8 -32768 -32768 -32768 -32768 -32768 -32768 -32768 -32768)) + (v128.const i16x8 0 0 0 0 0 0 0 0)) +(assert_return (invoke "i16x8.sub_sat_u" (v128.const i16x8 -32768 -32768 -32768 -32768 -32768 -32768 -32768 -32768) + (v128.const i16x8 -32767 -32767 -32767 -32767 -32767 -32767 -32767 -32767)) + (v128.const i16x8 0 0 0 0 0 0 0 0)) +(assert_return (invoke "i16x8.sub_sat_u" (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535) + (v128.const i16x8 0 0 0 0 0 0 0 0)) + (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535)) +(assert_return (invoke "i16x8.sub_sat_u" (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535) + (v128.const i16x8 1 1 1 1 1 1 1 1)) + (v128.const i16x8 65534 65534 65534 65534 65534 65534 65534 65534)) +(assert_return (invoke "i16x8.sub_sat_u" (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535) + (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1)) + (v128.const i16x8 0 0 0 0 0 0 0 0)) +(assert_return (invoke "i16x8.sub_sat_u" (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535) + (v128.const i16x8 32767 32767 32767 32767 32767 32767 32767 32767)) + (v128.const i16x8 32768 32768 32768 32768 32768 32768 32768 32768)) +(assert_return (invoke "i16x8.sub_sat_u" (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535) + (v128.const i16x8 -32768 -32768 -32768 -32768 -32768 -32768 -32768 -32768)) + (v128.const i16x8 32767 32767 32767 32767 32767 32767 32767 32767)) +(assert_return (invoke "i16x8.sub_sat_u" (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535) + (v128.const i16x8 65535 65535 65535 65535 65535 65535 65535 65535)) + (v128.const i16x8 0 0 0 0 0 0 0 0)) +(assert_return (invoke "i16x8.sub_sat_u" (v128.const i16x8 0x3fff 0x3fff 0x3fff 0x3fff 0x3fff 0x3fff 0x3fff 0x3fff) + (v128.const i16x8 0x4000 0x4000 0x4000 0x4000 0x4000 0x4000 0x4000 0x4000)) + (v128.const i16x8 0 0 0 0 0 0 0 0)) +(assert_return (invoke "i16x8.sub_sat_u" (v128.const i16x8 0x4000 0x4000 0x4000 0x4000 0x4000 0x4000 0x4000 0x4000) + (v128.const i16x8 0x4000 0x4000 0x4000 0x4000 0x4000 0x4000 0x4000 0x4000)) + (v128.const i16x8 0 0 0 0 0 0 0 0)) +(assert_return (invoke "i16x8.sub_sat_u" (v128.const i16x8 -0x3fff -0x3fff -0x3fff -0x3fff -0x3fff -0x3fff -0x3fff -0x3fff) + (v128.const i16x8 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000)) + (v128.const i16x8 1 1 1 1 1 1 1 1)) +(assert_return (invoke "i16x8.sub_sat_u" (v128.const i16x8 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000) + (v128.const i16x8 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000)) + (v128.const i16x8 0 0 0 0 0 0 0 0)) +(assert_return (invoke "i16x8.sub_sat_u" (v128.const i16x8 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000 -0x4000) + (v128.const i16x8 -0x4001 -0x4001 -0x4001 -0x4001 -0x4001 -0x4001 -0x4001 -0x4001)) + (v128.const i16x8 1 1 1 1 1 1 1 1)) +(assert_return (invoke "i16x8.sub_sat_u" (v128.const i16x8 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff) + (v128.const i16x8 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff)) + (v128.const i16x8 0 0 0 0 0 0 0 0)) +(assert_return (invoke "i16x8.sub_sat_u" (v128.const i16x8 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff) + (v128.const i16x8 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01)) + (v128.const i16x8 32766 32766 32766 32766 32766 32766 32766 32766)) +(assert_return (invoke "i16x8.sub_sat_u" (v128.const i16x8 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000) + (v128.const i16x8 -0x01 -0x01 -0x01 -0x01 -0x01 -0x01 -0x01 -0x01)) + (v128.const i16x8 0 0 0 0 0 0 0 0)) +(assert_return (invoke "i16x8.sub_sat_u" (v128.const i16x8 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff) + (v128.const i16x8 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000)) + (v128.const i16x8 0 0 0 0 0 0 0 0)) +(assert_return (invoke "i16x8.sub_sat_u" (v128.const i16x8 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000) + (v128.const i16x8 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000)) + (v128.const i16x8 0 0 0 0 0 0 0 0)) +(assert_return (invoke "i16x8.sub_sat_u" (v128.const i16x8 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff) + (v128.const i16x8 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01)) + (v128.const i16x8 65534 65534 65534 65534 65534 65534 65534 65534)) +(assert_return (invoke "i16x8.sub_sat_u" (v128.const i16x8 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff) + (v128.const i16x8 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff 0xffff)) + (v128.const i16x8 0 0 0 0 0 0 0 0)) +(assert_return (invoke "i16x8.sub_sat_u" (v128.const i16x8 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000 0x8000) + (v128.const f32x4 -0.0 -0.0 -0.0 -0.0)) + (v128.const i16x8 0x8000 0 0x8000 0 0x8000 0 0x8000 0)) +(assert_return (invoke "i16x8.sub_sat_u" (v128.const i16x8 1 1 1 1 1 1 1 1) + (v128.const f32x4 +inf +inf +inf +inf)) + (v128.const i16x8 0x01 0 0x01 0 0x01 0 0x01 0)) +(assert_return (invoke "i16x8.sub_sat_u" (v128.const i16x8 1 1 1 1 1 1 1 1) + (v128.const f32x4 -inf -inf -inf -inf)) + (v128.const i16x8 0x01 0 0x01 0 0x01 0 0x01 0)) +(assert_return (invoke "i16x8.sub_sat_u" (v128.const i16x8 1 1 1 1 1 1 1 1) + (v128.const f32x4 nan nan nan nan)) + (v128.const i16x8 0x01 0 0x01 0 0x01 0 0x01 0)) +(assert_return (invoke "i16x8.sub_sat_u" (v128.const i16x8 1 1 1 1 1 1 1 1) + (v128.const f32x4 -nan -nan -nan -nan)) + (v128.const i16x8 0x01 0 0x01 0 0x01 0 0x01 0)) +(assert_return (invoke "i16x8.sub_sat_u" (v128.const i16x8 0 1 2 3 4 5 6 7) + (v128.const i16x8 0 0xffff 0xfffe 0xfffd 0xfffc 0xfffb 0xfffa 0xfff9)) + (v128.const i16x8 0 0 0 0 0 0 0 0)) +(assert_return (invoke "i16x8.sub_sat_u" (v128.const i16x8 0 1 2 3 4 5 6 7) + (v128.const i16x8 0 2 4 6 8 10 12 14)) + (v128.const i16x8 0 0 0 0 0 0 0 0)) +(assert_return (invoke "i16x8.sub_sat_u" (v128.const i16x8 012_345 012_345 012_345 012_345 012_345 012_345 012_345 012_345) + (v128.const i16x8 056_789 056_789 056_789 056_789 056_789 056_789 056_789 056_789)) + (v128.const i16x8 0 0 0 0 0 0 0 0)) +(assert_return (invoke "i16x8.sub_sat_u" (v128.const i16x8 056_789 056_789 056_789 056_789 056_789 056_789 056_789 056_789) + (v128.const i16x8 -12_345 -12_345 -12_345 -12_345 -12_345 -12_345 -12_345 -12_345)) + (v128.const i16x8 03_598 03_598 03_598 03_598 03_598 03_598 03_598 03_598)) +(assert_return (invoke "i16x8.sub_sat_u" (v128.const i16x8 0x0_1234 0x0_1234 0x0_1234 0x0_1234 0x0_1234 0x0_1234 0x0_1234 0x0_1234) + (v128.const i16x8 -0x0_5678 -0x0_5678 -0x0_5678 -0x0_5678 -0x0_5678 -0x0_5678 -0x0_5678 -0x0_5678)) + (v128.const i16x8 0 0 0 0 0 0 0 0)) +(assert_return (invoke "i16x8.sub_sat_u" (v128.const i16x8 0x0_cdef 0x0_cdef 0x0_cdef 0x0_cdef 0x0_cdef 0x0_cdef 0x0_cdef 0x0_cdef) + (v128.const i16x8 0x0_90AB 0x0_90AB 0x0_90AB 0x0_90AB 0x0_90AB 0x0_90AB 0x0_90AB 0x0_90AB)) + (v128.const i16x8 0x0_3d44 0x0_3d44 0x0_3d44 0x0_3d44 0x0_3d44 0x0_3d44 0x0_3d44 0x0_3d44)) ;; Malformed cases: non-existent op names (assert_malformed (module quote - "(func (result v128) (i16x8.add_saturate (v128.const i16x8 1 1 1 1 1 1 1 1) (v128.const i16x8 2 2 2 2 2 2 2 2)))") + "(func (result v128) (i16x8.add_sat (v128.const i16x8 1 1 1 1 1 1 1 1) (v128.const i16x8 2 2 2 2 2 2 2 2)))") "unknown operator") (assert_malformed (module quote - "(func (result v128) (i16x8.sub_saturate (v128.const i16x8 1 1 1 1 1 1 1 1) (v128.const i16x8 2 2 2 2 2 2 2 2)))") + "(func (result v128) (i16x8.sub_sat (v128.const i16x8 1 1 1 1 1 1 1 1) (v128.const i16x8 2 2 2 2 2 2 2 2)))") "unknown operator") (assert_malformed (module quote - "(func (result v128) (i16x8.mul_saturate (v128.const i16x8 1 1 1 1 1 1 1 1) (v128.const i16x8 2 2 2 2 2 2 2 2)))") + "(func (result v128) (i16x8.mul_sat (v128.const i16x8 1 1 1 1 1 1 1 1) (v128.const i16x8 2 2 2 2 2 2 2 2)))") "unknown operator") (assert_malformed (module quote - "(func (result v128) (i16x8.div_saturate (v128.const i16x8 1 1 1 1 1 1 1 1) (v128.const i16x8 2 2 2 2 2 2 2 2)))") + "(func (result v128) (i16x8.div_sat (v128.const i16x8 1 1 1 1 1 1 1 1) (v128.const i16x8 2 2 2 2 2 2 2 2)))") "unknown operator") ;; type check -(assert_invalid (module (func (result v128) (i16x8.add_saturate_s (i32.const 0) (f32.const 0.0)))) "type mismatch") -(assert_invalid (module (func (result v128) (i16x8.add_saturate_u (i32.const 0) (f32.const 0.0)))) "type mismatch") -(assert_invalid (module (func (result v128) (i16x8.sub_saturate_s (i32.const 0) (f32.const 0.0)))) "type mismatch") -(assert_invalid (module (func (result v128) (i16x8.sub_saturate_u (i32.const 0) (f32.const 0.0)))) "type mismatch") +(assert_invalid (module (func (result v128) (i16x8.add_sat_s (i32.const 0) (f32.const 0.0)))) "type mismatch") +(assert_invalid (module (func (result v128) (i16x8.add_sat_u (i32.const 0) (f32.const 0.0)))) "type mismatch") +(assert_invalid (module (func (result v128) (i16x8.sub_sat_s (i32.const 0) (f32.const 0.0)))) "type mismatch") +(assert_invalid (module (func (result v128) (i16x8.sub_sat_u (i32.const 0) (f32.const 0.0)))) "type mismatch") ;; Test operation with empty argument (assert_invalid (module - (func $i16x8.add_saturate_s-1st-arg-empty (result v128) - (i16x8.add_saturate_s (v128.const i16x8 0 0 0 0 0 0 0 0)) + (func $i16x8.add_sat_s-1st-arg-empty (result v128) + (i16x8.add_sat_s (v128.const i16x8 0 0 0 0 0 0 0 0)) ) ) "type mismatch" ) (assert_invalid (module - (func $i16x8.add_saturate_s-arg-empty (result v128) - (i16x8.add_saturate_s) + (func $i16x8.add_sat_s-arg-empty (result v128) + (i16x8.add_sat_s) ) ) "type mismatch" ) (assert_invalid (module - (func $i16x8.add_saturate_u-1st-arg-empty (result v128) - (i16x8.add_saturate_u (v128.const i16x8 0 0 0 0 0 0 0 0)) + (func $i16x8.add_sat_u-1st-arg-empty (result v128) + (i16x8.add_sat_u (v128.const i16x8 0 0 0 0 0 0 0 0)) ) ) "type mismatch" ) (assert_invalid (module - (func $i16x8.add_saturate_u-arg-empty (result v128) - (i16x8.add_saturate_u) + (func $i16x8.add_sat_u-arg-empty (result v128) + (i16x8.add_sat_u) ) ) "type mismatch" ) (assert_invalid (module - (func $i16x8.sub_saturate_s-1st-arg-empty (result v128) - (i16x8.sub_saturate_s (v128.const i16x8 0 0 0 0 0 0 0 0)) + (func $i16x8.sub_sat_s-1st-arg-empty (result v128) + (i16x8.sub_sat_s (v128.const i16x8 0 0 0 0 0 0 0 0)) ) ) "type mismatch" ) (assert_invalid (module - (func $i16x8.sub_saturate_s-arg-empty (result v128) - (i16x8.sub_saturate_s) + (func $i16x8.sub_sat_s-arg-empty (result v128) + (i16x8.sub_sat_s) ) ) "type mismatch" ) (assert_invalid (module - (func $i16x8.sub_saturate_u-1st-arg-empty (result v128) - (i16x8.sub_saturate_u (v128.const i16x8 0 0 0 0 0 0 0 0)) + (func $i16x8.sub_sat_u-1st-arg-empty (result v128) + (i16x8.sub_sat_u (v128.const i16x8 0 0 0 0 0 0 0 0)) ) ) "type mismatch" ) (assert_invalid (module - (func $i16x8.sub_saturate_u-arg-empty (result v128) - (i16x8.sub_saturate_u) + (func $i16x8.sub_sat_u-arg-empty (result v128) + (i16x8.sub_sat_u) ) ) "type mismatch" @@ -695,21 +695,21 @@ ;; combination (module (func (export "sat-add_s-sub_s") (param v128 v128 v128) (result v128) - (i16x8.add_saturate_s (i16x8.sub_saturate_s (local.get 0) (local.get 1))(local.get 2))) + (i16x8.add_sat_s (i16x8.sub_sat_s (local.get 0) (local.get 1))(local.get 2))) (func (export "sat-add_s-sub_u") (param v128 v128 v128) (result v128) - (i16x8.add_saturate_s (i16x8.sub_saturate_u (local.get 0) (local.get 1))(local.get 2))) + (i16x8.add_sat_s (i16x8.sub_sat_u (local.get 0) (local.get 1))(local.get 2))) (func (export "sat-add_u-sub_s") (param v128 v128 v128) (result v128) - (i16x8.add_saturate_u (i16x8.sub_saturate_s (local.get 0) (local.get 1))(local.get 2))) + (i16x8.add_sat_u (i16x8.sub_sat_s (local.get 0) (local.get 1))(local.get 2))) (func (export "sat-add_u-sub_u") (param v128 v128 v128) (result v128) - (i16x8.add_saturate_u (i16x8.sub_saturate_u (local.get 0) (local.get 1))(local.get 2))) + (i16x8.add_sat_u (i16x8.sub_sat_u (local.get 0) (local.get 1))(local.get 2))) (func (export "sat-add_s-neg") (param v128 v128) (result v128) - (i16x8.add_saturate_s (i16x8.neg (local.get 0)) (local.get 1))) + (i16x8.add_sat_s (i16x8.neg (local.get 0)) (local.get 1))) (func (export "sat-add_u-neg") (param v128 v128) (result v128) - (i16x8.add_saturate_u (i16x8.neg (local.get 0)) (local.get 1))) + (i16x8.add_sat_u (i16x8.neg (local.get 0)) (local.get 1))) (func (export "sat-sub_s-neg") (param v128 v128) (result v128) - (i16x8.sub_saturate_s (i16x8.neg (local.get 0)) (local.get 1))) + (i16x8.sub_sat_s (i16x8.neg (local.get 0)) (local.get 1))) (func (export "sat-sub_u-neg") (param v128 v128) (result v128) - (i16x8.sub_saturate_u (i16x8.neg (local.get 0)) (local.get 1))) + (i16x8.sub_sat_u (i16x8.neg (local.get 0)) (local.get 1))) ) (assert_return (invoke "sat-add_s-sub_s" (v128.const i16x8 16384 16384 16384 16384 16384 16384 16384 16384) diff --git a/test/core/simd/simd_i8x16_sat_arith.wast b/test/core/simd/simd_i8x16_sat_arith.wast index 6a178e55c..a799a8b73 100644 --- a/test/core/simd/simd_i8x16_sat_arith.wast +++ b/test/core/simd/simd_i8x16_sat_arith.wast @@ -2,667 +2,667 @@ (module - (func (export "i8x16.add_saturate_s") (param v128 v128) (result v128) (i8x16.add_saturate_s (local.get 0) (local.get 1))) - (func (export "i8x16.add_saturate_u") (param v128 v128) (result v128) (i8x16.add_saturate_u (local.get 0) (local.get 1))) - (func (export "i8x16.sub_saturate_s") (param v128 v128) (result v128) (i8x16.sub_saturate_s (local.get 0) (local.get 1))) - (func (export "i8x16.sub_saturate_u") (param v128 v128) (result v128) (i8x16.sub_saturate_u (local.get 0) (local.get 1))) + (func (export "i8x16.add_sat_s") (param v128 v128) (result v128) (i8x16.add_sat_s (local.get 0) (local.get 1))) + (func (export "i8x16.add_sat_u") (param v128 v128) (result v128) (i8x16.add_sat_u (local.get 0) (local.get 1))) + (func (export "i8x16.sub_sat_s") (param v128 v128) (result v128) (i8x16.sub_sat_s (local.get 0) (local.get 1))) + (func (export "i8x16.sub_sat_u") (param v128 v128) (result v128) (i8x16.sub_sat_u (local.get 0) (local.get 1))) ) -;; i8x16.add_saturate_s -(assert_return (invoke "i8x16.add_saturate_s" (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0) - (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) - (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) -(assert_return (invoke "i8x16.add_saturate_s" (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0) - (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1)) - (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1)) -(assert_return (invoke "i8x16.add_saturate_s" (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1) - (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1)) - (v128.const i8x16 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2)) -(assert_return (invoke "i8x16.add_saturate_s" (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0) - (v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1)) - (v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1)) -(assert_return (invoke "i8x16.add_saturate_s" (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1) - (v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1)) - (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) -(assert_return (invoke "i8x16.add_saturate_s" (v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1) - (v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1)) - (v128.const i8x16 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2)) -(assert_return (invoke "i8x16.add_saturate_s" (v128.const i8x16 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63) - (v128.const i8x16 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64)) - (v128.const i8x16 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127)) -(assert_return (invoke "i8x16.add_saturate_s" (v128.const i8x16 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64) - (v128.const i8x16 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64)) - (v128.const i8x16 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127)) -(assert_return (invoke "i8x16.add_saturate_s" (v128.const i8x16 -63 -63 -63 -63 -63 -63 -63 -63 -63 -63 -63 -63 -63 -63 -63 -63) - (v128.const i8x16 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64)) - (v128.const i8x16 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127)) -(assert_return (invoke "i8x16.add_saturate_s" (v128.const i8x16 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64) - (v128.const i8x16 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64)) - (v128.const i8x16 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128)) -(assert_return (invoke "i8x16.add_saturate_s" (v128.const i8x16 -65 -65 -65 -65 -65 -65 -65 -65 -65 -65 -65 -65 -65 -65 -65 -65) - (v128.const i8x16 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64)) - (v128.const i8x16 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128)) -(assert_return (invoke "i8x16.add_saturate_s" (v128.const i8x16 125 125 125 125 125 125 125 125 125 125 125 125 125 125 125 125) - (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1)) - (v128.const i8x16 126 126 126 126 126 126 126 126 126 126 126 126 126 126 126 126)) -(assert_return (invoke "i8x16.add_saturate_s" (v128.const i8x16 126 126 126 126 126 126 126 126 126 126 126 126 126 126 126 126) - (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1)) - (v128.const i8x16 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127)) -(assert_return (invoke "i8x16.add_saturate_s" (v128.const i8x16 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128) - (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1)) - (v128.const i8x16 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127)) -(assert_return (invoke "i8x16.add_saturate_s" (v128.const i8x16 -126 -126 -126 -126 -126 -126 -126 -126 -126 -126 -126 -126 -126 -126 -126 -126) - (v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1)) - (v128.const i8x16 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127)) -(assert_return (invoke "i8x16.add_saturate_s" (v128.const i8x16 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127) - (v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1)) - (v128.const i8x16 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128)) -(assert_return (invoke "i8x16.add_saturate_s" (v128.const i8x16 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128) - (v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1)) - (v128.const i8x16 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128)) -(assert_return (invoke "i8x16.add_saturate_s" (v128.const i8x16 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127) - (v128.const i8x16 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127)) - (v128.const i8x16 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127)) -(assert_return (invoke "i8x16.add_saturate_s" (v128.const i8x16 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128) - (v128.const i8x16 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128)) - (v128.const i8x16 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128)) -(assert_return (invoke "i8x16.add_saturate_s" (v128.const i8x16 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128) - (v128.const i8x16 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127)) - (v128.const i8x16 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128)) -(assert_return (invoke "i8x16.add_saturate_s" (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255) - (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) - (v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1)) -(assert_return (invoke "i8x16.add_saturate_s" (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255) - (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1)) - (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) -(assert_return (invoke "i8x16.add_saturate_s" (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255) - (v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1)) - (v128.const i8x16 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2)) -(assert_return (invoke "i8x16.add_saturate_s" (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255) - (v128.const i8x16 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127)) - (v128.const i8x16 126 126 126 126 126 126 126 126 126 126 126 126 126 126 126 126)) -(assert_return (invoke "i8x16.add_saturate_s" (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255) - (v128.const i8x16 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128)) - (v128.const i8x16 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128)) -(assert_return (invoke "i8x16.add_saturate_s" (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255) - (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255)) - (v128.const i8x16 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2)) -(assert_return (invoke "i8x16.add_saturate_s" (v128.const i8x16 0x3f 0x3f 0x3f 0x3f 0x3f 0x3f 0x3f 0x3f 0x3f 0x3f 0x3f 0x3f 0x3f 0x3f 0x3f 0x3f) - (v128.const i8x16 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40)) - (v128.const i8x16 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127)) -(assert_return (invoke "i8x16.add_saturate_s" (v128.const i8x16 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40) - (v128.const i8x16 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40)) - (v128.const i8x16 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127)) -(assert_return (invoke "i8x16.add_saturate_s" (v128.const i8x16 -0x3f -0x3f -0x3f -0x3f -0x3f -0x3f -0x3f -0x3f -0x3f -0x3f -0x3f -0x3f -0x3f -0x3f -0x3f -0x3f) - (v128.const i8x16 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40)) - (v128.const i8x16 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127)) -(assert_return (invoke "i8x16.add_saturate_s" (v128.const i8x16 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40) - (v128.const i8x16 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40)) - (v128.const i8x16 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128)) -(assert_return (invoke "i8x16.add_saturate_s" (v128.const i8x16 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40) - (v128.const i8x16 -0x41 -0x41 -0x41 -0x41 -0x41 -0x41 -0x41 -0x41 -0x41 -0x41 -0x41 -0x41 -0x41 -0x41 -0x41 -0x41)) - (v128.const i8x16 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128)) -(assert_return (invoke "i8x16.add_saturate_s" (v128.const i8x16 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f) - (v128.const i8x16 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f)) - (v128.const i8x16 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127)) -(assert_return (invoke "i8x16.add_saturate_s" (v128.const i8x16 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f) - (v128.const i8x16 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01)) - (v128.const i8x16 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127)) -(assert_return (invoke "i8x16.add_saturate_s" (v128.const i8x16 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80) - (v128.const i8x16 -0x01 -0x01 -0x01 -0x01 -0x01 -0x01 -0x01 -0x01 -0x01 -0x01 -0x01 -0x01 -0x01 -0x01 -0x01 -0x01)) - (v128.const i8x16 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128)) -(assert_return (invoke "i8x16.add_saturate_s" (v128.const i8x16 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f) - (v128.const i8x16 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80)) - (v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1)) -(assert_return (invoke "i8x16.add_saturate_s" (v128.const i8x16 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80) - (v128.const i8x16 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80)) - (v128.const i8x16 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128)) -(assert_return (invoke "i8x16.add_saturate_s" (v128.const i8x16 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff) - (v128.const i8x16 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01)) - (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) -(assert_return (invoke "i8x16.add_saturate_s" (v128.const i8x16 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff) - (v128.const i8x16 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff)) - (v128.const i8x16 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2)) -(assert_return (invoke "i8x16.add_saturate_s" (v128.const i8x16 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80) - (v128.const f32x4 -0.0 -0.0 -0.0 -0.0)) - (v128.const i8x16 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80)) -(assert_return (invoke "i8x16.add_saturate_s" (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1) - (v128.const f32x4 +inf +inf +inf +inf)) - (v128.const i8x16 0x01 0x01 0x81 0x7f 0x01 0x01 0x81 0x7f 0x01 0x01 0x81 0x7f 0x01 0x01 0x81 0x7f)) -(assert_return (invoke "i8x16.add_saturate_s" (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1) - (v128.const f32x4 -inf -inf -inf -inf)) - (v128.const i8x16 0x01 0x01 0x81 0 0x01 0x01 0x81 0 0x01 0x01 0x81 0 0x01 0x01 0x81 0)) -(assert_return (invoke "i8x16.add_saturate_s" (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1) - (v128.const f32x4 nan nan nan nan)) - (v128.const i8x16 0x01 0x01 0xc1 0x7f 0x01 0x01 0xc1 0x7f 0x01 0x01 0xc1 0x7f 0x01 0x01 0xc1 0x7f)) -(assert_return (invoke "i8x16.add_saturate_s" (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1) - (v128.const f32x4 -nan -nan -nan -nan)) - (v128.const i8x16 0x01 0x01 0xc1 0 0x01 0x01 0xc1 0 0x01 0x01 0xc1 0 0x01 0x01 0xc1 0)) -(assert_return (invoke "i8x16.add_saturate_s" (v128.const i8x16 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15) - (v128.const i8x16 0 0xff 0xfe 0xfd 0xfc 0xfb 0xfa 0xf9 0xf8 0xf7 0xf6 0xf5 0xf4 0xf3 0xf2 0xf1)) - (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) -(assert_return (invoke "i8x16.add_saturate_s" (v128.const i8x16 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15) - (v128.const i8x16 0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30)) - (v128.const i8x16 0 3 6 9 12 15 18 21 24 27 30 33 36 39 42 45)) +;; i8x16.add_sat_s +(assert_return (invoke "i8x16.add_sat_s" (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0) + (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) + (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) +(assert_return (invoke "i8x16.add_sat_s" (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0) + (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1)) + (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1)) +(assert_return (invoke "i8x16.add_sat_s" (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1) + (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1)) + (v128.const i8x16 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2)) +(assert_return (invoke "i8x16.add_sat_s" (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0) + (v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1)) + (v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1)) +(assert_return (invoke "i8x16.add_sat_s" (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1) + (v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1)) + (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) +(assert_return (invoke "i8x16.add_sat_s" (v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1) + (v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1)) + (v128.const i8x16 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2)) +(assert_return (invoke "i8x16.add_sat_s" (v128.const i8x16 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63) + (v128.const i8x16 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64)) + (v128.const i8x16 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127)) +(assert_return (invoke "i8x16.add_sat_s" (v128.const i8x16 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64) + (v128.const i8x16 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64)) + (v128.const i8x16 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127)) +(assert_return (invoke "i8x16.add_sat_s" (v128.const i8x16 -63 -63 -63 -63 -63 -63 -63 -63 -63 -63 -63 -63 -63 -63 -63 -63) + (v128.const i8x16 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64)) + (v128.const i8x16 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127)) +(assert_return (invoke "i8x16.add_sat_s" (v128.const i8x16 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64) + (v128.const i8x16 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64)) + (v128.const i8x16 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128)) +(assert_return (invoke "i8x16.add_sat_s" (v128.const i8x16 -65 -65 -65 -65 -65 -65 -65 -65 -65 -65 -65 -65 -65 -65 -65 -65) + (v128.const i8x16 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64)) + (v128.const i8x16 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128)) +(assert_return (invoke "i8x16.add_sat_s" (v128.const i8x16 125 125 125 125 125 125 125 125 125 125 125 125 125 125 125 125) + (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1)) + (v128.const i8x16 126 126 126 126 126 126 126 126 126 126 126 126 126 126 126 126)) +(assert_return (invoke "i8x16.add_sat_s" (v128.const i8x16 126 126 126 126 126 126 126 126 126 126 126 126 126 126 126 126) + (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1)) + (v128.const i8x16 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127)) +(assert_return (invoke "i8x16.add_sat_s" (v128.const i8x16 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128) + (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1)) + (v128.const i8x16 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127)) +(assert_return (invoke "i8x16.add_sat_s" (v128.const i8x16 -126 -126 -126 -126 -126 -126 -126 -126 -126 -126 -126 -126 -126 -126 -126 -126) + (v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1)) + (v128.const i8x16 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127)) +(assert_return (invoke "i8x16.add_sat_s" (v128.const i8x16 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127) + (v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1)) + (v128.const i8x16 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128)) +(assert_return (invoke "i8x16.add_sat_s" (v128.const i8x16 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128) + (v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1)) + (v128.const i8x16 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128)) +(assert_return (invoke "i8x16.add_sat_s" (v128.const i8x16 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127) + (v128.const i8x16 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127)) + (v128.const i8x16 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127)) +(assert_return (invoke "i8x16.add_sat_s" (v128.const i8x16 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128) + (v128.const i8x16 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128)) + (v128.const i8x16 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128)) +(assert_return (invoke "i8x16.add_sat_s" (v128.const i8x16 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128) + (v128.const i8x16 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127)) + (v128.const i8x16 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128)) +(assert_return (invoke "i8x16.add_sat_s" (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255) + (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) + (v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1)) +(assert_return (invoke "i8x16.add_sat_s" (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255) + (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1)) + (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) +(assert_return (invoke "i8x16.add_sat_s" (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255) + (v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1)) + (v128.const i8x16 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2)) +(assert_return (invoke "i8x16.add_sat_s" (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255) + (v128.const i8x16 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127)) + (v128.const i8x16 126 126 126 126 126 126 126 126 126 126 126 126 126 126 126 126)) +(assert_return (invoke "i8x16.add_sat_s" (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255) + (v128.const i8x16 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128)) + (v128.const i8x16 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128)) +(assert_return (invoke "i8x16.add_sat_s" (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255) + (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255)) + (v128.const i8x16 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2)) +(assert_return (invoke "i8x16.add_sat_s" (v128.const i8x16 0x3f 0x3f 0x3f 0x3f 0x3f 0x3f 0x3f 0x3f 0x3f 0x3f 0x3f 0x3f 0x3f 0x3f 0x3f 0x3f) + (v128.const i8x16 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40)) + (v128.const i8x16 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127)) +(assert_return (invoke "i8x16.add_sat_s" (v128.const i8x16 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40) + (v128.const i8x16 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40)) + (v128.const i8x16 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127)) +(assert_return (invoke "i8x16.add_sat_s" (v128.const i8x16 -0x3f -0x3f -0x3f -0x3f -0x3f -0x3f -0x3f -0x3f -0x3f -0x3f -0x3f -0x3f -0x3f -0x3f -0x3f -0x3f) + (v128.const i8x16 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40)) + (v128.const i8x16 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127)) +(assert_return (invoke "i8x16.add_sat_s" (v128.const i8x16 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40) + (v128.const i8x16 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40)) + (v128.const i8x16 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128)) +(assert_return (invoke "i8x16.add_sat_s" (v128.const i8x16 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40) + (v128.const i8x16 -0x41 -0x41 -0x41 -0x41 -0x41 -0x41 -0x41 -0x41 -0x41 -0x41 -0x41 -0x41 -0x41 -0x41 -0x41 -0x41)) + (v128.const i8x16 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128)) +(assert_return (invoke "i8x16.add_sat_s" (v128.const i8x16 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f) + (v128.const i8x16 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f)) + (v128.const i8x16 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127)) +(assert_return (invoke "i8x16.add_sat_s" (v128.const i8x16 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f) + (v128.const i8x16 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01)) + (v128.const i8x16 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127)) +(assert_return (invoke "i8x16.add_sat_s" (v128.const i8x16 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80) + (v128.const i8x16 -0x01 -0x01 -0x01 -0x01 -0x01 -0x01 -0x01 -0x01 -0x01 -0x01 -0x01 -0x01 -0x01 -0x01 -0x01 -0x01)) + (v128.const i8x16 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128)) +(assert_return (invoke "i8x16.add_sat_s" (v128.const i8x16 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f) + (v128.const i8x16 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80)) + (v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1)) +(assert_return (invoke "i8x16.add_sat_s" (v128.const i8x16 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80) + (v128.const i8x16 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80)) + (v128.const i8x16 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128)) +(assert_return (invoke "i8x16.add_sat_s" (v128.const i8x16 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff) + (v128.const i8x16 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01)) + (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) +(assert_return (invoke "i8x16.add_sat_s" (v128.const i8x16 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff) + (v128.const i8x16 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff)) + (v128.const i8x16 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2)) +(assert_return (invoke "i8x16.add_sat_s" (v128.const i8x16 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80) + (v128.const f32x4 -0.0 -0.0 -0.0 -0.0)) + (v128.const i8x16 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80)) +(assert_return (invoke "i8x16.add_sat_s" (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1) + (v128.const f32x4 +inf +inf +inf +inf)) + (v128.const i8x16 0x01 0x01 0x81 0x7f 0x01 0x01 0x81 0x7f 0x01 0x01 0x81 0x7f 0x01 0x01 0x81 0x7f)) +(assert_return (invoke "i8x16.add_sat_s" (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1) + (v128.const f32x4 -inf -inf -inf -inf)) + (v128.const i8x16 0x01 0x01 0x81 0 0x01 0x01 0x81 0 0x01 0x01 0x81 0 0x01 0x01 0x81 0)) +(assert_return (invoke "i8x16.add_sat_s" (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1) + (v128.const f32x4 nan nan nan nan)) + (v128.const i8x16 0x01 0x01 0xc1 0x7f 0x01 0x01 0xc1 0x7f 0x01 0x01 0xc1 0x7f 0x01 0x01 0xc1 0x7f)) +(assert_return (invoke "i8x16.add_sat_s" (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1) + (v128.const f32x4 -nan -nan -nan -nan)) + (v128.const i8x16 0x01 0x01 0xc1 0 0x01 0x01 0xc1 0 0x01 0x01 0xc1 0 0x01 0x01 0xc1 0)) +(assert_return (invoke "i8x16.add_sat_s" (v128.const i8x16 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15) + (v128.const i8x16 0 0xff 0xfe 0xfd 0xfc 0xfb 0xfa 0xf9 0xf8 0xf7 0xf6 0xf5 0xf4 0xf3 0xf2 0xf1)) + (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) +(assert_return (invoke "i8x16.add_sat_s" (v128.const i8x16 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15) + (v128.const i8x16 0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30)) + (v128.const i8x16 0 3 6 9 12 15 18 21 24 27 30 33 36 39 42 45)) -;; i8x16.add_saturate_u -(assert_return (invoke "i8x16.add_saturate_u" (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0) - (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) - (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) -(assert_return (invoke "i8x16.add_saturate_u" (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0) - (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1)) - (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1)) -(assert_return (invoke "i8x16.add_saturate_u" (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1) - (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1)) - (v128.const i8x16 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2)) -(assert_return (invoke "i8x16.add_saturate_u" (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0) - (v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1)) - (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255)) -(assert_return (invoke "i8x16.add_saturate_u" (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1) - (v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1)) - (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255)) -(assert_return (invoke "i8x16.add_saturate_u" (v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1) - (v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1)) - (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255)) -(assert_return (invoke "i8x16.add_saturate_u" (v128.const i8x16 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63) - (v128.const i8x16 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64)) - (v128.const i8x16 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127)) -(assert_return (invoke "i8x16.add_saturate_u" (v128.const i8x16 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64) - (v128.const i8x16 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64)) - (v128.const i8x16 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128)) -(assert_return (invoke "i8x16.add_saturate_u" (v128.const i8x16 -63 -63 -63 -63 -63 -63 -63 -63 -63 -63 -63 -63 -63 -63 -63 -63) - (v128.const i8x16 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64)) - (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255)) -(assert_return (invoke "i8x16.add_saturate_u" (v128.const i8x16 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64) - (v128.const i8x16 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64)) - (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255)) -(assert_return (invoke "i8x16.add_saturate_u" (v128.const i8x16 -65 -65 -65 -65 -65 -65 -65 -65 -65 -65 -65 -65 -65 -65 -65 -65) - (v128.const i8x16 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64)) - (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255)) -(assert_return (invoke "i8x16.add_saturate_u" (v128.const i8x16 125 125 125 125 125 125 125 125 125 125 125 125 125 125 125 125) - (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1)) - (v128.const i8x16 126 126 126 126 126 126 126 126 126 126 126 126 126 126 126 126)) -(assert_return (invoke "i8x16.add_saturate_u" (v128.const i8x16 126 126 126 126 126 126 126 126 126 126 126 126 126 126 126 126) - (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1)) - (v128.const i8x16 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127)) -(assert_return (invoke "i8x16.add_saturate_u" (v128.const i8x16 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128) - (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1)) - (v128.const i8x16 129 129 129 129 129 129 129 129 129 129 129 129 129 129 129 129)) -(assert_return (invoke "i8x16.add_saturate_u" (v128.const i8x16 -126 -126 -126 -126 -126 -126 -126 -126 -126 -126 -126 -126 -126 -126 -126 -126) - (v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1)) - (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255)) -(assert_return (invoke "i8x16.add_saturate_u" (v128.const i8x16 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127) - (v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1)) - (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255)) -(assert_return (invoke "i8x16.add_saturate_u" (v128.const i8x16 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128) - (v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1)) - (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255)) -(assert_return (invoke "i8x16.add_saturate_u" (v128.const i8x16 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127) - (v128.const i8x16 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127)) - (v128.const i8x16 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254)) -(assert_return (invoke "i8x16.add_saturate_u" (v128.const i8x16 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128) - (v128.const i8x16 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128)) - (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255)) -(assert_return (invoke "i8x16.add_saturate_u" (v128.const i8x16 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128) - (v128.const i8x16 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127)) - (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255)) -(assert_return (invoke "i8x16.add_saturate_u" (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255) - (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) - (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255)) -(assert_return (invoke "i8x16.add_saturate_u" (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255) - (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1)) - (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255)) -(assert_return (invoke "i8x16.add_saturate_u" (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255) - (v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1)) - (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255)) -(assert_return (invoke "i8x16.add_saturate_u" (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255) - (v128.const i8x16 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127)) - (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255)) -(assert_return (invoke "i8x16.add_saturate_u" (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255) - (v128.const i8x16 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128)) - (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255)) -(assert_return (invoke "i8x16.add_saturate_u" (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255) - (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255)) - (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255)) -(assert_return (invoke "i8x16.add_saturate_u" (v128.const i8x16 0x3f 0x3f 0x3f 0x3f 0x3f 0x3f 0x3f 0x3f 0x3f 0x3f 0x3f 0x3f 0x3f 0x3f 0x3f 0x3f) - (v128.const i8x16 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40)) - (v128.const i8x16 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127)) -(assert_return (invoke "i8x16.add_saturate_u" (v128.const i8x16 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40) - (v128.const i8x16 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40)) - (v128.const i8x16 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128)) -(assert_return (invoke "i8x16.add_saturate_u" (v128.const i8x16 -0x3f -0x3f -0x3f -0x3f -0x3f -0x3f -0x3f -0x3f -0x3f -0x3f -0x3f -0x3f -0x3f -0x3f -0x3f -0x3f) - (v128.const i8x16 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40)) - (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255)) -(assert_return (invoke "i8x16.add_saturate_u" (v128.const i8x16 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40) - (v128.const i8x16 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40)) - (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255)) -(assert_return (invoke "i8x16.add_saturate_u" (v128.const i8x16 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40) - (v128.const i8x16 -0x41 -0x41 -0x41 -0x41 -0x41 -0x41 -0x41 -0x41 -0x41 -0x41 -0x41 -0x41 -0x41 -0x41 -0x41 -0x41)) - (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255)) -(assert_return (invoke "i8x16.add_saturate_u" (v128.const i8x16 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f) - (v128.const i8x16 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f)) - (v128.const i8x16 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254)) -(assert_return (invoke "i8x16.add_saturate_u" (v128.const i8x16 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f) - (v128.const i8x16 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01)) - (v128.const i8x16 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128)) -(assert_return (invoke "i8x16.add_saturate_u" (v128.const i8x16 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80) - (v128.const i8x16 -0x01 -0x01 -0x01 -0x01 -0x01 -0x01 -0x01 -0x01 -0x01 -0x01 -0x01 -0x01 -0x01 -0x01 -0x01 -0x01)) - (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255)) -(assert_return (invoke "i8x16.add_saturate_u" (v128.const i8x16 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f) - (v128.const i8x16 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80)) - (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255)) -(assert_return (invoke "i8x16.add_saturate_u" (v128.const i8x16 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80) - (v128.const i8x16 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80)) - (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255)) -(assert_return (invoke "i8x16.add_saturate_u" (v128.const i8x16 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff) - (v128.const i8x16 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01)) - (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255)) -(assert_return (invoke "i8x16.add_saturate_u" (v128.const i8x16 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff) - (v128.const i8x16 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff)) - (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255)) -(assert_return (invoke "i8x16.add_saturate_u" (v128.const i8x16 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80) - (v128.const f32x4 -0.0 -0.0 -0.0 -0.0)) - (v128.const i8x16 0x80 0x80 0x80 0xff 0x80 0x80 0x80 0xff 0x80 0x80 0x80 0xff 0x80 0x80 0x80 0xff)) -(assert_return (invoke "i8x16.add_saturate_u" (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1) - (v128.const f32x4 +inf +inf +inf +inf)) - (v128.const i8x16 0x01 0x01 0x81 0x80 0x01 0x01 0x81 0x80 0x01 0x01 0x81 0x80 0x01 0x01 0x81 0x80)) -(assert_return (invoke "i8x16.add_saturate_u" (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1) - (v128.const f32x4 -inf -inf -inf -inf)) - (v128.const i8x16 0x01 0x01 0x81 0xff 0x01 0x01 0x81 0xff 0x01 0x01 0x81 0xff 0x01 0x01 0x81 0xff)) -(assert_return (invoke "i8x16.add_saturate_u" (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1) - (v128.const f32x4 nan nan nan nan)) - (v128.const i8x16 0x01 0x01 0xc1 0x80 0x01 0x01 0xc1 0x80 0x01 0x01 0xc1 0x80 0x01 0x01 0xc1 0x80)) -(assert_return (invoke "i8x16.add_saturate_u" (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1) - (v128.const f32x4 -nan -nan -nan -nan)) - (v128.const i8x16 0x01 0x01 0xc1 0xff 0x01 0x01 0xc1 0xff 0x01 0x01 0xc1 0xff 0x01 0x01 0xc1 0xff)) -(assert_return (invoke "i8x16.add_saturate_u" (v128.const i8x16 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15) - (v128.const i8x16 0 0xff 0xfe 0xfd 0xfc 0xfb 0xfa 0xf9 0xf8 0xf7 0xf6 0xf5 0xf4 0xf3 0xf2 0xf1)) - (v128.const i8x16 0 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff)) -(assert_return (invoke "i8x16.add_saturate_u" (v128.const i8x16 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15) - (v128.const i8x16 0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30)) - (v128.const i8x16 0 3 6 9 12 15 18 21 24 27 30 33 36 39 42 45)) +;; i8x16.add_sat_u +(assert_return (invoke "i8x16.add_sat_u" (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0) + (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) + (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) +(assert_return (invoke "i8x16.add_sat_u" (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0) + (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1)) + (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1)) +(assert_return (invoke "i8x16.add_sat_u" (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1) + (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1)) + (v128.const i8x16 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2)) +(assert_return (invoke "i8x16.add_sat_u" (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0) + (v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1)) + (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255)) +(assert_return (invoke "i8x16.add_sat_u" (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1) + (v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1)) + (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255)) +(assert_return (invoke "i8x16.add_sat_u" (v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1) + (v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1)) + (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255)) +(assert_return (invoke "i8x16.add_sat_u" (v128.const i8x16 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63) + (v128.const i8x16 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64)) + (v128.const i8x16 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127)) +(assert_return (invoke "i8x16.add_sat_u" (v128.const i8x16 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64) + (v128.const i8x16 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64)) + (v128.const i8x16 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128)) +(assert_return (invoke "i8x16.add_sat_u" (v128.const i8x16 -63 -63 -63 -63 -63 -63 -63 -63 -63 -63 -63 -63 -63 -63 -63 -63) + (v128.const i8x16 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64)) + (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255)) +(assert_return (invoke "i8x16.add_sat_u" (v128.const i8x16 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64) + (v128.const i8x16 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64)) + (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255)) +(assert_return (invoke "i8x16.add_sat_u" (v128.const i8x16 -65 -65 -65 -65 -65 -65 -65 -65 -65 -65 -65 -65 -65 -65 -65 -65) + (v128.const i8x16 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64)) + (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255)) +(assert_return (invoke "i8x16.add_sat_u" (v128.const i8x16 125 125 125 125 125 125 125 125 125 125 125 125 125 125 125 125) + (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1)) + (v128.const i8x16 126 126 126 126 126 126 126 126 126 126 126 126 126 126 126 126)) +(assert_return (invoke "i8x16.add_sat_u" (v128.const i8x16 126 126 126 126 126 126 126 126 126 126 126 126 126 126 126 126) + (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1)) + (v128.const i8x16 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127)) +(assert_return (invoke "i8x16.add_sat_u" (v128.const i8x16 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128) + (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1)) + (v128.const i8x16 129 129 129 129 129 129 129 129 129 129 129 129 129 129 129 129)) +(assert_return (invoke "i8x16.add_sat_u" (v128.const i8x16 -126 -126 -126 -126 -126 -126 -126 -126 -126 -126 -126 -126 -126 -126 -126 -126) + (v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1)) + (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255)) +(assert_return (invoke "i8x16.add_sat_u" (v128.const i8x16 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127) + (v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1)) + (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255)) +(assert_return (invoke "i8x16.add_sat_u" (v128.const i8x16 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128) + (v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1)) + (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255)) +(assert_return (invoke "i8x16.add_sat_u" (v128.const i8x16 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127) + (v128.const i8x16 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127)) + (v128.const i8x16 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254)) +(assert_return (invoke "i8x16.add_sat_u" (v128.const i8x16 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128) + (v128.const i8x16 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128)) + (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255)) +(assert_return (invoke "i8x16.add_sat_u" (v128.const i8x16 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128) + (v128.const i8x16 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127)) + (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255)) +(assert_return (invoke "i8x16.add_sat_u" (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255) + (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) + (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255)) +(assert_return (invoke "i8x16.add_sat_u" (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255) + (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1)) + (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255)) +(assert_return (invoke "i8x16.add_sat_u" (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255) + (v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1)) + (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255)) +(assert_return (invoke "i8x16.add_sat_u" (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255) + (v128.const i8x16 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127)) + (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255)) +(assert_return (invoke "i8x16.add_sat_u" (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255) + (v128.const i8x16 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128)) + (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255)) +(assert_return (invoke "i8x16.add_sat_u" (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255) + (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255)) + (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255)) +(assert_return (invoke "i8x16.add_sat_u" (v128.const i8x16 0x3f 0x3f 0x3f 0x3f 0x3f 0x3f 0x3f 0x3f 0x3f 0x3f 0x3f 0x3f 0x3f 0x3f 0x3f 0x3f) + (v128.const i8x16 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40)) + (v128.const i8x16 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127)) +(assert_return (invoke "i8x16.add_sat_u" (v128.const i8x16 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40) + (v128.const i8x16 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40)) + (v128.const i8x16 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128)) +(assert_return (invoke "i8x16.add_sat_u" (v128.const i8x16 -0x3f -0x3f -0x3f -0x3f -0x3f -0x3f -0x3f -0x3f -0x3f -0x3f -0x3f -0x3f -0x3f -0x3f -0x3f -0x3f) + (v128.const i8x16 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40)) + (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255)) +(assert_return (invoke "i8x16.add_sat_u" (v128.const i8x16 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40) + (v128.const i8x16 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40)) + (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255)) +(assert_return (invoke "i8x16.add_sat_u" (v128.const i8x16 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40) + (v128.const i8x16 -0x41 -0x41 -0x41 -0x41 -0x41 -0x41 -0x41 -0x41 -0x41 -0x41 -0x41 -0x41 -0x41 -0x41 -0x41 -0x41)) + (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255)) +(assert_return (invoke "i8x16.add_sat_u" (v128.const i8x16 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f) + (v128.const i8x16 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f)) + (v128.const i8x16 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254)) +(assert_return (invoke "i8x16.add_sat_u" (v128.const i8x16 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f) + (v128.const i8x16 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01)) + (v128.const i8x16 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128)) +(assert_return (invoke "i8x16.add_sat_u" (v128.const i8x16 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80) + (v128.const i8x16 -0x01 -0x01 -0x01 -0x01 -0x01 -0x01 -0x01 -0x01 -0x01 -0x01 -0x01 -0x01 -0x01 -0x01 -0x01 -0x01)) + (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255)) +(assert_return (invoke "i8x16.add_sat_u" (v128.const i8x16 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f) + (v128.const i8x16 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80)) + (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255)) +(assert_return (invoke "i8x16.add_sat_u" (v128.const i8x16 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80) + (v128.const i8x16 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80)) + (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255)) +(assert_return (invoke "i8x16.add_sat_u" (v128.const i8x16 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff) + (v128.const i8x16 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01)) + (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255)) +(assert_return (invoke "i8x16.add_sat_u" (v128.const i8x16 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff) + (v128.const i8x16 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff)) + (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255)) +(assert_return (invoke "i8x16.add_sat_u" (v128.const i8x16 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80) + (v128.const f32x4 -0.0 -0.0 -0.0 -0.0)) + (v128.const i8x16 0x80 0x80 0x80 0xff 0x80 0x80 0x80 0xff 0x80 0x80 0x80 0xff 0x80 0x80 0x80 0xff)) +(assert_return (invoke "i8x16.add_sat_u" (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1) + (v128.const f32x4 +inf +inf +inf +inf)) + (v128.const i8x16 0x01 0x01 0x81 0x80 0x01 0x01 0x81 0x80 0x01 0x01 0x81 0x80 0x01 0x01 0x81 0x80)) +(assert_return (invoke "i8x16.add_sat_u" (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1) + (v128.const f32x4 -inf -inf -inf -inf)) + (v128.const i8x16 0x01 0x01 0x81 0xff 0x01 0x01 0x81 0xff 0x01 0x01 0x81 0xff 0x01 0x01 0x81 0xff)) +(assert_return (invoke "i8x16.add_sat_u" (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1) + (v128.const f32x4 nan nan nan nan)) + (v128.const i8x16 0x01 0x01 0xc1 0x80 0x01 0x01 0xc1 0x80 0x01 0x01 0xc1 0x80 0x01 0x01 0xc1 0x80)) +(assert_return (invoke "i8x16.add_sat_u" (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1) + (v128.const f32x4 -nan -nan -nan -nan)) + (v128.const i8x16 0x01 0x01 0xc1 0xff 0x01 0x01 0xc1 0xff 0x01 0x01 0xc1 0xff 0x01 0x01 0xc1 0xff)) +(assert_return (invoke "i8x16.add_sat_u" (v128.const i8x16 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15) + (v128.const i8x16 0 0xff 0xfe 0xfd 0xfc 0xfb 0xfa 0xf9 0xf8 0xf7 0xf6 0xf5 0xf4 0xf3 0xf2 0xf1)) + (v128.const i8x16 0 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff)) +(assert_return (invoke "i8x16.add_sat_u" (v128.const i8x16 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15) + (v128.const i8x16 0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30)) + (v128.const i8x16 0 3 6 9 12 15 18 21 24 27 30 33 36 39 42 45)) -;; i8x16.sub_saturate_s -(assert_return (invoke "i8x16.sub_saturate_s" (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0) - (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) - (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) -(assert_return (invoke "i8x16.sub_saturate_s" (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0) - (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1)) - (v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1)) -(assert_return (invoke "i8x16.sub_saturate_s" (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1) - (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1)) - (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) -(assert_return (invoke "i8x16.sub_saturate_s" (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0) - (v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1)) - (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1)) -(assert_return (invoke "i8x16.sub_saturate_s" (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1) - (v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1)) - (v128.const i8x16 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2)) -(assert_return (invoke "i8x16.sub_saturate_s" (v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1) - (v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1)) - (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) -(assert_return (invoke "i8x16.sub_saturate_s" (v128.const i8x16 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63) - (v128.const i8x16 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64)) - (v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1)) -(assert_return (invoke "i8x16.sub_saturate_s" (v128.const i8x16 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64) - (v128.const i8x16 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64)) - (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) -(assert_return (invoke "i8x16.sub_saturate_s" (v128.const i8x16 -63 -63 -63 -63 -63 -63 -63 -63 -63 -63 -63 -63 -63 -63 -63 -63) - (v128.const i8x16 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64)) - (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1)) -(assert_return (invoke "i8x16.sub_saturate_s" (v128.const i8x16 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64) - (v128.const i8x16 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64)) - (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) -(assert_return (invoke "i8x16.sub_saturate_s" (v128.const i8x16 -65 -65 -65 -65 -65 -65 -65 -65 -65 -65 -65 -65 -65 -65 -65 -65) - (v128.const i8x16 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64)) - (v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1)) -(assert_return (invoke "i8x16.sub_saturate_s" (v128.const i8x16 125 125 125 125 125 125 125 125 125 125 125 125 125 125 125 125) - (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1)) - (v128.const i8x16 124 124 124 124 124 124 124 124 124 124 124 124 124 124 124 124)) -(assert_return (invoke "i8x16.sub_saturate_s" (v128.const i8x16 126 126 126 126 126 126 126 126 126 126 126 126 126 126 126 126) - (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1)) - (v128.const i8x16 125 125 125 125 125 125 125 125 125 125 125 125 125 125 125 125)) -(assert_return (invoke "i8x16.sub_saturate_s" (v128.const i8x16 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128) - (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1)) - (v128.const i8x16 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128)) -(assert_return (invoke "i8x16.sub_saturate_s" (v128.const i8x16 -126 -126 -126 -126 -126 -126 -126 -126 -126 -126 -126 -126 -126 -126 -126 -126) - (v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1)) - (v128.const i8x16 -125 -125 -125 -125 -125 -125 -125 -125 -125 -125 -125 -125 -125 -125 -125 -125)) -(assert_return (invoke "i8x16.sub_saturate_s" (v128.const i8x16 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127) - (v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1)) - (v128.const i8x16 -126 -126 -126 -126 -126 -126 -126 -126 -126 -126 -126 -126 -126 -126 -126 -126)) -(assert_return (invoke "i8x16.sub_saturate_s" (v128.const i8x16 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128) - (v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1)) - (v128.const i8x16 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127)) -(assert_return (invoke "i8x16.sub_saturate_s" (v128.const i8x16 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127) - (v128.const i8x16 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127)) - (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) -(assert_return (invoke "i8x16.sub_saturate_s" (v128.const i8x16 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128) - (v128.const i8x16 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128)) - (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) -(assert_return (invoke "i8x16.sub_saturate_s" (v128.const i8x16 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128) - (v128.const i8x16 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127)) - (v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1)) -(assert_return (invoke "i8x16.sub_saturate_s" (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255) - (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) - (v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1)) -(assert_return (invoke "i8x16.sub_saturate_s" (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255) - (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1)) - (v128.const i8x16 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2)) -(assert_return (invoke "i8x16.sub_saturate_s" (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255) - (v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1)) - (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) -(assert_return (invoke "i8x16.sub_saturate_s" (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255) - (v128.const i8x16 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127)) - (v128.const i8x16 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128)) -(assert_return (invoke "i8x16.sub_saturate_s" (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255) - (v128.const i8x16 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128)) - (v128.const i8x16 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127)) -(assert_return (invoke "i8x16.sub_saturate_s" (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255) - (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255)) - (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) -(assert_return (invoke "i8x16.sub_saturate_s" (v128.const i8x16 0x3f 0x3f 0x3f 0x3f 0x3f 0x3f 0x3f 0x3f 0x3f 0x3f 0x3f 0x3f 0x3f 0x3f 0x3f 0x3f) - (v128.const i8x16 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40)) - (v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1)) -(assert_return (invoke "i8x16.sub_saturate_s" (v128.const i8x16 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40) - (v128.const i8x16 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40)) - (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) -(assert_return (invoke "i8x16.sub_saturate_s" (v128.const i8x16 -0x3f -0x3f -0x3f -0x3f -0x3f -0x3f -0x3f -0x3f -0x3f -0x3f -0x3f -0x3f -0x3f -0x3f -0x3f -0x3f) - (v128.const i8x16 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40)) - (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1)) -(assert_return (invoke "i8x16.sub_saturate_s" (v128.const i8x16 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40) - (v128.const i8x16 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40)) - (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) -(assert_return (invoke "i8x16.sub_saturate_s" (v128.const i8x16 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40) - (v128.const i8x16 -0x41 -0x41 -0x41 -0x41 -0x41 -0x41 -0x41 -0x41 -0x41 -0x41 -0x41 -0x41 -0x41 -0x41 -0x41 -0x41)) - (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1)) -(assert_return (invoke "i8x16.sub_saturate_s" (v128.const i8x16 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f) - (v128.const i8x16 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f)) - (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) -(assert_return (invoke "i8x16.sub_saturate_s" (v128.const i8x16 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f) - (v128.const i8x16 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01)) - (v128.const i8x16 126 126 126 126 126 126 126 126 126 126 126 126 126 126 126 126)) -(assert_return (invoke "i8x16.sub_saturate_s" (v128.const i8x16 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80) - (v128.const i8x16 -0x01 -0x01 -0x01 -0x01 -0x01 -0x01 -0x01 -0x01 -0x01 -0x01 -0x01 -0x01 -0x01 -0x01 -0x01 -0x01)) - (v128.const i8x16 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127)) -(assert_return (invoke "i8x16.sub_saturate_s" (v128.const i8x16 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f) - (v128.const i8x16 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80)) - (v128.const i8x16 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127)) -(assert_return (invoke "i8x16.sub_saturate_s" (v128.const i8x16 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80) - (v128.const i8x16 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80)) - (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) -(assert_return (invoke "i8x16.sub_saturate_s" (v128.const i8x16 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff) - (v128.const i8x16 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01)) - (v128.const i8x16 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2)) -(assert_return (invoke "i8x16.sub_saturate_s" (v128.const i8x16 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff) - (v128.const i8x16 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff)) - (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) -(assert_return (invoke "i8x16.sub_saturate_s" (v128.const i8x16 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80) - (v128.const f32x4 -0.0 -0.0 -0.0 -0.0)) - (v128.const i8x16 0x80 0x80 0x80 0 0x80 0x80 0x80 0 0x80 0x80 0x80 0 0x80 0x80 0x80 0)) -(assert_return (invoke "i8x16.sub_saturate_s" (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1) - (v128.const f32x4 +inf +inf +inf +inf)) - (v128.const i8x16 0x01 0x01 0x7f 0x82 0x01 0x01 0x7f 0x82 0x01 0x01 0x7f 0x82 0x01 0x01 0x7f 0x82)) -(assert_return (invoke "i8x16.sub_saturate_s" (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1) - (v128.const f32x4 -inf -inf -inf -inf)) - (v128.const i8x16 0x01 0x01 0x7f 0x02 0x01 0x01 0x7f 0x02 0x01 0x01 0x7f 0x02 0x01 0x01 0x7f 0x02)) -(assert_return (invoke "i8x16.sub_saturate_s" (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1) - (v128.const f32x4 nan nan nan nan)) - (v128.const i8x16 0x01 0x01 0x41 0x82 0x01 0x01 0x41 0x82 0x01 0x01 0x41 0x82 0x01 0x01 0x41 0x82)) -(assert_return (invoke "i8x16.sub_saturate_s" (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1) - (v128.const f32x4 -nan -nan -nan -nan)) - (v128.const i8x16 0x01 0x01 0x41 0x02 0x01 0x01 0x41 0x02 0x01 0x01 0x41 0x02 0x01 0x01 0x41 0x02)) -(assert_return (invoke "i8x16.sub_saturate_s" (v128.const i8x16 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15) - (v128.const i8x16 0 0xff 0xfe 0xfd 0xfc 0xfb 0xfa 0xf9 0xf8 0xf7 0xf6 0xf5 0xf4 0xf3 0xf2 0xf1)) - (v128.const i8x16 0 0x02 0x04 0x06 0x08 0x0a 0x0c 0x0e 0x10 0x12 0x14 0x16 0x18 0x1a 0x1c 0x1e)) -(assert_return (invoke "i8x16.sub_saturate_s" (v128.const i8x16 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15) - (v128.const i8x16 0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30)) - (v128.const i8x16 0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15)) +;; i8x16.sub_sat_s +(assert_return (invoke "i8x16.sub_sat_s" (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0) + (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) + (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) +(assert_return (invoke "i8x16.sub_sat_s" (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0) + (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1)) + (v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1)) +(assert_return (invoke "i8x16.sub_sat_s" (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1) + (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1)) + (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) +(assert_return (invoke "i8x16.sub_sat_s" (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0) + (v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1)) + (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1)) +(assert_return (invoke "i8x16.sub_sat_s" (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1) + (v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1)) + (v128.const i8x16 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2)) +(assert_return (invoke "i8x16.sub_sat_s" (v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1) + (v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1)) + (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) +(assert_return (invoke "i8x16.sub_sat_s" (v128.const i8x16 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63) + (v128.const i8x16 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64)) + (v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1)) +(assert_return (invoke "i8x16.sub_sat_s" (v128.const i8x16 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64) + (v128.const i8x16 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64)) + (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) +(assert_return (invoke "i8x16.sub_sat_s" (v128.const i8x16 -63 -63 -63 -63 -63 -63 -63 -63 -63 -63 -63 -63 -63 -63 -63 -63) + (v128.const i8x16 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64)) + (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1)) +(assert_return (invoke "i8x16.sub_sat_s" (v128.const i8x16 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64) + (v128.const i8x16 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64)) + (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) +(assert_return (invoke "i8x16.sub_sat_s" (v128.const i8x16 -65 -65 -65 -65 -65 -65 -65 -65 -65 -65 -65 -65 -65 -65 -65 -65) + (v128.const i8x16 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64)) + (v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1)) +(assert_return (invoke "i8x16.sub_sat_s" (v128.const i8x16 125 125 125 125 125 125 125 125 125 125 125 125 125 125 125 125) + (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1)) + (v128.const i8x16 124 124 124 124 124 124 124 124 124 124 124 124 124 124 124 124)) +(assert_return (invoke "i8x16.sub_sat_s" (v128.const i8x16 126 126 126 126 126 126 126 126 126 126 126 126 126 126 126 126) + (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1)) + (v128.const i8x16 125 125 125 125 125 125 125 125 125 125 125 125 125 125 125 125)) +(assert_return (invoke "i8x16.sub_sat_s" (v128.const i8x16 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128) + (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1)) + (v128.const i8x16 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128)) +(assert_return (invoke "i8x16.sub_sat_s" (v128.const i8x16 -126 -126 -126 -126 -126 -126 -126 -126 -126 -126 -126 -126 -126 -126 -126 -126) + (v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1)) + (v128.const i8x16 -125 -125 -125 -125 -125 -125 -125 -125 -125 -125 -125 -125 -125 -125 -125 -125)) +(assert_return (invoke "i8x16.sub_sat_s" (v128.const i8x16 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127) + (v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1)) + (v128.const i8x16 -126 -126 -126 -126 -126 -126 -126 -126 -126 -126 -126 -126 -126 -126 -126 -126)) +(assert_return (invoke "i8x16.sub_sat_s" (v128.const i8x16 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128) + (v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1)) + (v128.const i8x16 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127)) +(assert_return (invoke "i8x16.sub_sat_s" (v128.const i8x16 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127) + (v128.const i8x16 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127)) + (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) +(assert_return (invoke "i8x16.sub_sat_s" (v128.const i8x16 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128) + (v128.const i8x16 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128)) + (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) +(assert_return (invoke "i8x16.sub_sat_s" (v128.const i8x16 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128) + (v128.const i8x16 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127)) + (v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1)) +(assert_return (invoke "i8x16.sub_sat_s" (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255) + (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) + (v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1)) +(assert_return (invoke "i8x16.sub_sat_s" (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255) + (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1)) + (v128.const i8x16 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2)) +(assert_return (invoke "i8x16.sub_sat_s" (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255) + (v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1)) + (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) +(assert_return (invoke "i8x16.sub_sat_s" (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255) + (v128.const i8x16 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127)) + (v128.const i8x16 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128)) +(assert_return (invoke "i8x16.sub_sat_s" (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255) + (v128.const i8x16 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128)) + (v128.const i8x16 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127)) +(assert_return (invoke "i8x16.sub_sat_s" (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255) + (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255)) + (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) +(assert_return (invoke "i8x16.sub_sat_s" (v128.const i8x16 0x3f 0x3f 0x3f 0x3f 0x3f 0x3f 0x3f 0x3f 0x3f 0x3f 0x3f 0x3f 0x3f 0x3f 0x3f 0x3f) + (v128.const i8x16 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40)) + (v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1)) +(assert_return (invoke "i8x16.sub_sat_s" (v128.const i8x16 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40) + (v128.const i8x16 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40)) + (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) +(assert_return (invoke "i8x16.sub_sat_s" (v128.const i8x16 -0x3f -0x3f -0x3f -0x3f -0x3f -0x3f -0x3f -0x3f -0x3f -0x3f -0x3f -0x3f -0x3f -0x3f -0x3f -0x3f) + (v128.const i8x16 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40)) + (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1)) +(assert_return (invoke "i8x16.sub_sat_s" (v128.const i8x16 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40) + (v128.const i8x16 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40)) + (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) +(assert_return (invoke "i8x16.sub_sat_s" (v128.const i8x16 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40) + (v128.const i8x16 -0x41 -0x41 -0x41 -0x41 -0x41 -0x41 -0x41 -0x41 -0x41 -0x41 -0x41 -0x41 -0x41 -0x41 -0x41 -0x41)) + (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1)) +(assert_return (invoke "i8x16.sub_sat_s" (v128.const i8x16 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f) + (v128.const i8x16 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f)) + (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) +(assert_return (invoke "i8x16.sub_sat_s" (v128.const i8x16 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f) + (v128.const i8x16 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01)) + (v128.const i8x16 126 126 126 126 126 126 126 126 126 126 126 126 126 126 126 126)) +(assert_return (invoke "i8x16.sub_sat_s" (v128.const i8x16 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80) + (v128.const i8x16 -0x01 -0x01 -0x01 -0x01 -0x01 -0x01 -0x01 -0x01 -0x01 -0x01 -0x01 -0x01 -0x01 -0x01 -0x01 -0x01)) + (v128.const i8x16 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127)) +(assert_return (invoke "i8x16.sub_sat_s" (v128.const i8x16 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f) + (v128.const i8x16 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80)) + (v128.const i8x16 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127)) +(assert_return (invoke "i8x16.sub_sat_s" (v128.const i8x16 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80) + (v128.const i8x16 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80)) + (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) +(assert_return (invoke "i8x16.sub_sat_s" (v128.const i8x16 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff) + (v128.const i8x16 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01)) + (v128.const i8x16 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2)) +(assert_return (invoke "i8x16.sub_sat_s" (v128.const i8x16 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff) + (v128.const i8x16 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff)) + (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) +(assert_return (invoke "i8x16.sub_sat_s" (v128.const i8x16 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80) + (v128.const f32x4 -0.0 -0.0 -0.0 -0.0)) + (v128.const i8x16 0x80 0x80 0x80 0 0x80 0x80 0x80 0 0x80 0x80 0x80 0 0x80 0x80 0x80 0)) +(assert_return (invoke "i8x16.sub_sat_s" (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1) + (v128.const f32x4 +inf +inf +inf +inf)) + (v128.const i8x16 0x01 0x01 0x7f 0x82 0x01 0x01 0x7f 0x82 0x01 0x01 0x7f 0x82 0x01 0x01 0x7f 0x82)) +(assert_return (invoke "i8x16.sub_sat_s" (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1) + (v128.const f32x4 -inf -inf -inf -inf)) + (v128.const i8x16 0x01 0x01 0x7f 0x02 0x01 0x01 0x7f 0x02 0x01 0x01 0x7f 0x02 0x01 0x01 0x7f 0x02)) +(assert_return (invoke "i8x16.sub_sat_s" (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1) + (v128.const f32x4 nan nan nan nan)) + (v128.const i8x16 0x01 0x01 0x41 0x82 0x01 0x01 0x41 0x82 0x01 0x01 0x41 0x82 0x01 0x01 0x41 0x82)) +(assert_return (invoke "i8x16.sub_sat_s" (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1) + (v128.const f32x4 -nan -nan -nan -nan)) + (v128.const i8x16 0x01 0x01 0x41 0x02 0x01 0x01 0x41 0x02 0x01 0x01 0x41 0x02 0x01 0x01 0x41 0x02)) +(assert_return (invoke "i8x16.sub_sat_s" (v128.const i8x16 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15) + (v128.const i8x16 0 0xff 0xfe 0xfd 0xfc 0xfb 0xfa 0xf9 0xf8 0xf7 0xf6 0xf5 0xf4 0xf3 0xf2 0xf1)) + (v128.const i8x16 0 0x02 0x04 0x06 0x08 0x0a 0x0c 0x0e 0x10 0x12 0x14 0x16 0x18 0x1a 0x1c 0x1e)) +(assert_return (invoke "i8x16.sub_sat_s" (v128.const i8x16 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15) + (v128.const i8x16 0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30)) + (v128.const i8x16 0 -1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15)) -;; i8x16.sub_saturate_u -(assert_return (invoke "i8x16.sub_saturate_u" (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0) - (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) - (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) -(assert_return (invoke "i8x16.sub_saturate_u" (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0) - (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1)) - (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) -(assert_return (invoke "i8x16.sub_saturate_u" (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1) - (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1)) - (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) -(assert_return (invoke "i8x16.sub_saturate_u" (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0) - (v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1)) - (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) -(assert_return (invoke "i8x16.sub_saturate_u" (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1) - (v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1)) - (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) -(assert_return (invoke "i8x16.sub_saturate_u" (v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1) - (v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1)) - (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) -(assert_return (invoke "i8x16.sub_saturate_u" (v128.const i8x16 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63) - (v128.const i8x16 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64)) - (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) -(assert_return (invoke "i8x16.sub_saturate_u" (v128.const i8x16 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64) - (v128.const i8x16 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64)) - (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) -(assert_return (invoke "i8x16.sub_saturate_u" (v128.const i8x16 -63 -63 -63 -63 -63 -63 -63 -63 -63 -63 -63 -63 -63 -63 -63 -63) - (v128.const i8x16 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64)) - (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1)) -(assert_return (invoke "i8x16.sub_saturate_u" (v128.const i8x16 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64) - (v128.const i8x16 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64)) - (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) -(assert_return (invoke "i8x16.sub_saturate_u" (v128.const i8x16 -65 -65 -65 -65 -65 -65 -65 -65 -65 -65 -65 -65 -65 -65 -65 -65) - (v128.const i8x16 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64)) - (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) -(assert_return (invoke "i8x16.sub_saturate_u" (v128.const i8x16 125 125 125 125 125 125 125 125 125 125 125 125 125 125 125 125) - (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1)) - (v128.const i8x16 124 124 124 124 124 124 124 124 124 124 124 124 124 124 124 124)) -(assert_return (invoke "i8x16.sub_saturate_u" (v128.const i8x16 126 126 126 126 126 126 126 126 126 126 126 126 126 126 126 126) - (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1)) - (v128.const i8x16 125 125 125 125 125 125 125 125 125 125 125 125 125 125 125 125)) -(assert_return (invoke "i8x16.sub_saturate_u" (v128.const i8x16 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128) - (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1)) - (v128.const i8x16 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127)) -(assert_return (invoke "i8x16.sub_saturate_u" (v128.const i8x16 -126 -126 -126 -126 -126 -126 -126 -126 -126 -126 -126 -126 -126 -126 -126 -126) - (v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1)) - (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) -(assert_return (invoke "i8x16.sub_saturate_u" (v128.const i8x16 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127) - (v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1)) - (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) -(assert_return (invoke "i8x16.sub_saturate_u" (v128.const i8x16 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128) - (v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1)) - (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) -(assert_return (invoke "i8x16.sub_saturate_u" (v128.const i8x16 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127) - (v128.const i8x16 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127)) - (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) -(assert_return (invoke "i8x16.sub_saturate_u" (v128.const i8x16 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128) - (v128.const i8x16 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128)) - (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) -(assert_return (invoke "i8x16.sub_saturate_u" (v128.const i8x16 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128) - (v128.const i8x16 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127)) - (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) -(assert_return (invoke "i8x16.sub_saturate_u" (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255) - (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) - (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255)) -(assert_return (invoke "i8x16.sub_saturate_u" (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255) - (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1)) - (v128.const i8x16 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254)) -(assert_return (invoke "i8x16.sub_saturate_u" (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255) - (v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1)) - (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) -(assert_return (invoke "i8x16.sub_saturate_u" (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255) - (v128.const i8x16 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127)) - (v128.const i8x16 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128)) -(assert_return (invoke "i8x16.sub_saturate_u" (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255) - (v128.const i8x16 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128)) - (v128.const i8x16 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127)) -(assert_return (invoke "i8x16.sub_saturate_u" (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255) - (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255)) - (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) -(assert_return (invoke "i8x16.sub_saturate_u" (v128.const i8x16 0x3f 0x3f 0x3f 0x3f 0x3f 0x3f 0x3f 0x3f 0x3f 0x3f 0x3f 0x3f 0x3f 0x3f 0x3f 0x3f) - (v128.const i8x16 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40)) - (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) -(assert_return (invoke "i8x16.sub_saturate_u" (v128.const i8x16 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40) - (v128.const i8x16 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40)) - (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) -(assert_return (invoke "i8x16.sub_saturate_u" (v128.const i8x16 -0x3f -0x3f -0x3f -0x3f -0x3f -0x3f -0x3f -0x3f -0x3f -0x3f -0x3f -0x3f -0x3f -0x3f -0x3f -0x3f) - (v128.const i8x16 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40)) - (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1)) -(assert_return (invoke "i8x16.sub_saturate_u" (v128.const i8x16 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40) - (v128.const i8x16 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40)) - (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) -(assert_return (invoke "i8x16.sub_saturate_u" (v128.const i8x16 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40) - (v128.const i8x16 -0x41 -0x41 -0x41 -0x41 -0x41 -0x41 -0x41 -0x41 -0x41 -0x41 -0x41 -0x41 -0x41 -0x41 -0x41 -0x41)) - (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1)) -(assert_return (invoke "i8x16.sub_saturate_u" (v128.const i8x16 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f) - (v128.const i8x16 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f)) - (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) -(assert_return (invoke "i8x16.sub_saturate_u" (v128.const i8x16 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f) - (v128.const i8x16 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01)) - (v128.const i8x16 126 126 126 126 126 126 126 126 126 126 126 126 126 126 126 126)) -(assert_return (invoke "i8x16.sub_saturate_u" (v128.const i8x16 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80) - (v128.const i8x16 -0x01 -0x01 -0x01 -0x01 -0x01 -0x01 -0x01 -0x01 -0x01 -0x01 -0x01 -0x01 -0x01 -0x01 -0x01 -0x01)) - (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) -(assert_return (invoke "i8x16.sub_saturate_u" (v128.const i8x16 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f) - (v128.const i8x16 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80)) - (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) -(assert_return (invoke "i8x16.sub_saturate_u" (v128.const i8x16 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80) - (v128.const i8x16 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80)) - (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) -(assert_return (invoke "i8x16.sub_saturate_u" (v128.const i8x16 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff) - (v128.const i8x16 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01)) - (v128.const i8x16 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254)) -(assert_return (invoke "i8x16.sub_saturate_u" (v128.const i8x16 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff) - (v128.const i8x16 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff)) - (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) -(assert_return (invoke "i8x16.sub_saturate_u" (v128.const i8x16 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80) - (v128.const f32x4 -0.0 -0.0 -0.0 -0.0)) - (v128.const i8x16 0x80 0x80 0x80 0 0x80 0x80 0x80 0 0x80 0x80 0x80 0 0x80 0x80 0x80 0)) -(assert_return (invoke "i8x16.sub_saturate_u" (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1) - (v128.const f32x4 +inf +inf +inf +inf)) - (v128.const i8x16 0x01 0x01 0 0 0x01 0x01 0 0 0x01 0x01 0 0 0x01 0x01 0 0)) -(assert_return (invoke "i8x16.sub_saturate_u" (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1) - (v128.const f32x4 -inf -inf -inf -inf)) - (v128.const i8x16 0x01 0x01 0 0 0x01 0x01 0 0 0x01 0x01 0 0 0x01 0x01 0 0)) -(assert_return (invoke "i8x16.sub_saturate_u" (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1) - (v128.const f32x4 nan nan nan nan)) - (v128.const i8x16 0x01 0x01 0 0 0x01 0x01 0 0 0x01 0x01 0 0 0x01 0x01 0 0)) -(assert_return (invoke "i8x16.sub_saturate_u" (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1) - (v128.const f32x4 -nan -nan -nan -nan)) - (v128.const i8x16 0x01 0x01 0 0 0x01 0x01 0 0 0x01 0x01 0 0 0x01 0x01 0 0)) -(assert_return (invoke "i8x16.sub_saturate_u" (v128.const i8x16 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15) - (v128.const i8x16 0 0xff 0xfe 0xfd 0xfc 0xfb 0xfa 0xf9 0xf8 0xf7 0xf6 0xf5 0xf4 0xf3 0xf2 0xf1)) - (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) -(assert_return (invoke "i8x16.sub_saturate_u" (v128.const i8x16 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15) - (v128.const i8x16 0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30)) - (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) +;; i8x16.sub_sat_u +(assert_return (invoke "i8x16.sub_sat_u" (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0) + (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) + (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) +(assert_return (invoke "i8x16.sub_sat_u" (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0) + (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1)) + (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) +(assert_return (invoke "i8x16.sub_sat_u" (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1) + (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1)) + (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) +(assert_return (invoke "i8x16.sub_sat_u" (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0) + (v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1)) + (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) +(assert_return (invoke "i8x16.sub_sat_u" (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1) + (v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1)) + (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) +(assert_return (invoke "i8x16.sub_sat_u" (v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1) + (v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1)) + (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) +(assert_return (invoke "i8x16.sub_sat_u" (v128.const i8x16 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63 63) + (v128.const i8x16 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64)) + (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) +(assert_return (invoke "i8x16.sub_sat_u" (v128.const i8x16 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64) + (v128.const i8x16 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64)) + (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) +(assert_return (invoke "i8x16.sub_sat_u" (v128.const i8x16 -63 -63 -63 -63 -63 -63 -63 -63 -63 -63 -63 -63 -63 -63 -63 -63) + (v128.const i8x16 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64)) + (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1)) +(assert_return (invoke "i8x16.sub_sat_u" (v128.const i8x16 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64) + (v128.const i8x16 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64)) + (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) +(assert_return (invoke "i8x16.sub_sat_u" (v128.const i8x16 -65 -65 -65 -65 -65 -65 -65 -65 -65 -65 -65 -65 -65 -65 -65 -65) + (v128.const i8x16 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64 -64)) + (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) +(assert_return (invoke "i8x16.sub_sat_u" (v128.const i8x16 125 125 125 125 125 125 125 125 125 125 125 125 125 125 125 125) + (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1)) + (v128.const i8x16 124 124 124 124 124 124 124 124 124 124 124 124 124 124 124 124)) +(assert_return (invoke "i8x16.sub_sat_u" (v128.const i8x16 126 126 126 126 126 126 126 126 126 126 126 126 126 126 126 126) + (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1)) + (v128.const i8x16 125 125 125 125 125 125 125 125 125 125 125 125 125 125 125 125)) +(assert_return (invoke "i8x16.sub_sat_u" (v128.const i8x16 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128) + (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1)) + (v128.const i8x16 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127)) +(assert_return (invoke "i8x16.sub_sat_u" (v128.const i8x16 -126 -126 -126 -126 -126 -126 -126 -126 -126 -126 -126 -126 -126 -126 -126 -126) + (v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1)) + (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) +(assert_return (invoke "i8x16.sub_sat_u" (v128.const i8x16 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127) + (v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1)) + (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) +(assert_return (invoke "i8x16.sub_sat_u" (v128.const i8x16 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128) + (v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1)) + (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) +(assert_return (invoke "i8x16.sub_sat_u" (v128.const i8x16 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127) + (v128.const i8x16 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127)) + (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) +(assert_return (invoke "i8x16.sub_sat_u" (v128.const i8x16 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128) + (v128.const i8x16 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128)) + (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) +(assert_return (invoke "i8x16.sub_sat_u" (v128.const i8x16 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128) + (v128.const i8x16 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127 -127)) + (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) +(assert_return (invoke "i8x16.sub_sat_u" (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255) + (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) + (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255)) +(assert_return (invoke "i8x16.sub_sat_u" (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255) + (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1)) + (v128.const i8x16 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254)) +(assert_return (invoke "i8x16.sub_sat_u" (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255) + (v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1)) + (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) +(assert_return (invoke "i8x16.sub_sat_u" (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255) + (v128.const i8x16 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127)) + (v128.const i8x16 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128 128)) +(assert_return (invoke "i8x16.sub_sat_u" (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255) + (v128.const i8x16 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128 -128)) + (v128.const i8x16 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127 127)) +(assert_return (invoke "i8x16.sub_sat_u" (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255) + (v128.const i8x16 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255 255)) + (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) +(assert_return (invoke "i8x16.sub_sat_u" (v128.const i8x16 0x3f 0x3f 0x3f 0x3f 0x3f 0x3f 0x3f 0x3f 0x3f 0x3f 0x3f 0x3f 0x3f 0x3f 0x3f 0x3f) + (v128.const i8x16 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40)) + (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) +(assert_return (invoke "i8x16.sub_sat_u" (v128.const i8x16 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40) + (v128.const i8x16 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40 0x40)) + (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) +(assert_return (invoke "i8x16.sub_sat_u" (v128.const i8x16 -0x3f -0x3f -0x3f -0x3f -0x3f -0x3f -0x3f -0x3f -0x3f -0x3f -0x3f -0x3f -0x3f -0x3f -0x3f -0x3f) + (v128.const i8x16 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40)) + (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1)) +(assert_return (invoke "i8x16.sub_sat_u" (v128.const i8x16 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40) + (v128.const i8x16 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40)) + (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) +(assert_return (invoke "i8x16.sub_sat_u" (v128.const i8x16 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40 -0x40) + (v128.const i8x16 -0x41 -0x41 -0x41 -0x41 -0x41 -0x41 -0x41 -0x41 -0x41 -0x41 -0x41 -0x41 -0x41 -0x41 -0x41 -0x41)) + (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1)) +(assert_return (invoke "i8x16.sub_sat_u" (v128.const i8x16 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f) + (v128.const i8x16 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f)) + (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) +(assert_return (invoke "i8x16.sub_sat_u" (v128.const i8x16 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f) + (v128.const i8x16 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01)) + (v128.const i8x16 126 126 126 126 126 126 126 126 126 126 126 126 126 126 126 126)) +(assert_return (invoke "i8x16.sub_sat_u" (v128.const i8x16 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80) + (v128.const i8x16 -0x01 -0x01 -0x01 -0x01 -0x01 -0x01 -0x01 -0x01 -0x01 -0x01 -0x01 -0x01 -0x01 -0x01 -0x01 -0x01)) + (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) +(assert_return (invoke "i8x16.sub_sat_u" (v128.const i8x16 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f) + (v128.const i8x16 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80)) + (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) +(assert_return (invoke "i8x16.sub_sat_u" (v128.const i8x16 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80) + (v128.const i8x16 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80)) + (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) +(assert_return (invoke "i8x16.sub_sat_u" (v128.const i8x16 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff) + (v128.const i8x16 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01 0x01)) + (v128.const i8x16 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254 254)) +(assert_return (invoke "i8x16.sub_sat_u" (v128.const i8x16 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff) + (v128.const i8x16 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0xff)) + (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) +(assert_return (invoke "i8x16.sub_sat_u" (v128.const i8x16 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80 0x80) + (v128.const f32x4 -0.0 -0.0 -0.0 -0.0)) + (v128.const i8x16 0x80 0x80 0x80 0 0x80 0x80 0x80 0 0x80 0x80 0x80 0 0x80 0x80 0x80 0)) +(assert_return (invoke "i8x16.sub_sat_u" (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1) + (v128.const f32x4 +inf +inf +inf +inf)) + (v128.const i8x16 0x01 0x01 0 0 0x01 0x01 0 0 0x01 0x01 0 0 0x01 0x01 0 0)) +(assert_return (invoke "i8x16.sub_sat_u" (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1) + (v128.const f32x4 -inf -inf -inf -inf)) + (v128.const i8x16 0x01 0x01 0 0 0x01 0x01 0 0 0x01 0x01 0 0 0x01 0x01 0 0)) +(assert_return (invoke "i8x16.sub_sat_u" (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1) + (v128.const f32x4 nan nan nan nan)) + (v128.const i8x16 0x01 0x01 0 0 0x01 0x01 0 0 0x01 0x01 0 0 0x01 0x01 0 0)) +(assert_return (invoke "i8x16.sub_sat_u" (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1) + (v128.const f32x4 -nan -nan -nan -nan)) + (v128.const i8x16 0x01 0x01 0 0 0x01 0x01 0 0 0x01 0x01 0 0 0x01 0x01 0 0)) +(assert_return (invoke "i8x16.sub_sat_u" (v128.const i8x16 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15) + (v128.const i8x16 0 0xff 0xfe 0xfd 0xfc 0xfb 0xfa 0xf9 0xf8 0xf7 0xf6 0xf5 0xf4 0xf3 0xf2 0xf1)) + (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) +(assert_return (invoke "i8x16.sub_sat_u" (v128.const i8x16 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15) + (v128.const i8x16 0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30)) + (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) ;; Malformed cases: non-existent op names (assert_malformed (module quote - "(func (result v128) (i8x16.add_saturate (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1) (v128.const i8x16 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2)))") + "(func (result v128) (i8x16.add_sat (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1) (v128.const i8x16 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2)))") "unknown operator") (assert_malformed (module quote - "(func (result v128) (i8x16.sub_saturate (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1) (v128.const i8x16 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2)))") + "(func (result v128) (i8x16.sub_sat (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1) (v128.const i8x16 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2)))") "unknown operator") (assert_malformed (module quote - "(func (result v128) (i8x16.mul_saturate (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1) (v128.const i8x16 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2)))") + "(func (result v128) (i8x16.mul_sat (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1) (v128.const i8x16 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2)))") "unknown operator") (assert_malformed (module quote - "(func (result v128) (i8x16.div_saturate (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1) (v128.const i8x16 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2)))") + "(func (result v128) (i8x16.div_sat (v128.const i8x16 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1) (v128.const i8x16 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2)))") "unknown operator") (assert_malformed (module quote - "(func (result v128) (i32x4.add_saturate_s (v128.const i32x4 0 0 0 0) (v128.const i32x4 0 0 0 0)))") + "(func (result v128) (i32x4.add_sat_s (v128.const i32x4 0 0 0 0) (v128.const i32x4 0 0 0 0)))") "unknown operator") (assert_malformed (module quote - "(func (result v128) (i32x4.add_saturate_u (v128.const i32x4 0 0 0 0) (v128.const i32x4 0 0 0 0)))") + "(func (result v128) (i32x4.add_sat_u (v128.const i32x4 0 0 0 0) (v128.const i32x4 0 0 0 0)))") "unknown operator") (assert_malformed (module quote - "(func (result v128) (i32x4.sub_saturate_s (v128.const i32x4 0 0 0 0) (v128.const i32x4 0 0 0 0)))") + "(func (result v128) (i32x4.sub_sat_s (v128.const i32x4 0 0 0 0) (v128.const i32x4 0 0 0 0)))") "unknown operator") (assert_malformed (module quote - "(func (result v128) (i32x4.sub_saturate_u (v128.const i32x4 0 0 0 0) (v128.const i32x4 0 0 0 0)))") + "(func (result v128) (i32x4.sub_sat_u (v128.const i32x4 0 0 0 0) (v128.const i32x4 0 0 0 0)))") "unknown operator") (assert_malformed (module quote - "(func (result v128) (f32x4.add_saturate_s (v128.const f32x4 0 0 0 0) (v128.const f32x4 0 0 0 0)))") + "(func (result v128) (f32x4.add_sat_s (v128.const f32x4 0 0 0 0) (v128.const f32x4 0 0 0 0)))") "unknown operator") (assert_malformed (module quote - "(func (result v128) (f32x4.add_saturate_u (v128.const f32x4 0 0 0 0) (v128.const f32x4 0 0 0 0)))") + "(func (result v128) (f32x4.add_sat_u (v128.const f32x4 0 0 0 0) (v128.const f32x4 0 0 0 0)))") "unknown operator") (assert_malformed (module quote - "(func (result v128) (f32x4.sub_saturate_s (v128.const f32x4 0 0 0 0) (v128.const f32x4 0 0 0 0)))") + "(func (result v128) (f32x4.sub_sat_s (v128.const f32x4 0 0 0 0) (v128.const f32x4 0 0 0 0)))") "unknown operator") (assert_malformed (module quote - "(func (result v128) (f32x4.sub_saturate_u (v128.const f32x4 0 0 0 0) (v128.const f32x4 0 0 0 0)))") + "(func (result v128) (f32x4.sub_sat_u (v128.const f32x4 0 0 0 0) (v128.const f32x4 0 0 0 0)))") "unknown operator") ;; type check -(assert_invalid (module (func (result v128) (i8x16.add_saturate_s (i32.const 0) (f32.const 0.0)))) "type mismatch") -(assert_invalid (module (func (result v128) (i8x16.add_saturate_u (i32.const 0) (f32.const 0.0)))) "type mismatch") -(assert_invalid (module (func (result v128) (i8x16.sub_saturate_s (i32.const 0) (f32.const 0.0)))) "type mismatch") -(assert_invalid (module (func (result v128) (i8x16.sub_saturate_u (i32.const 0) (f32.const 0.0)))) "type mismatch") +(assert_invalid (module (func (result v128) (i8x16.add_sat_s (i32.const 0) (f32.const 0.0)))) "type mismatch") +(assert_invalid (module (func (result v128) (i8x16.add_sat_u (i32.const 0) (f32.const 0.0)))) "type mismatch") +(assert_invalid (module (func (result v128) (i8x16.sub_sat_s (i32.const 0) (f32.const 0.0)))) "type mismatch") +(assert_invalid (module (func (result v128) (i8x16.sub_sat_u (i32.const 0) (f32.const 0.0)))) "type mismatch") ;; Test operation with empty argument (assert_invalid (module - (func $i8x16.add_saturate_s-1st-arg-empty (result v128) - (i8x16.add_saturate_s (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) + (func $i8x16.add_sat_s-1st-arg-empty (result v128) + (i8x16.add_sat_s (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) ) ) "type mismatch" ) (assert_invalid (module - (func $i8x16.add_saturate_s-arg-empty (result v128) - (i8x16.add_saturate_s) + (func $i8x16.add_sat_s-arg-empty (result v128) + (i8x16.add_sat_s) ) ) "type mismatch" ) (assert_invalid (module - (func $i8x16.add_saturate_u-1st-arg-empty (result v128) - (i8x16.add_saturate_u (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) + (func $i8x16.add_sat_u-1st-arg-empty (result v128) + (i8x16.add_sat_u (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) ) ) "type mismatch" ) (assert_invalid (module - (func $i8x16.add_saturate_u-arg-empty (result v128) - (i8x16.add_saturate_u) + (func $i8x16.add_sat_u-arg-empty (result v128) + (i8x16.add_sat_u) ) ) "type mismatch" ) (assert_invalid (module - (func $i8x16.sub_saturate_s-1st-arg-empty (result v128) - (i8x16.sub_saturate_s (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) + (func $i8x16.sub_sat_s-1st-arg-empty (result v128) + (i8x16.sub_sat_s (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) ) ) "type mismatch" ) (assert_invalid (module - (func $i8x16.sub_saturate_s-arg-empty (result v128) - (i8x16.sub_saturate_s) + (func $i8x16.sub_sat_s-arg-empty (result v128) + (i8x16.sub_sat_s) ) ) "type mismatch" ) (assert_invalid (module - (func $i8x16.sub_saturate_u-1st-arg-empty (result v128) - (i8x16.sub_saturate_u (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) + (func $i8x16.sub_sat_u-1st-arg-empty (result v128) + (i8x16.sub_sat_u (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) ) ) "type mismatch" ) (assert_invalid (module - (func $i8x16.sub_saturate_u-arg-empty (result v128) - (i8x16.sub_saturate_u) + (func $i8x16.sub_sat_u-arg-empty (result v128) + (i8x16.sub_sat_u) ) ) "type mismatch" @@ -671,21 +671,21 @@ ;; combination (module (func (export "sat-add_s-sub_s") (param v128 v128 v128) (result v128) - (i8x16.add_saturate_s (i8x16.sub_saturate_s (local.get 0) (local.get 1))(local.get 2))) + (i8x16.add_sat_s (i8x16.sub_sat_s (local.get 0) (local.get 1))(local.get 2))) (func (export "sat-add_s-sub_u") (param v128 v128 v128) (result v128) - (i8x16.add_saturate_s (i8x16.sub_saturate_u (local.get 0) (local.get 1))(local.get 2))) + (i8x16.add_sat_s (i8x16.sub_sat_u (local.get 0) (local.get 1))(local.get 2))) (func (export "sat-add_u-sub_s") (param v128 v128 v128) (result v128) - (i8x16.add_saturate_u (i8x16.sub_saturate_s (local.get 0) (local.get 1))(local.get 2))) + (i8x16.add_sat_u (i8x16.sub_sat_s (local.get 0) (local.get 1))(local.get 2))) (func (export "sat-add_u-sub_u") (param v128 v128 v128) (result v128) - (i8x16.add_saturate_u (i8x16.sub_saturate_u (local.get 0) (local.get 1))(local.get 2))) + (i8x16.add_sat_u (i8x16.sub_sat_u (local.get 0) (local.get 1))(local.get 2))) (func (export "sat-add_s-neg") (param v128 v128) (result v128) - (i8x16.add_saturate_s (i8x16.neg (local.get 0)) (local.get 1))) + (i8x16.add_sat_s (i8x16.neg (local.get 0)) (local.get 1))) (func (export "sat-add_u-neg") (param v128 v128) (result v128) - (i8x16.add_saturate_u (i8x16.neg (local.get 0)) (local.get 1))) + (i8x16.add_sat_u (i8x16.neg (local.get 0)) (local.get 1))) (func (export "sat-sub_s-neg") (param v128 v128) (result v128) - (i8x16.sub_saturate_s (i8x16.neg (local.get 0)) (local.get 1))) + (i8x16.sub_sat_s (i8x16.neg (local.get 0)) (local.get 1))) (func (export "sat-sub_u-neg") (param v128 v128) (result v128) - (i8x16.sub_saturate_u (i8x16.neg (local.get 0)) (local.get 1))) + (i8x16.sub_sat_u (i8x16.neg (local.get 0)) (local.get 1))) ) (assert_return (invoke "sat-add_s-sub_s" (v128.const i8x16 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64) diff --git a/test/core/simd/simd_splat.wast b/test/core/simd/simd_splat.wast index fcd88ca27..4be04ef17 100644 --- a/test/core/simd/simd_splat.wast +++ b/test/core/simd/simd_splat.wast @@ -221,14 +221,14 @@ (f64x2.mul (f64x2.splat (local.get 2)) (f64x2.splat (local.get 3)))))) ;; Saturating integer arithmetic - (func (export "as-i8x16_add_saturate_s-operands") (param i32 i32) (result v128) - (i8x16.add_saturate_s (i8x16.splat (local.get 0)) (i8x16.splat (local.get 1)))) - (func (export "as-i16x8_add_saturate_s-operands") (param i32 i32) (result v128) - (i16x8.add_saturate_s (i16x8.splat (local.get 0)) (i16x8.splat (local.get 1)))) - (func (export "as-i8x16_sub_saturate_u-operands") (param i32 i32) (result v128) - (i8x16.sub_saturate_u (i8x16.splat (local.get 0)) (i8x16.splat (local.get 1)))) - (func (export "as-i16x8_sub_saturate_u-operands") (param i32 i32) (result v128) - (i16x8.sub_saturate_u (i16x8.splat (local.get 0)) (i16x8.splat (local.get 1)))) + (func (export "as-i8x16_add_sat_s-operands") (param i32 i32) (result v128) + (i8x16.add_sat_s (i8x16.splat (local.get 0)) (i8x16.splat (local.get 1)))) + (func (export "as-i16x8_add_sat_s-operands") (param i32 i32) (result v128) + (i16x8.add_sat_s (i16x8.splat (local.get 0)) (i16x8.splat (local.get 1)))) + (func (export "as-i8x16_sub_sat_u-operands") (param i32 i32) (result v128) + (i8x16.sub_sat_u (i8x16.splat (local.get 0)) (i8x16.splat (local.get 1)))) + (func (export "as-i16x8_sub_sat_u-operands") (param i32 i32) (result v128) + (i16x8.sub_sat_u (i16x8.splat (local.get 0)) (i16x8.splat (local.get 1)))) ;; Bit shifts (func (export "as-i8x16_shr_s-operand") (param i32 i32) (result v128) @@ -309,10 +309,10 @@ (assert_return (invoke "as-i64x2_add_sub_mul-operands" (i64.const 0x7fffffff) (i64.const 0x1_0000_0001) (i64.const 65536) (i64.const 65536)) (v128.const i64x2 0x8000_0000 0x8000_0000)) (assert_return (invoke "as-f64x2_add_sub_mul-operands" (f64.const 0x1p-1) (f64.const 0.75) (f64.const 0x1p-1) (f64.const 0.5)) (v128.const f64x2 0x1p+0 0x1p+0)) -(assert_return (invoke "as-i8x16_add_saturate_s-operands" (i32.const 0x7f) (i32.const 1)) (v128.const i8x16 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f)) -(assert_return (invoke "as-i16x8_add_saturate_s-operands" (i32.const 0x7fff) (i32.const 1)) (v128.const i16x8 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff)) -(assert_return (invoke "as-i8x16_sub_saturate_u-operands" (i32.const 0x7f) (i32.const 0xff)) (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) -(assert_return (invoke "as-i16x8_sub_saturate_u-operands" (i32.const 0x7fff) (i32.const 0xffff)) (v128.const i16x8 0 0 0 0 0 0 0 0)) +(assert_return (invoke "as-i8x16_add_sat_s-operands" (i32.const 0x7f) (i32.const 1)) (v128.const i8x16 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f 0x7f)) +(assert_return (invoke "as-i16x8_add_sat_s-operands" (i32.const 0x7fff) (i32.const 1)) (v128.const i16x8 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff 0x7fff)) +(assert_return (invoke "as-i8x16_sub_sat_u-operands" (i32.const 0x7f) (i32.const 0xff)) (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) +(assert_return (invoke "as-i16x8_sub_sat_u-operands" (i32.const 0x7fff) (i32.const 0xffff)) (v128.const i16x8 0 0 0 0 0 0 0 0)) (assert_return (invoke "as-i8x16_shr_s-operand" (i32.const 0xf0) (i32.const 3)) (v128.const i8x16 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2 -2)) (assert_return (invoke "as-i16x8_shr_s-operand" (i32.const 0x100) (i32.const 4)) (v128.const i16x8 16 16 16 16 16 16 16 16))