wa-lang.org/wazero@v1.0.2/internal/integration_test/spectest/v2/testdata/simd_lane.wast (about) 1 ;; Tests for the extract_lane, replace_lane, swizzle and shuffle group instructions 2 3 4 (module 5 (func (export "i8x16_extract_lane_s-first") (param v128) (result i32) 6 (i8x16.extract_lane_s 0 (local.get 0))) 7 (func (export "i8x16_extract_lane_s-last") (param v128) (result i32) 8 (i8x16.extract_lane_s 15 (local.get 0))) 9 (func (export "i8x16_extract_lane_u-first") (param v128) (result i32) 10 (i8x16.extract_lane_u 0 (local.get 0))) 11 (func (export "i8x16_extract_lane_u-last") (param v128) (result i32) 12 (i8x16.extract_lane_u 15 (local.get 0))) 13 (func (export "i16x8_extract_lane_s-first") (param v128) (result i32) 14 (i16x8.extract_lane_s 0 (local.get 0))) 15 (func (export "i16x8_extract_lane_s-last") (param v128) (result i32) 16 (i16x8.extract_lane_s 7 (local.get 0))) 17 (func (export "i16x8_extract_lane_u-first") (param v128) (result i32) 18 (i16x8.extract_lane_u 0 (local.get 0))) 19 (func (export "i16x8_extract_lane_u-last") (param v128) (result i32) 20 (i16x8.extract_lane_u 7 (local.get 0))) 21 (func (export "i32x4_extract_lane-first") (param v128) (result i32) 22 (i32x4.extract_lane 0 (local.get 0))) 23 (func (export "i32x4_extract_lane-last") (param v128) (result i32) 24 (i32x4.extract_lane 3 (local.get 0))) 25 (func (export "f32x4_extract_lane-first") (param v128) (result f32) 26 (f32x4.extract_lane 0 (local.get 0))) 27 (func (export "f32x4_extract_lane-last") (param v128) (result f32) 28 (f32x4.extract_lane 3 (local.get 0))) 29 (func (export "i8x16_replace_lane-first") (param v128 i32) (result v128) 30 (i8x16.replace_lane 0 (local.get 0) (local.get 1))) 31 (func (export "i8x16_replace_lane-last") (param v128 i32) (result v128) 32 (i8x16.replace_lane 15 (local.get 0) (local.get 1))) 33 (func (export "i16x8_replace_lane-first") (param v128 i32) (result v128) 34 (i16x8.replace_lane 0 (local.get 0) (local.get 1))) 35 (func (export "i16x8_replace_lane-last") (param v128 i32) (result v128) 36 (i16x8.replace_lane 7 (local.get 0) (local.get 1))) 37 (func (export "i32x4_replace_lane-first") (param v128 i32) (result v128) 38 (i32x4.replace_lane 0 (local.get 0) (local.get 1))) 39 (func (export "i32x4_replace_lane-last") (param v128 i32) (result v128) 40 (i32x4.replace_lane 3 (local.get 0) (local.get 1))) 41 (func (export "f32x4_replace_lane-first") (param v128 f32) (result v128) 42 (f32x4.replace_lane 0 (local.get 0) (local.get 1))) 43 (func (export "f32x4_replace_lane-last") (param v128 f32) (result v128) 44 (f32x4.replace_lane 3 (local.get 0) (local.get 1))) 45 (func (export "i64x2_extract_lane-first") (param v128) (result i64) 46 (i64x2.extract_lane 0 (local.get 0))) 47 (func (export "i64x2_extract_lane-last") (param v128) (result i64) 48 (i64x2.extract_lane 1 (local.get 0))) 49 (func (export "f64x2_extract_lane-first") (param v128) (result f64) 50 (f64x2.extract_lane 0 (local.get 0))) 51 (func (export "f64x2_extract_lane-last") (param v128) (result f64) 52 (f64x2.extract_lane 1 (local.get 0))) 53 (func (export "i64x2_replace_lane-first") (param v128 i64) (result v128) 54 (i64x2.replace_lane 0 (local.get 0) (local.get 1))) 55 (func (export "i64x2_replace_lane-last") (param v128 i64) (result v128) 56 (i64x2.replace_lane 1 (local.get 0) (local.get 1))) 57 (func (export "f64x2_replace_lane-first") (param v128 f64) (result v128) 58 (f64x2.replace_lane 0 (local.get 0) (local.get 1))) 59 (func (export "f64x2_replace_lane-last") (param v128 f64) (result v128) 60 (f64x2.replace_lane 1 (local.get 0) (local.get 1))) 61 62 ;; Swizzle and shuffle 63 (func (export "v8x16_swizzle") (param v128 v128) (result v128) 64 (i8x16.swizzle (local.get 0) (local.get 1))) 65 (func (export "v8x16_shuffle-1") (param v128 v128) (result v128) 66 (i8x16.shuffle 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 (local.get 0) (local.get 1))) 67 (func (export "v8x16_shuffle-2") (param v128 v128) (result v128) 68 (i8x16.shuffle 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 (local.get 0) (local.get 1))) 69 (func (export "v8x16_shuffle-3") (param v128 v128) (result v128) 70 (i8x16.shuffle 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 (local.get 0) (local.get 1))) 71 (func (export "v8x16_shuffle-4") (param v128 v128) (result v128) 72 (i8x16.shuffle 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 (local.get 0) (local.get 1))) 73 (func (export "v8x16_shuffle-5") (param v128 v128) (result v128) 74 (i8x16.shuffle 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 (local.get 0) (local.get 1))) 75 (func (export "v8x16_shuffle-6") (param v128 v128) (result v128) 76 (i8x16.shuffle 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 16 (local.get 0) (local.get 1))) 77 (func (export "v8x16_shuffle-7") (param v128 v128) (result v128) 78 (i8x16.shuffle 0 0 0 0 0 0 0 0 16 16 16 16 16 16 16 16 (local.get 0) (local.get 1))) 79 ) 80 81 (assert_return (invoke "i8x16_extract_lane_s-first" (v128.const i8x16 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) (i32.const 127)) 82 (assert_return (invoke "i8x16_extract_lane_s-first" (v128.const i8x16 0x7f 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) (i32.const 127)) 83 (assert_return (invoke "i8x16_extract_lane_s-first" (v128.const i8x16 255 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) (i32.const -1)) 84 (assert_return (invoke "i8x16_extract_lane_s-first" (v128.const i8x16 0xff 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) (i32.const -1)) 85 (assert_return (invoke "i8x16_extract_lane_u-first" (v128.const i8x16 255 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) (i32.const 255)) 86 (assert_return (invoke "i8x16_extract_lane_u-first" (v128.const i8x16 0xff 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) (i32.const 255)) 87 (assert_return (invoke "i8x16_extract_lane_s-last" (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -128)) (i32.const -128)) 88 (assert_return (invoke "i8x16_extract_lane_s-last" (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0x80)) (i32.const -128)) 89 (assert_return (invoke "i8x16_extract_lane_u-last" (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -1)) (i32.const 255)) 90 (assert_return (invoke "i8x16_extract_lane_u-last" (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0xff)) (i32.const 255)) 91 (assert_return (invoke "i8x16_extract_lane_u-last" (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -128)) (i32.const 128)) 92 (assert_return (invoke "i8x16_extract_lane_u-last" (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0x80)) (i32.const 128)) 93 94 (assert_return (invoke "i16x8_extract_lane_s-first" (v128.const i16x8 32767 0 0 0 0 0 0 0)) (i32.const 32767)) 95 (assert_return (invoke "i16x8_extract_lane_s-first" (v128.const i16x8 0x7fff 0 0 0 0 0 0 0)) (i32.const 32767)) 96 (assert_return (invoke "i16x8_extract_lane_s-first" (v128.const i16x8 65535 0 0 0 0 0 0 0)) (i32.const -1)) 97 (assert_return (invoke "i16x8_extract_lane_s-first" (v128.const i16x8 0xffff 0 0 0 0 0 0 0)) (i32.const -1)) 98 (assert_return (invoke "i16x8_extract_lane_s-first" (v128.const i16x8 012_345 0 0 0 0 0 0 0)) (i32.const 12345)) 99 (assert_return (invoke "i16x8_extract_lane_s-first" (v128.const i16x8 -0x0_1234 0 0 0 0 0 0 0)) (i32.const -0x1234)) 100 (assert_return (invoke "i16x8_extract_lane_u-first" (v128.const i16x8 65535 0 0 0 0 0 0 0)) (i32.const 65535)) 101 (assert_return (invoke "i16x8_extract_lane_u-first" (v128.const i16x8 0xffff 0 0 0 0 0 0 0)) (i32.const 65535)) 102 (assert_return (invoke "i16x8_extract_lane_u-first" (v128.const i16x8 012_345 0 0 0 0 0 0 0)) (i32.const 12345)) 103 (assert_return (invoke "i16x8_extract_lane_u-first" (v128.const i16x8 -0x0_1234 0 0 0 0 0 0 0)) (i32.const 60876)) 104 (assert_return (invoke "i16x8_extract_lane_s-last" (v128.const i16x8 0 0 0 0 0 0 0 -32768)) (i32.const -32768)) 105 (assert_return (invoke "i16x8_extract_lane_s-last" (v128.const i16x8 0 0 0 0 0 0 0 0x8000)) (i32.const -32768)) 106 (assert_return (invoke "i16x8_extract_lane_s-last" (v128.const i16x8 0 0 0 0 0 0 0 06_789)) (i32.const 6789)) 107 (assert_return (invoke "i16x8_extract_lane_s-last" (v128.const i16x8 0 0 0 0 0 0 0 -0x0_6789)) (i32.const -0x6789)) 108 (assert_return (invoke "i16x8_extract_lane_u-last" (v128.const i16x8 0 0 0 0 0 0 0 -1)) (i32.const 65535)) 109 (assert_return (invoke "i16x8_extract_lane_u-last" (v128.const i16x8 0 0 0 0 0 0 0 0xffff)) (i32.const 65535)) 110 (assert_return (invoke "i16x8_extract_lane_u-last" (v128.const i16x8 0 0 0 0 0 0 0 -32768)) (i32.const 32768)) 111 (assert_return (invoke "i16x8_extract_lane_u-last" (v128.const i16x8 0 0 0 0 0 0 0 0x8000)) (i32.const 32768)) 112 (assert_return (invoke "i16x8_extract_lane_u-last" (v128.const i16x8 0 0 0 0 0 0 0 06_789)) (i32.const 6789)) 113 (assert_return (invoke "i16x8_extract_lane_u-last" (v128.const i16x8 0 0 0 0 0 0 0 -0x0_6789)) (i32.const 39031)) 114 115 (assert_return (invoke "i32x4_extract_lane-first" (v128.const i32x4 2147483647 0 0 0)) (i32.const 2147483647)) 116 (assert_return (invoke "i32x4_extract_lane-first" (v128.const i32x4 0x7fffffff 0 0 0)) (i32.const 2147483647)) 117 (assert_return (invoke "i32x4_extract_lane-first" (v128.const i32x4 4294967295 0 0 0)) (i32.const -1)) 118 (assert_return (invoke "i32x4_extract_lane-first" (v128.const i32x4 0xffffffff 0 0 0)) (i32.const -1)) 119 (assert_return (invoke "i32x4_extract_lane-first" (v128.const i32x4 01_234_567_890 0 0 0)) (i32.const 1234567890)) 120 (assert_return (invoke "i32x4_extract_lane-first" (v128.const i32x4 -0x0_1234_5678 0 0 0)) (i32.const -0x12345678)) 121 (assert_return (invoke "i32x4_extract_lane-last" (v128.const i32x4 0 0 0 -2147483648)) (i32.const -2147483648)) 122 (assert_return (invoke "i32x4_extract_lane-last" (v128.const i32x4 0 0 0 0x80000000)) (i32.const -2147483648)) 123 (assert_return (invoke "i32x4_extract_lane-last" (v128.const i32x4 0 0 0 -1)) (i32.const -1)) 124 (assert_return (invoke "i32x4_extract_lane-last" (v128.const i32x4 0 0 0 0xffffffff)) (i32.const -1)) 125 (assert_return (invoke "i32x4_extract_lane-last" (v128.const i32x4 0 0 0 0_987_654_321)) (i32.const 987654321)) 126 (assert_return (invoke "i32x4_extract_lane-last" (v128.const i32x4 0 0 0 -0x0_1234_5678)) (i32.const -0x12345678)) 127 128 (assert_return (invoke "i64x2_extract_lane-first" (v128.const i64x2 9223372036854775807 0)) (i64.const 9223372036854775807)) 129 (assert_return (invoke "i64x2_extract_lane-first" (v128.const i64x2 0x7ffffffffffffffe 0)) (i64.const 0x7ffffffffffffffe)) 130 (assert_return (invoke "i64x2_extract_lane-first" (v128.const i64x2 18446744073709551615 0)) (i64.const -1)) 131 (assert_return (invoke "i64x2_extract_lane-first" (v128.const i64x2 0xffffffffffffffff 0)) (i64.const -1)) 132 (assert_return (invoke "i64x2_extract_lane-first" (v128.const i64x2 01_234_567_890_123_456_789 0)) (i64.const 1234567890123456789)) 133 (assert_return (invoke "i64x2_extract_lane-first" (v128.const i64x2 0x0_1234_5678_90AB_cdef 0)) (i64.const 0x1234567890abcdef)) 134 (assert_return (invoke "i64x2_extract_lane-last" (v128.const i64x2 0 9223372036854775808)) (i64.const -9223372036854775808)) 135 (assert_return (invoke "i64x2_extract_lane-last" (v128.const i64x2 0 0x8000000000000000)) (i64.const -0x8000000000000000)) 136 (assert_return (invoke "i64x2_extract_lane-last" (v128.const i64x2 0 0x8000000000000000)) (i64.const 0x8000000000000000)) 137 (assert_return (invoke "i64x2_extract_lane-last" (v128.const i8x16 0 0 0 0 0 0 0 0 0xff 0xff 0xff 0xff 0xff 0xff 0xff 0x7f)) (i64.const 9223372036854775807)) 138 (assert_return (invoke "i64x2_extract_lane-last" (v128.const i16x8 0 0 0 0 0 0 0 0x8000)) (i64.const -9223372036854775808)) 139 (assert_return (invoke "i64x2_extract_lane-last" (v128.const i32x4 0 0 0xffffffff 0x7fffffff)) (i64.const 9223372036854775807)) 140 (assert_return (invoke "i64x2_extract_lane-last" (v128.const f64x2 -inf +inf)) (i64.const 0x7ff0000000000000)) 141 (assert_return (invoke "i64x2_extract_lane-last" (v128.const i64x2 0 01_234_567_890_123_456_789)) (i64.const 1234567890123456789)) 142 (assert_return (invoke "i64x2_extract_lane-last" (v128.const i64x2 0 0x0_1234_5678_90AB_cdef)) (i64.const 0x1234567890abcdef)) 143 144 (assert_return (invoke "f32x4_extract_lane-first" (v128.const f32x4 -5.0 0.0 0.0 0.0)) (f32.const -5.0)) 145 (assert_return (invoke "f32x4_extract_lane-first" (v128.const f32x4 1e38 0.0 0.0 0.0)) (f32.const 1e38)) 146 (assert_return (invoke "f32x4_extract_lane-first" (v128.const f32x4 0x1.fffffep127 0.0 0.0 0.0)) (f32.const 0x1.fffffep127)) 147 (assert_return (invoke "f32x4_extract_lane-first" (v128.const f32x4 0x1p127 0.0 0.0 0.0)) (f32.const 0x1p127)) 148 (assert_return (invoke "f32x4_extract_lane-first" (v128.const f32x4 inf 0.0 0.0 0.0)) (f32.const inf)) 149 (assert_return (invoke "f32x4_extract_lane-first" (v128.const f32x4 nan inf 0.0 0.0)) (f32.const nan)) 150 (assert_return (invoke "f32x4_extract_lane-first" (v128.const f32x4 0123456789.0123456789e+019 0.0 0.0 0.0)) (f32.const 123456789.0123456789e+019)) 151 (assert_return (invoke "f32x4_extract_lane-first" (v128.const f32x4 0x0123456789ABCDEF.019aFp-019 0.0 0.0 0.0)) (f32.const 0x123456789ABCDEF.019aFp-019)) 152 (assert_return (invoke "f32x4_extract_lane-last" (v128.const f32x4 0.0 0.0 0.0 -1e38)) (f32.const -1e38)) 153 (assert_return (invoke "f32x4_extract_lane-last" (v128.const f32x4 0.0 0.0 0.0 -0x1.fffffep127)) (f32.const -0x1.fffffep127)) 154 (assert_return (invoke "f32x4_extract_lane-last" (v128.const f32x4 0.0 0.0 0.0 -0x1p127)) (f32.const -0x1p127)) 155 (assert_return (invoke "f32x4_extract_lane-last" (v128.const f32x4 0.0 0.0 0.0 -inf)) (f32.const -inf)) 156 (assert_return (invoke "f32x4_extract_lane-last" (v128.const f32x4 0.0 0.0 -inf nan)) (f32.const nan)) 157 (assert_return (invoke "f32x4_extract_lane-last" (v128.const f32x4 0.0 0.0 0.0 0123456789.)) (f32.const 123456789.0)) 158 (assert_return (invoke "f32x4_extract_lane-last" (v128.const f32x4 0.0 0.0 0.0 0x0123456789ABCDEF.)) (f32.const 0x123456789ABCDEF.0p0)) 159 160 (assert_return (invoke "f64x2_extract_lane-first" (v128.const f64x2 -1.5 0.0)) (f64.const -1.5)) 161 (assert_return (invoke "f64x2_extract_lane-first" (v128.const f64x2 1.5 0.0)) (f64.const 1.5)) 162 (assert_return (invoke "f64x2_extract_lane-first" (v128.const f64x2 -1.7976931348623157e-308 0x0p+0)) (f64.const -1.7976931348623157e-308)) 163 (assert_return (invoke "f64x2_extract_lane-first" (v128.const f64x2 1.7976931348623157e-308 0x0p-0)) (f64.const 1.7976931348623157e-308)) 164 (assert_return (invoke "f64x2_extract_lane-first" (v128.const f64x2 -0x1.fffffffffffffp-1023 0x0p+0)) (f64.const -0x1.fffffffffffffp-1023)) 165 (assert_return (invoke "f64x2_extract_lane-first" (v128.const f64x2 0x1.fffffffffffffp-1023 0x0p-0)) (f64.const 0x1.fffffffffffffp-1023)) 166 (assert_return (invoke "f64x2_extract_lane-first" (v128.const f64x2 -inf 0.0)) (f64.const -inf)) 167 (assert_return (invoke "f64x2_extract_lane-first" (v128.const f64x2 inf 0.0)) (f64.const inf)) 168 (assert_return (invoke "f64x2_extract_lane-first" (v128.const f64x2 -nan -0.0)) (f64.const -nan)) 169 (assert_return (invoke "f64x2_extract_lane-first" (v128.const f64x2 nan 0.0)) (f64.const nan)) 170 (assert_return (invoke "f64x2_extract_lane-first" (v128.const f64x2 0123456789.0123456789e+019 0.0)) (f64.const 123456789.0123456789e+019)) 171 (assert_return (invoke "f64x2_extract_lane-first" (v128.const f64x2 0x0123456789ABCDEFabcdef.0123456789ABCDEFabcdefp-019 0.0)) (f64.const 0x123456789ABCDEFabcdef.0123456789ABCDEFabcdefp-019)) 172 (assert_return (invoke "f64x2_extract_lane-last" (v128.const f64x2 0.0 2.25)) (f64.const 2.25)) 173 (assert_return (invoke "f64x2_extract_lane-last" (v128.const f64x2 0.0 -2.25)) (f64.const -2.25)) 174 (assert_return (invoke "f64x2_extract_lane-last" (v128.const f64x2 0x0p-0 -1.7976931348623157e+308)) (f64.const -1.7976931348623157e+308)) 175 (assert_return (invoke "f64x2_extract_lane-last" (v128.const f64x2 0x0p+0 1.7976931348623157e+308)) (f64.const 1.7976931348623157e+308)) 176 (assert_return (invoke "f64x2_extract_lane-last" (v128.const f64x2 0x0p-0 -0x1.fffffffffffffp+1023)) (f64.const -0x1.fffffffffffffp+1023)) 177 (assert_return (invoke "f64x2_extract_lane-last" (v128.const f64x2 0x0p+0 0x1.fffffffffffffp+1023)) (f64.const 0x1.fffffffffffffp+1023)) 178 (assert_return (invoke "f64x2_extract_lane-last" (v128.const f64x2 -0.0 -inf)) (f64.const -inf)) 179 (assert_return (invoke "f64x2_extract_lane-last" (v128.const f64x2 0.0 inf)) (f64.const inf)) 180 (assert_return (invoke "f64x2_extract_lane-last" (v128.const f64x2 -0.0 -nan)) (f64.const -nan)) 181 (assert_return (invoke "f64x2_extract_lane-last" (v128.const f64x2 0.0 nan)) (f64.const nan)) 182 (assert_return (invoke "f64x2_extract_lane-last" (v128.const f64x2 0.0 0123456789.)) (f64.const 123456789.0)) 183 (assert_return (invoke "f64x2_extract_lane-last" (v128.const f64x2 0.0 0x0123456789ABCDEFabcdef.)) (f64.const 0x123456789ABCDEFabcdef.0)) 184 185 (assert_return (invoke "f64x2_extract_lane-last" (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) (f64.const 0.0)) 186 (assert_return (invoke "f64x2_extract_lane-last" (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0x80)) (f64.const -0.0)) 187 (assert_return (invoke "f64x2_extract_lane-last" (v128.const i16x8 0 0 0 0 0 0 0 0x4000)) (f64.const 2.0)) 188 (assert_return (invoke "f64x2_extract_lane-last" (v128.const i16x8 0 0 0 0 0 0 0 0xc000)) (f64.const -2.0)) 189 (assert_return (invoke "f64x2_extract_lane-last" (v128.const i32x4 0 0 0xffffffff 0x7fefffff)) (f64.const 0x1.fffffffffffffp+1023)) 190 (assert_return (invoke "f64x2_extract_lane-last" (v128.const i32x4 0 0 0 0x00100000)) (f64.const 0x1.0000000000000p-1022)) 191 (assert_return (invoke "f64x2_extract_lane-last" (v128.const i32x4 0 0 0xffffffff 0x000fffff)) (f64.const 0x1.ffffffffffffep-1023)) 192 (assert_return (invoke "f64x2_extract_lane-last" (v128.const i32x4 0 0 1 0)) (f64.const 0x0.0000000000002p-1023)) 193 194 (assert_return (invoke "i8x16_replace_lane-first" (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0) (i32.const 127)) (v128.const i8x16 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) 195 (assert_return (invoke "i8x16_replace_lane-first" (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0) (i32.const 128)) (v128.const i8x16 -128 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) 196 (assert_return (invoke "i8x16_replace_lane-first" (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0) (i32.const 255)) (v128.const i8x16 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) 197 (assert_return (invoke "i8x16_replace_lane-first" (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0) (i32.const 256)) (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) 198 (assert_return (invoke "i8x16_replace_lane-last" (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0) (i32.const -128)) (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 -128)) 199 (assert_return (invoke "i8x16_replace_lane-last" (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0) (i32.const -129)) (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127)) 200 (assert_return (invoke "i8x16_replace_lane-last" (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0) (i32.const 32767)) (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0xff)) 201 (assert_return (invoke "i8x16_replace_lane-last" (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0) (i32.const -32768)) (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) 202 203 (assert_return (invoke "i16x8_replace_lane-first" (v128.const i16x8 0 0 0 0 0 0 0 0) (i32.const 32767)) (v128.const i16x8 32767 0 0 0 0 0 0 0)) 204 (assert_return (invoke "i16x8_replace_lane-first" (v128.const i16x8 0 0 0 0 0 0 0 0) (i32.const 32768)) (v128.const i16x8 -32768 0 0 0 0 0 0 0)) 205 (assert_return (invoke "i16x8_replace_lane-first" (v128.const i16x8 0 0 0 0 0 0 0 0) (i32.const 65535)) (v128.const i16x8 -1 0 0 0 0 0 0 0)) 206 (assert_return (invoke "i16x8_replace_lane-first" (v128.const i16x8 0 0 0 0 0 0 0 0) (i32.const 65536)) (v128.const i16x8 0 0 0 0 0 0 0 0)) 207 (assert_return (invoke "i16x8_replace_lane-first" (v128.const i16x8 0 0 0 0 0 0 0 0) (i32.const 012345)) (v128.const i16x8 012_345 0 0 0 0 0 0 0)) 208 (assert_return (invoke "i16x8_replace_lane-first" (v128.const i16x8 0 0 0 0 0 0 0 0) (i32.const -0x01234)) (v128.const i16x8 -0x0_1234 0 0 0 0 0 0 0)) 209 (assert_return (invoke "i16x8_replace_lane-last" (v128.const i16x8 0 0 0 0 0 0 0 0) (i32.const -32768)) (v128.const i16x8 0 0 0 0 0 0 0 -32768)) 210 (assert_return (invoke "i16x8_replace_lane-last" (v128.const i16x8 0 0 0 0 0 0 0 0) (i32.const -32769)) (v128.const i16x8 0 0 0 0 0 0 0 32767)) 211 (assert_return (invoke "i16x8_replace_lane-last" (v128.const i16x8 0 0 0 0 0 0 0 0) (i32.const 0x7fffffff)) (v128.const i16x8 0 0 0 0 0 0 0 0xffff)) 212 (assert_return (invoke "i16x8_replace_lane-last" (v128.const i16x8 0 0 0 0 0 0 0 0) (i32.const 0x80000000)) (v128.const i16x8 0 0 0 0 0 0 0 0)) 213 (assert_return (invoke "i16x8_replace_lane-last" (v128.const i16x8 0 0 0 0 0 0 0 0) (i32.const 054321)) (v128.const i16x8 0 0 0 0 0 0 0 054_321)) 214 (assert_return (invoke "i16x8_replace_lane-last" (v128.const i16x8 0 0 0 0 0 0 0 0) (i32.const -0x04321)) (v128.const i16x8 0 0 0 0 0 0 0 -0x0_4321)) 215 216 (assert_return (invoke "i32x4_replace_lane-first" (v128.const i32x4 0 0 0 0) (i32.const 2147483647)) (v128.const i32x4 2147483647 0 0 0)) 217 (assert_return (invoke "i32x4_replace_lane-first" (v128.const i32x4 0 0 0 0) (i32.const 4294967295)) (v128.const i32x4 -1 0 0 0)) 218 (assert_return (invoke "i32x4_replace_lane-first" (v128.const i32x4 0 0 0 0) (i32.const 01234567890)) (v128.const i32x4 01_234_567_890 0 0 0)) 219 (assert_return (invoke "i32x4_replace_lane-first" (v128.const i32x4 0 0 0 0) (i32.const -0x012345678)) (v128.const i32x4 -0x0_1234_5678 0 0 0)) 220 (assert_return (invoke "i32x4_replace_lane-last" (v128.const i32x4 0 0 0 0) (i32.const 2147483648)) (v128.const i32x4 0 0 0 2147483648)) 221 (assert_return (invoke "i32x4_replace_lane-last" (v128.const i32x4 0 0 0 0) (i32.const -2147483648)) (v128.const i32x4 0 0 0 -2147483648)) 222 (assert_return (invoke "i32x4_replace_lane-last" (v128.const i32x4 0 0 0 0) (i32.const 01234567890)) (v128.const i32x4 0 0 0 01_234_567_890)) 223 (assert_return (invoke "i32x4_replace_lane-last" (v128.const i32x4 0 0 0 0) (i32.const -0x012345678)) (v128.const i32x4 0 0 0 -0x0_1234_5678)) 224 225 (assert_return (invoke "f32x4_replace_lane-first" (v128.const f32x4 0.0 0.0 0.0 0.0) (f32.const 53.0)) (v128.const f32x4 53.0 0.0 0.0 0.0)) 226 (assert_return (invoke "f32x4_replace_lane-first" (v128.const i32x4 0 0 0 0 ) (f32.const 53.0)) (v128.const f32x4 53.0 0.0 0.0 0.0)) 227 (assert_return (invoke "f32x4_replace_lane-first" (v128.const f32x4 0.0 0.0 0.0 0.0) (f32.const nan)) (v128.const f32x4 nan 0.0 0.0 0.0)) 228 (assert_return (invoke "f32x4_replace_lane-first" (v128.const f32x4 0.0 0.0 0.0 0.0) (f32.const inf)) (v128.const f32x4 inf 0.0 0.0 0.0)) 229 (assert_return (invoke "f32x4_replace_lane-first" (v128.const f32x4 nan 0.0 0.0 0.0) (f32.const 3.14)) (v128.const f32x4 3.14 0.0 0.0 0.0)) 230 (assert_return (invoke "f32x4_replace_lane-first" (v128.const f32x4 inf 0.0 0.0 0.0) (f32.const 1e38)) (v128.const f32x4 1e38 0.0 0.0 0.0)) 231 (assert_return (invoke "f32x4_replace_lane-first" (v128.const f32x4 inf 0.0 0.0 0.0) (f32.const 0x1.fffffep127)) (v128.const f32x4 0x1.fffffep127 0.0 0.0 0.0)) 232 (assert_return (invoke "f32x4_replace_lane-first" (v128.const f32x4 inf 0.0 0.0 0.0) (f32.const 0x1p127)) (v128.const f32x4 0x1p127 0.0 0.0 0.0)) 233 (assert_return (invoke "f32x4_replace_lane-first" (v128.const f32x4 0.0 0.0 0.0 0.0) (f32.const 0123456789)) (v128.const f32x4 0123456789 0.0 0.0 0.0)) 234 (assert_return (invoke "f32x4_replace_lane-first" (v128.const f32x4 0.0 0.0 0.0 0.0) (f32.const 0123456789.)) (v128.const f32x4 0123456789. 0.0 0.0 0.0)) 235 (assert_return (invoke "f32x4_replace_lane-first" (v128.const f32x4 0.0 0.0 0.0 0.0) (f32.const 0x0123456789ABCDEF)) (v128.const f32x4 0x0123456789ABCDEF 0.0 0.0 0.0)) 236 (assert_return (invoke "f32x4_replace_lane-first" (v128.const f32x4 0.0 0.0 0.0 0.0) (f32.const 0x0123456789ABCDEF.)) (v128.const f32x4 0x0123456789ABCDEF. 0.0 0.0 0.0)) 237 (assert_return (invoke "f32x4_replace_lane-last" (v128.const f32x4 0.0 0.0 0.0 0.0) (f32.const -53.0)) (v128.const f32x4 0.0 0.0 0.0 -53.0)) 238 (assert_return (invoke "f32x4_replace_lane-last" (v128.const i32x4 0 0 0 0) (f32.const -53.0)) (v128.const f32x4 0.0 0.0 0.0 -53.0)) 239 (assert_return (invoke "f32x4_replace_lane-last" (v128.const f32x4 0.0 0.0 0.0 0.0) (f32.const nan)) (v128.const f32x4 0.0 0.0 0.0 nan)) 240 (assert_return (invoke "f32x4_replace_lane-last" (v128.const f32x4 0.0 0.0 0.0 0.0) (f32.const -inf)) (v128.const f32x4 0.0 0.0 0.0 -inf)) 241 (assert_return (invoke "f32x4_replace_lane-last" (v128.const f32x4 0.0 0.0 0.0 nan) (f32.const 3.14)) (v128.const f32x4 0.0 0.0 0.0 3.14)) 242 (assert_return (invoke "f32x4_replace_lane-last" (v128.const f32x4 0.0 0.0 0.0 -inf) (f32.const -1e38)) (v128.const f32x4 0.0 0.0 0.0 -1e38)) 243 (assert_return (invoke "f32x4_replace_lane-last" (v128.const f32x4 0.0 0.0 0.0 -inf) (f32.const -0x1.fffffep127)) (v128.const f32x4 0.0 0.0 0.0 -0x1.fffffep127)) 244 (assert_return (invoke "f32x4_replace_lane-last" (v128.const f32x4 0.0 0.0 0.0 -inf) (f32.const -0x1p127)) (v128.const f32x4 0.0 0.0 0.0 -0x1p127)) 245 (assert_return (invoke "f32x4_replace_lane-last" (v128.const f32x4 0.0 0.0 0.0 0.0) (f32.const 0123456789e019)) (v128.const f32x4 0.0 0.0 0.0 0123456789e019)) 246 (assert_return (invoke "f32x4_replace_lane-last" (v128.const f32x4 0.0 0.0 0.0 0.0) (f32.const 0123456789.e+019)) (v128.const f32x4 0.0 0.0 0.0 0123456789.e+019)) 247 (assert_return (invoke "f32x4_replace_lane-last" (v128.const f32x4 0.0 0.0 0.0 0.0) (f32.const 0x0123456789ABCDEFp019)) (v128.const f32x4 0.0 0.0 0.0 0x0123456789ABCDEFp019)) 248 (assert_return (invoke "f32x4_replace_lane-last" (v128.const f32x4 0.0 0.0 0.0 0.0) (f32.const 0x0123456789ABCDEF.p-019)) (v128.const f32x4 0.0 0.0 0.0 0x0123456789ABCDEF.p-019)) 249 250 (assert_return (invoke "i64x2_replace_lane-first" (v128.const i64x2 0 0) (i64.const 9223372036854775807)) (v128.const i64x2 9223372036854775807 0)) 251 (assert_return (invoke "i64x2_replace_lane-first" (v128.const i64x2 0 0) (i64.const 18446744073709551615)) (v128.const i64x2 -1 0)) 252 (assert_return (invoke "i64x2_replace_lane-first" (v128.const i64x2 0 0) (i64.const 01234567890123456789)) (v128.const i64x2 01_234_567_890_123_456_789 0)) 253 (assert_return (invoke "i64x2_replace_lane-first" (v128.const i64x2 0 0) (i64.const 0x01234567890abcdef)) (v128.const i64x2 0x0_1234_5678_90AB_cdef 0)) 254 (assert_return (invoke "i64x2_replace_lane-last" (v128.const i64x2 0 0) (i64.const 9223372036854775808)) (v128.const i64x2 0 9223372036854775808)) 255 (assert_return (invoke "i64x2_replace_lane-last" (v128.const i64x2 0 0) (i64.const 9223372036854775808)) (v128.const i64x2 0 -9223372036854775808)) 256 (assert_return (invoke "i64x2_replace_lane-last" (v128.const i64x2 0 0) (i64.const 01234567890123456789)) (v128.const i64x2 0 01_234_567_890_123_456_789)) 257 (assert_return (invoke "i64x2_replace_lane-last" (v128.const i64x2 0 0) (i64.const 0x01234567890abcdef)) (v128.const i64x2 0 0x0_1234_5678_90AB_cdef)) 258 259 (assert_return (invoke "f64x2_replace_lane-first" (v128.const f64x2 1.0 1.0) (f64.const 0x0p+0)) (v128.const f64x2 0.0 1.0)) 260 (assert_return (invoke "f64x2_replace_lane-first" (v128.const f64x2 -1.0 -1.0) (f64.const -0x0p-0)) (v128.const f64x2 -0.0 -1.0)) 261 (assert_return (invoke "f64x2_replace_lane-first" (v128.const f64x2 0.0 0.0) (f64.const 1.25)) (v128.const f64x2 1.25 0.0)) 262 (assert_return (invoke "f64x2_replace_lane-first" (v128.const f64x2 0.0 0.0) (f64.const -1.25)) (v128.const f64x2 -1.25 0.0)) 263 (assert_return (invoke "f64x2_replace_lane-first" (v128.const f64x2 -nan 0.0) (f64.const -1.7976931348623157e+308)) (v128.const f64x2 -1.7976931348623157e+308 0.0)) 264 (assert_return (invoke "f64x2_replace_lane-first" (v128.const f64x2 nan 0.0) (f64.const 1.7976931348623157e+308)) (v128.const f64x2 1.7976931348623157e+308 0.0)) 265 (assert_return (invoke "f64x2_replace_lane-first" (v128.const f64x2 -inf 0.0) (f64.const -0x1.fffffffffffffp-1023)) (v128.const f64x2 -0x1.fffffffffffffp-1023 0.0)) 266 (assert_return (invoke "f64x2_replace_lane-first" (v128.const f64x2 inf 0.0) (f64.const 0x1.fffffffffffffp-1023)) (v128.const f64x2 0x1.fffffffffffffp-1023 0.0)) 267 (assert_return (invoke "f64x2_replace_lane-first" (v128.const f64x2 0.0 0.0) (f64.const -nan)) (v128.const f64x2 -nan 0.0)) 268 (assert_return (invoke "f64x2_replace_lane-first" (v128.const f64x2 0.0 0.0) (f64.const nan)) (v128.const f64x2 nan 0.0)) 269 (assert_return (invoke "f64x2_replace_lane-first" (v128.const f64x2 0.0 0.0) (f64.const -inf)) (v128.const f64x2 -inf 0.0)) 270 (assert_return (invoke "f64x2_replace_lane-first" (v128.const f64x2 0.0 0.0) (f64.const inf)) (v128.const f64x2 inf 0.0)) 271 (assert_return (invoke "f64x2_replace_lane-first" (v128.const f64x2 0.0 0.0) (f64.const 0123456789)) (v128.const f64x2 0123456789 0.0)) 272 (assert_return (invoke "f64x2_replace_lane-first" (v128.const f64x2 0.0 0.0) (f64.const 0123456789.)) (v128.const f64x2 0123456789. 0.0)) 273 (assert_return (invoke "f64x2_replace_lane-first" (v128.const f64x2 0.0 0.0) (f64.const 0x0123456789ABCDEFabcdef)) (v128.const f64x2 0x0123456789ABCDEFabcdef 0.0)) 274 (assert_return (invoke "f64x2_replace_lane-first" (v128.const f64x2 0.0 0.0) (f64.const 0x0123456789ABCDEFabcdef.)) (v128.const f64x2 0x0123456789ABCDEFabcdef. 0.0)) 275 (assert_return (invoke "f64x2_replace_lane-last" (v128.const f64x2 2.0 2.0) (f64.const 0.0)) (v128.const f64x2 2.0 0.0)) 276 (assert_return (invoke "f64x2_replace_lane-last" (v128.const f64x2 -2.0 -2.0) (f64.const -0.0)) (v128.const f64x2 -2.0 -0.0)) 277 (assert_return (invoke "f64x2_replace_lane-last" (v128.const f64x2 0.0 0.0) (f64.const 2.25)) (v128.const f64x2 0.0 2.25)) 278 (assert_return (invoke "f64x2_replace_lane-last" (v128.const f64x2 0.0 0.0) (f64.const -2.25)) (v128.const f64x2 0.0 -2.25)) 279 (assert_return (invoke "f64x2_replace_lane-last" (v128.const f64x2 0.0 -nan) (f64.const -1.7976931348623157e+308)) (v128.const f64x2 0.0 -1.7976931348623157e+308)) 280 (assert_return (invoke "f64x2_replace_lane-last" (v128.const f64x2 0.0 nan) (f64.const 1.7976931348623157e+308)) (v128.const f64x2 0.0 1.7976931348623157e+308)) 281 (assert_return (invoke "f64x2_replace_lane-last" (v128.const f64x2 0.0 -inf) (f64.const -0x1.fffffffffffffp-1023)) (v128.const f64x2 0.0 -0x1.fffffffffffffp-1023)) 282 (assert_return (invoke "f64x2_replace_lane-last" (v128.const f64x2 0.0 inf) (f64.const 0x1.fffffffffffffp-1023)) (v128.const f64x2 0.0 0x1.fffffffffffffp-1023)) 283 (assert_return (invoke "f64x2_replace_lane-last" (v128.const f64x2 0.0 0.0) (f64.const -nan)) (v128.const f64x2 0.0 -nan)) 284 (assert_return (invoke "f64x2_replace_lane-last" (v128.const f64x2 0.0 0.0) (f64.const nan)) (v128.const f64x2 0.0 nan)) 285 (assert_return (invoke "f64x2_replace_lane-last" (v128.const f64x2 0.0 0.0) (f64.const -inf)) (v128.const f64x2 0.0 -inf)) 286 (assert_return (invoke "f64x2_replace_lane-last" (v128.const f64x2 0.0 0.0) (f64.const inf)) (v128.const f64x2 0.0 inf)) 287 (assert_return (invoke "f64x2_replace_lane-last" (v128.const f64x2 0.0 0.0) (f64.const 0123456789e019)) (v128.const f64x2 0.0 0123456789e019)) 288 (assert_return (invoke "f64x2_replace_lane-last" (v128.const f64x2 0.0 0.0) (f64.const 0123456789e+019)) (v128.const f64x2 0.0 0123456789e+019)) 289 (assert_return (invoke "f64x2_replace_lane-last" (v128.const f64x2 0.0 0.0) (f64.const 0123456789.e019)) (v128.const f64x2 0.0 0123456789.e019)) 290 (assert_return (invoke "f64x2_replace_lane-last" (v128.const f64x2 0.0 0.0) (f64.const 0123456789.e-019)) (v128.const f64x2 0.0 0123456789.e-019)) 291 292 (assert_return (invoke "v8x16_swizzle" 293 (v128.const i8x16 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31) 294 (v128.const i8x16 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15)) 295 (v128.const i8x16 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31)) 296 (assert_return (invoke "v8x16_swizzle" 297 (v128.const i8x16 -16 -15 -14 -13 -12 -11 -10 -9 -8 -7 -6 -5 -4 -3 -2 -1) 298 (v128.const i8x16 -8 -7 -6 -5 -4 -3 -2 -1 16 17 18 19 20 21 22 23)) 299 (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) 300 (assert_return (invoke "v8x16_swizzle" 301 (v128.const i8x16 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115) 302 (v128.const i8x16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0)) 303 (v128.const i8x16 115 114 113 112 111 110 109 108 107 106 105 104 103 102 101 100)) 304 (assert_return (invoke "v8x16_swizzle" 305 (v128.const i8x16 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115) 306 (v128.const i8x16 -1 1 -2 2 -3 3 -4 4 -5 5 -6 6 -7 7 -8 8)) 307 (v128.const i8x16 0 101 0 102 0 103 0 104 0 105 0 106 0 107 0 108)) 308 (assert_return (invoke "v8x16_swizzle" 309 (v128.const i8x16 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115) 310 (v128.const i8x16 9 16 10 17 11 18 12 19 13 20 14 21 15 22 16 23)) 311 (v128.const i8x16 109 0 110 0 111 0 112 0 113 0 114 0 115 0 0 0)) 312 (assert_return (invoke "v8x16_swizzle" 313 (v128.const i8x16 0x64 0x65 0x66 0x67 0x68 0x69 0x6a 0x6b 0x6c 0x6d 0x6e 0x6f 0x70 0x71 0x72 0x73) 314 (v128.const i8x16 9 16 10 17 11 18 12 19 13 20 14 21 15 22 16 23)) 315 (v128.const i8x16 0x6d 0 0x6e 0 0x6f 0 0x70 0 0x71 0 0x72 0 0x73 0 0 0)) 316 (assert_return (invoke "v8x16_swizzle" 317 (v128.const i16x8 0x6465 0x6667 0x6869 0x6a6b 0x6c6d 0x6e6f 0x7071 0x7273) 318 (v128.const i8x16 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15)) 319 (v128.const i16x8 0x6465 0x6667 0x6869 0x6a6b 0x6c6d 0x6e6f 0x7071 0x7273)) 320 (assert_return (invoke "v8x16_swizzle" 321 (v128.const i32x4 0x64656667 0x68696a6b 0x6c6d6e6f 0x70717273) 322 (v128.const i8x16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0)) 323 (v128.const i32x4 0x73727170 0x6f6e6d6c 0x6b6a6968 0x67666564)) 324 (assert_return (invoke "v8x16_swizzle" 325 (v128.const f32x4 nan -nan inf -inf) 326 (v128.const i8x16 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15)) 327 (v128.const i32x4 0x7fc00000 0xffc00000 0x7f800000 0xff800000)) 328 (assert_return (invoke "v8x16_swizzle" 329 (v128.const i32x4 0x67666564 0x6b6a6968 0x6f6e6d5c 0x73727170) 330 (v128.const f32x4 0.0 -0.0 inf -inf)) 331 (v128.const i32x4 0x64646464 0x00646464 0x00006464 0x00006464)) 332 333 (assert_return (invoke "v8x16_shuffle-1" 334 (v128.const i8x16 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15) 335 (v128.const i8x16 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31)) 336 (v128.const i8x16 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15)) 337 (assert_return (invoke "v8x16_shuffle-2" 338 (v128.const i8x16 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15) 339 (v128.const i8x16 -16 -15 -14 -13 -12 -11 -10 -9 -8 -7 -6 -5 -4 -3 -2 -1)) 340 (v128.const i8x16 -16 -15 -14 -13 -12 -11 -10 -9 -8 -7 -6 -5 -4 -3 -2 -1)) 341 (assert_return (invoke "v8x16_shuffle-3" 342 (v128.const i8x16 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15) 343 (v128.const i8x16 -16 -15 -14 -13 -12 -11 -10 -9 -8 -7 -6 -5 -4 -3 -2 -1)) 344 (v128.const i8x16 -1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16)) 345 (assert_return (invoke "v8x16_shuffle-4" 346 (v128.const i8x16 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15) 347 (v128.const i8x16 -16 -15 -14 -13 -12 -11 -10 -9 -8 -7 -6 -5 -4 -3 -2 -1)) 348 (v128.const i8x16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0)) 349 (assert_return (invoke "v8x16_shuffle-5" 350 (v128.const i8x16 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15) 351 (v128.const i8x16 -16 -15 -14 -13 -12 -11 -10 -9 -8 -7 -6 -5 -4 -3 -2 -1)) 352 (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) 353 (assert_return (invoke "v8x16_shuffle-6" 354 (v128.const i8x16 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15) 355 (v128.const i8x16 -16 -15 -14 -13 -12 -11 -10 -9 -8 -7 -6 -5 -4 -3 -2 -1)) 356 (v128.const i8x16 -16 -16 -16 -16 -16 -16 -16 -16 -16 -16 -16 -16 -16 -16 -16 -16)) 357 (assert_return (invoke "v8x16_shuffle-7" 358 (v128.const i8x16 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15) 359 (v128.const i8x16 -16 -15 -14 -13 -12 -11 -10 -9 -8 -7 -6 -5 -4 -3 -2 -1)) 360 (v128.const i8x16 0 0 0 0 0 0 0 0 -16 -16 -16 -16 -16 -16 -16 -16)) 361 (assert_return (invoke "v8x16_shuffle-1" 362 (v128.const i8x16 0x64 0x65 0x66 0x67 0x68 0x69 0x6a 0x6b 0x6c 0x6d 0x6e 0x6f 0x70 0x71 0x72 0x73) 363 (v128.const i8x16 0xf0 0xf1 0xf2 0xf3 0xf4 0xf5 0xf6 0xf7 0xf8 0xf9 0xfa 0xfb 0xfc 0xfd 0xfe 0xff)) 364 (v128.const i8x16 0x64 0x65 0x66 0x67 0x68 0x69 0x6a 0x6b 0x6c 0x6d 0x6e 0x6f 0x70 0x71 0x72 0x73)) 365 (assert_return (invoke "v8x16_shuffle-1" 366 (v128.const i16x8 0x0100 0x0302 0x0504 0x0706 0x0908 0x0b0a 0x0d0c 0x0f0e) 367 (v128.const i8x16 -16 -15 -14 -13 -12 -11 -10 -9 -8 -7 -6 -5 -4 -3 -2 -1)) 368 (v128.const i16x8 0x0100 0x0302 0x0504 0x0706 0x0908 0x0b0a 0x0d0c 0x0f0e)) 369 (assert_return (invoke "v8x16_shuffle-2" 370 (v128.const i8x16 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15) 371 (v128.const i32x4 0xf3f2f1f0 0xf7f6f5f4 0xfbfaf9f8 0xfffefdfc)) 372 (v128.const i32x4 0xf3f2f1f0 0xf7f6f5f4 0xfbfaf9f8 0xfffefdfc)) 373 (assert_return (invoke "v8x16_shuffle-1" 374 (v128.const i32x4 0x10203 0x4050607 0x8090a0b 0xc0d0e0f) 375 (v128.const i8x16 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15)) 376 (v128.const i32x4 0x10203 0x4050607 0x8090a0b 0xc0d0e0f)) 377 (assert_return (invoke "v8x16_shuffle-1" 378 (v128.const f32x4 1.0 nan inf -inf) 379 (v128.const i8x16 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15)) 380 (v128.const i32x4 0x3f800000 0x7fc00000 0x7f800000 0xff800000)) 381 (assert_return (invoke "v8x16_shuffle-1" 382 (v128.const i32x4 0x10203 0x4050607 0x8090a0b 0xc0d0e0f) 383 (v128.const f32x4 -0.0 nan inf -inf)) 384 (v128.const i32x4 0x10203 0x4050607 0x8090a0b 0xc0d0e0f)) 385 386 ;; More literals 387 (assert_return (invoke "v8x16_swizzle" 388 (v128.const i32x4 1_234_567_890 0x1234_5678 01_234_567_890 0x0_1234_5678) 389 (v128.const i8x16 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15)) 390 (v128.const i32x4 0x4996_02d2 0x1234_5678 0x4996_02d2 0x1234_5678)) 391 (assert_return (invoke "v8x16_shuffle-1" 392 (v128.const i64x2 1_234_567_890_123_456_789_0 0x1234_5678_90AB_cdef) 393 (v128.const i64x2 01_234_567_890_123_456_789_0 0x0_1234_5678_90AB_cdef)) 394 (v128.const i32x4 0xeb1f_0ad2 0xab54_a98c 0x90ab_cdef 0x1234_5678)) 395 396 ;; Syntax errors for negative values 397 398 (assert_malformed (module quote "(func (result i32) (i8x16.extract_lane_s -1 (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)))") "unexpected token") 399 (assert_malformed (module quote "(func (result i32) (i8x16.extract_lane_u -1 (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)))") "unexpected token") 400 (assert_malformed (module quote "(func (result i32) (i16x8.extract_lane_s -1 (v128.const i16x8 0 0 0 0 0 0 0 0)))") "unexpected token") 401 (assert_malformed (module quote "(func (result i32) (i16x8.extract_lane_u -1 (v128.const i16x8 0 0 0 0 0 0 0 0)))") "unexpected token") 402 (assert_malformed (module quote "(func (result i32) (i32x4.extract_lane -1 (v128.const i32x4 0 0 0 0)))") "unexpected token") 403 (assert_malformed (module quote "(func (result f32) (f32x4.extract_lane -1 (v128.const f32x4 0 0 0 0)))") "unexpected token") 404 (assert_malformed (module quote "(func (result v128) (i8x16.replace_lane -1 (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0) (i32.const 1)))") "unexpected token") 405 (assert_malformed (module quote "(func (result v128) (i16x8.replace_lane -1 (v128.const i16x8 0 0 0 0 0 0 0 0) (i32.const 1)))") "unexpected token") 406 (assert_malformed (module quote "(func (result v128) (i32x4.replace_lane -1 (v128.const i32x4 0 0 0 0) (i32.const 1)))") "unexpected token") 407 (assert_malformed (module quote "(func (result v128) (f32x4.replace_lane -1 (v128.const f32x4 0 0 0 0) (i32.const 1)))") "unexpected token") 408 (assert_malformed (module quote "(func (result i64) (i64x2.extract_lane -1 (v128.const i64x2 0 0)))") "unexpected token") 409 (assert_malformed (module quote "(func (result f64) (f64x2.extract_lane -1 (v128.const f64x2 0 0)))") "unexpected token") 410 (assert_malformed (module quote "(func (result v128) (i64x2.replace_lane -1 (v128.const i64x2 0 0) (i64.const 1)))") "unexpected token") 411 (assert_malformed (module quote "(func (result v128) (f64x2.replace_lane -1 (v128.const f64x2 0 0) (f64.const 1)))") "unexpected token") 412 413 ;; Malformed lane index value 414 415 (assert_malformed (module quote "(func (result i32) (i8x16.extract_lane_s 256 (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)))") "malformed lane index") 416 (assert_malformed (module quote "(func (result i32) (i8x16.extract_lane_u 256 (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)))") "malformed lane index") 417 (assert_malformed (module quote "(func (result i32) (i16x8.extract_lane_s 256 (v128.const i16x8 0 0 0 0 0 0 0 0)))") "malformed lane index") 418 (assert_malformed (module quote "(func (result i32) (i16x8.extract_lane_u 256 (v128.const i16x8 0 0 0 0 0 0 0 0)))") "malformed lane index") 419 (assert_malformed (module quote "(func (result i32) (i32x4.extract_lane 256 (v128.const i32x4 0 0 0 0)))") "malformed lane index") 420 (assert_malformed (module quote "(func (result f32) (f32x4.extract_lane 256 (v128.const f32x4 0 0 0 0)))") "malformed lane index") 421 (assert_malformed (module quote "(func (result v128) (i8x16.replace_lane 256 (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0) (i32.const 1)))") "malformed lane index") 422 (assert_malformed (module quote "(func (result v128) (i16x8.replace_lane 256 (v128.const i16x8 0 0 0 0 0 0 0 0) (i32.const 1)))") "malformed lane index") 423 (assert_malformed (module quote "(func (result v128) (i32x4.replace_lane 256 (v128.const i32x4 0 0 0 0) (i32.const 1)))") "malformed lane index") 424 (assert_malformed (module quote "(func (result v128) (f32x4.replace_lane 256 (v128.const f32x4 0 0 0 0) (i32.const 1)))") "malformed lane index") 425 (assert_malformed (module quote "(func (result i64) (i64x2.extract_lane 256 (v128.const i64x2 0 0)))") "malformed lane index") 426 (assert_malformed (module quote "(func (result f64) (f64x2.extract_lane 256 (v128.const f64x2 0 0)))") "malformed lane index") 427 (assert_malformed (module quote "(func (result v128) (i64x2.replace_lane 256 (v128.const i64x2 0 0) (i64.const 1)))") "malformed lane index") 428 (assert_malformed (module quote "(func (result v128) (f64x2.replace_lane 256 (v128.const f64x2 0 0) (f64.const 1)))") "malformed lane index") 429 430 ;; Invalid lane index value 431 432 (assert_invalid (module (func (result i32) (i8x16.extract_lane_s 16 (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)))) "invalid lane index") 433 (assert_invalid (module (func (result i32) (i8x16.extract_lane_s 255 (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)))) "invalid lane index") 434 (assert_invalid (module (func (result i32) (i8x16.extract_lane_u 16 (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)))) "invalid lane index") 435 (assert_invalid (module (func (result i32) (i8x16.extract_lane_u 255 (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)))) "invalid lane index") 436 (assert_invalid (module (func (result i32) (i16x8.extract_lane_s 8 (v128.const i16x8 0 0 0 0 0 0 0 0)))) "invalid lane index") 437 (assert_invalid (module (func (result i32) (i16x8.extract_lane_s 255 (v128.const i16x8 0 0 0 0 0 0 0 0)))) "invalid lane index") 438 (assert_invalid (module (func (result i32) (i16x8.extract_lane_u 8 (v128.const i16x8 0 0 0 0 0 0 0 0)))) "invalid lane index") 439 (assert_invalid (module (func (result i32) (i16x8.extract_lane_u 255 (v128.const i16x8 0 0 0 0 0 0 0 0)))) "invalid lane index") 440 (assert_invalid (module (func (result i32) (i32x4.extract_lane 4 (v128.const i32x4 0 0 0 0)))) "invalid lane index") 441 (assert_invalid (module (func (result i32) (i32x4.extract_lane 255 (v128.const i32x4 0 0 0 0)))) "invalid lane index") 442 (assert_invalid (module (func (result f32) (f32x4.extract_lane 4 (v128.const f32x4 0 0 0 0)))) "invalid lane index") 443 (assert_invalid (module (func (result f32) (f32x4.extract_lane 255 (v128.const f32x4 0 0 0 0)))) "invalid lane index") 444 (assert_invalid (module (func (result v128) (i8x16.replace_lane 16 (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0) (i32.const 1)))) "invalid lane index") 445 (assert_invalid (module (func (result v128) (i8x16.replace_lane 255 (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0) (i32.const 1)))) "invalid lane index") 446 (assert_invalid (module (func (result v128) (i16x8.replace_lane 16 (v128.const i16x8 0 0 0 0 0 0 0 0) (i32.const 1)))) "invalid lane index") 447 (assert_invalid (module (func (result v128) (i16x8.replace_lane 255 (v128.const i16x8 0 0 0 0 0 0 0 0) (i32.const 1)))) "invalid lane index") 448 (assert_invalid (module (func (result v128) (i32x4.replace_lane 4 (v128.const i32x4 0 0 0 0) (i32.const 1)))) "invalid lane index") 449 (assert_invalid (module (func (result v128) (i32x4.replace_lane 255 (v128.const i32x4 0 0 0 0) (i32.const 1)))) "invalid lane index") 450 (assert_invalid (module (func (result v128) (f32x4.replace_lane 4 (v128.const f32x4 0 0 0 0) (f32.const 1)))) "invalid lane index") 451 (assert_invalid (module (func (result v128) (f32x4.replace_lane 255 (v128.const f32x4 0 0 0 0) (f32.const 1)))) "invalid lane index") 452 (assert_invalid (module (func (result i64) (i64x2.extract_lane 2 (v128.const i64x2 0 0)))) "invalid lane index") 453 (assert_invalid (module (func (result i64) (i64x2.extract_lane 255 (v128.const i64x2 0 0)))) "invalid lane index") 454 (assert_invalid (module (func (result f64) (f64x2.extract_lane 2 (v128.const f64x2 0 0)))) "invalid lane index") 455 (assert_invalid (module (func (result f64) (f64x2.extract_lane 255 (v128.const f64x2 0 0)))) "invalid lane index") 456 (assert_invalid (module (func (result v128) (i64x2.replace_lane 2 (v128.const i64x2 0 0) (i64.const 1)))) "invalid lane index") 457 (assert_invalid (module (func (result v128) (i64x2.replace_lane 255 (v128.const i64x2 0 0) (i64.const 1)))) "invalid lane index") 458 (assert_invalid (module (func (result v128) (f64x2.replace_lane 2 (v128.const f64x2 0 0) (f64.const 1)))) "invalid lane index") 459 (assert_invalid (module (func (result v128) (f64x2.replace_lane 255 (v128.const f64x2 0 0) (f64.const 1.0)))) "invalid lane index") 460 461 ;; Lane index is determined by the instruction's interpretation only. 462 463 (assert_invalid (module (func (result i32) (i16x8.extract_lane_s 8 (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)))) "invalid lane index") 464 (assert_invalid (module (func (result i32) (i16x8.extract_lane_u 8 (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)))) "invalid lane index") 465 (assert_invalid (module (func (result i32) (i32x4.extract_lane 4 (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)))) "invalid lane index") 466 (assert_invalid (module (func (result i32) (f32x4.extract_lane 4 (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)))) "invalid lane index") 467 (assert_invalid (module (func (result v128) (i16x8.replace_lane 8 (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0) (i32.const 1)))) "invalid lane index") 468 (assert_invalid (module (func (result v128) (i32x4.replace_lane 4 (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0) (i32.const 1)))) "invalid lane index") 469 (assert_invalid (module (func (result v128) (f32x4.replace_lane 4 (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0) (f32.const 1)))) "invalid lane index") 470 (assert_invalid (module (func (result i64) (i64x2.extract_lane 2 (v128.const i64x2 0 0)))) "invalid lane index") 471 (assert_invalid (module (func (result f64) (f64x2.extract_lane 2 (v128.const f64x2 0 0)))) "invalid lane index") 472 (assert_invalid (module (func (result v128) (i64x2.replace_lane 2 (v128.const i64x2 0 0) (i64.const 1)))) "invalid lane index") 473 (assert_invalid (module (func (result v128) (f64x2.replace_lane 2 (v128.const f64x2 0 0) (f64.const 1.0)))) "invalid lane index") 474 475 ;; Invalid parameters: required v128 but pass other types 476 477 (assert_invalid (module (func (result i32) (i8x16.extract_lane_s 0 (i32.const 0)))) "type mismatch") 478 (assert_invalid (module (func (result i32) (i8x16.extract_lane_u 0 (i64.const 0)))) "type mismatch") 479 (assert_invalid (module (func (result i32) (i8x16.extract_lane_s 0 (f32.const 0.0)))) "type mismatch") 480 (assert_invalid (module (func (result i32) (i8x16.extract_lane_u 0 (f64.const 0.0)))) "type mismatch") 481 (assert_invalid (module (func (result i32) (i32x4.extract_lane 0 (i32.const 0)))) "type mismatch") 482 (assert_invalid (module (func (result f32) (f32x4.extract_lane 0 (f32.const 0.0)))) "type mismatch") 483 (assert_invalid (module (func (result v128) (i8x16.replace_lane 0 (i32.const 0) (i32.const 1)))) "type mismatch") 484 (assert_invalid (module (func (result v128) (i16x8.replace_lane 0 (i64.const 0) (i32.const 1)))) "type mismatch") 485 (assert_invalid (module (func (result v128) (i32x4.replace_lane 0 (i32.const 0) (i32.const 1)))) "type mismatch") 486 (assert_invalid (module (func (result v128) (f32x4.replace_lane 0 (f32.const 0.0) (i32.const 1)))) "type mismatch") 487 (assert_invalid (module (func (result i64) (i64x2.extract_lane 0 (i64.const 0)))) "type mismatch") 488 (assert_invalid (module (func (result f64) (f64x2.extract_lane 0 (f64.const 0.0)))) "type mismatch") 489 (assert_invalid (module (func (result v128) (i32x4.replace_lane 0 (i32.const 0) (i32.const 1)))) "type mismatch") 490 (assert_invalid (module (func (result v128) (f32x4.replace_lane 0 (f32.const 0.0) (i32.const 1)))) "type mismatch") 491 492 ;; Invalid types for the replaced value 493 494 (assert_invalid (module (func (result v128) (i8x16.replace_lane 0 (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0) (f32.const 1.0)))) "type mismatch") 495 (assert_invalid (module (func (result v128) (i16x8.replace_lane 0 (v128.const i16x8 0 0 0 0 0 0 0 0) (f64.const 1.0)))) "type mismatch") 496 (assert_invalid (module (func (result v128) (i32x4.replace_lane 0 (v128.const i32x4 0 0 0 0) (f32.const 1.0)))) "type mismatch") 497 (assert_invalid (module (func (result v128) (f32x4.replace_lane 0 (v128.const f32x4 0 0 0 0) (i32.const 1)))) "type mismatch") 498 499 (assert_invalid (module (func (result v128) (i64x2.replace_lane 0 (v128.const i64x2 0 0) (f64.const 1.0)))) "type mismatch") 500 (assert_invalid (module (func (result v128) (f64x2.replace_lane 0 (v128.const f64x2 0 0) (i64.const 1)))) "type mismatch") 501 502 ;; Invalid types for swizzle and shuffle values 503 (assert_invalid (module (func (result v128) 504 (i8x16.swizzle (i32.const 1) (v128.const i8x16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0)))) "type mismatch") 505 (assert_invalid (module (func (result v128) 506 (i8x16.swizzle (v128.const i8x16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0) (i32.const 2)))) "type mismatch") 507 (assert_invalid (module (func (result v128) 508 (i8x16.shuffle 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 (f32.const 3.0) 509 (v128.const i8x16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0)))) "type mismatch") 510 (assert_invalid (module (func (result v128) 511 (i8x16.shuffle 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 512 (v128.const i8x16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0) (f32.const 4.0)))) "type mismatch") 513 514 ;; i8x16.shuffle: the 1st argument must be 16-byte literals in 0..32 515 (assert_malformed (module quote "(func (param v128) (result v128)" 516 "(i8x16.shuffle 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 (local.get 0) (local.get 0)))") 517 "invalid lane length") 518 (assert_malformed (module quote "(func (param v128) (result v128)" 519 "(i8x16.shuffle 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 (local.get 0) (local.get 0)))") 520 "invalid lane length") 521 (assert_malformed (module quote "(func (result v128)" 522 "(i8x16.shuffle 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 -1" 523 "(v128.const i8x16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0)" 524 "(v128.const i8x16 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15)))") "malformed lane index") 525 (assert_malformed (module quote "(func (result v128)" 526 "(i8x16.shuffle 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 256" 527 "(v128.const i8x16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0)" 528 "(v128.const i8x16 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15)))") "malformed lane index") 529 (assert_invalid (module (func (result v128) 530 (i8x16.shuffle 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 255 531 (v128.const i8x16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0) 532 (v128.const i8x16 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15)))) "invalid lane index") 533 534 ;; Possible wrong instruction names that'd be used 535 536 (assert_malformed (module quote "(func (result i32) (i8x16.extract_lane 0 (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)))") "unknown operator") 537 (assert_malformed (module quote "(func (result i32) (i16x8.extract_lane 0 (v128.const i16x8 0 0 0 0 0 0 0 0)))") "unknown operator") 538 (assert_malformed (module quote "(func (result i32) (i32x4.extract_lane_s 0 (v128.const i32x4 0 0 0 0)))") "unknown operator") 539 (assert_malformed (module quote "(func (result i32) (i32x4.extract_lane_u 0 (v128.const i32x4 0 0 0 0)))") "unknown operator") 540 (assert_malformed (module quote "(func (result i32) (i64x2.extract_lane_s 0 (v128.const i64x2 0 0)))") "unknown operator") 541 (assert_malformed (module quote "(func (result i32) (i64x2.extract_lane_u 0 (v128.const i64x2 0 0)))") "unknown operator") 542 543 544 ;; Old shuffle instruction names will not work 545 (assert_malformed (module quote "(func (result v128) " 546 "(i8x16.shuffle1 (v128.const i8x16 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15) " 547 "(v128.const i8x16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0)))") 548 "unknown operator") 549 (assert_malformed (module quote "(func (result v128) " 550 "(i8x16.shuffle2_imm 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 " 551 "(v128.const i8x16 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15) " 552 "(v128.const i8x16 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31)))") 553 "unknown operator") 554 ;; i8x16 not v8x16 555 (assert_malformed (module quote "(func (result v128) " 556 "(v8x16.swizzle (v128.const i8x16 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15) " 557 "(v128.const i8x16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0)))") 558 "unknown operator") 559 (assert_malformed (module quote "(func (result v128) " 560 "(v8x16.shuffle 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 " 561 "(v128.const i8x16 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15) " 562 "(v128.const i8x16 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31)))") 563 "unknown operator") 564 565 566 ;; Malformed lane index 567 568 ;; Pass params as the lane index 569 570 (assert_malformed (module quote "(func (param i32) (result i32) (i8x16.extract_lane_s (local.get 0) (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)))") "unexpected token") 571 (assert_malformed (module quote "(func (param i32) (result i32) (i8x16.extract_lane_u (local.get 0) (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)))") "unexpected token") 572 (assert_malformed (module quote "(func (param i32) (result i32) (i16x8.extract_lane_s (local.get 0) (v128.const i16x8 0 0 0 0 0 0 0 0)))") "unexpected token") 573 (assert_malformed (module quote "(func (param i32) (result i32) (i16x8.extract_lane_u (local.get 0) (v128.const i16x8 0 0 0 0 0 0 0 0)))") "unexpected token") 574 (assert_malformed (module quote "(func (param i32) (result i32) (i32x4.extract_lane (local.get 0) (v128.const i32x4 0 0 0 0)))") "unexpected token") 575 (assert_malformed (module quote "(func (param i32) (result f32) (f32x4.extract_lane (local.get 0) (v128.const f32x4 0 0 0 0)))") "unexpected token") 576 (assert_malformed (module quote "(func (param i32) (result v128) (i8x16.replace_lane (local.get 0) (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0) (i32.const 1)))") "unexpected token") 577 (assert_malformed (module quote "(func (param i32) (result v128) (i16x8.replace_lane (local.get 0) (v128.const i16x8 0 0 0 0 0 0 0 0) (i32.const 1)))") "unexpected token") 578 (assert_malformed (module quote "(func (param i32) (result v128) (i32x4.replace_lane (local.get 0) (v128.const i32x4 0 0 0 0) (i32.const 1)))") "unexpected token") 579 (assert_malformed (module quote "(func (param i32) (result v128) (f32x4.replace_lane (local.get 0) (v128.const f32x4 0 0 0 0) (f32.const 1.0)))") "unexpected token") 580 581 (assert_malformed (module quote "(func (param i32) (result i64) (i64x2.extract_lane (local.get 0) (v128.const i64x2 0 0)))") "unexpected token") 582 (assert_malformed (module quote "(func (param i32) (result f64) (f64x2.extract_lane (local.get 0) (v128.const f64x2 0 0)))") "unexpected token") 583 (assert_malformed (module quote "(func (param i32) (result v128) (i64x2.replace_lane (local.get 0) (v128.const i64x2 0 0) (i64.const 1)))") "unexpected token") 584 (assert_malformed (module quote "(func (param i32) (result v128) (f64x2.replace_lane (local.get 0) (v128.const f64x2 0 0) (f64.const 1.0)))") "unexpected token") 585 586 ;; Pass non-literal as the lane index 587 588 (assert_malformed (module quote "(func (result i32) (i8x16.extract_lane_s 1.5 (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)))") "unexpected token") 589 (assert_malformed (module quote "(func (result i32) (i8x16.extract_lane_u nan (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)))") "unexpected token") 590 (assert_malformed (module quote "(func (result i32) (i16x8.extract_lane_s inf (v128.const i16x8 0 0 0 0 0 0 0 0)))") "unexpected token") 591 (assert_malformed (module quote "(func (result i32) (i16x8.extract_lane_u -inf (v128.const i16x8 0 0 0 0 0 0 0 0)))") "unexpected token") 592 (assert_malformed (module quote "(func (result i32) (i32x4.extract_lane nan (v128.const i32x4 0 0 0 0)))") "unexpected token") 593 (assert_malformed (module quote "(func (result f32) (f32x4.extract_lane nan (v128.const f32x4 0 0 0 0)))") "unexpected token") 594 (assert_malformed (module quote "(func (result v128) (i8x16.replace_lane -2.5 (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0) (i32.const 1)))") "unexpected token") 595 (assert_malformed (module quote "(func (result v128) (i16x8.replace_lane nan (v128.const i16x8 0 0 0 0 0 0 0 0) (i32.const 1)))") "unexpected token") 596 (assert_malformed (module quote "(func (result v128) (i32x4.replace_lane inf (v128.const i32x4 0 0 0 0) (i32.const 1)))") "unexpected token") 597 (assert_malformed (module quote "(func (result v128) (f32x4.replace_lane -inf (v128.const f32x4 0 0 0 0) (f32.const 1.1)))") "unexpected token") 598 599 ;; i8x16.shuffle expects a 16-byte literals as first argument 600 (assert_malformed (module quote "(func (result v128) " 601 "(i8x16.shuffle (v128.const i8x16 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31) " 602 "(v128.const i8x16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0) " 603 "(v128.const i8x16 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15)))") "invalid lane length") 604 (assert_malformed (module quote "(func (result v128) " 605 "(i8x16.shuffle 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15.0) " 606 "(v128.const i8x16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0) " 607 "(v128.const i8x16 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15)))") "malformed lane index") 608 (assert_malformed (module quote "(func (result v128) " 609 "(i8x16.shuffle 0.5 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15) " 610 "(v128.const i8x16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0) " 611 "(v128.const i8x16 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15)))") "malformed lane index") 612 (assert_malformed (module quote "(func (result v128) " 613 "(i8x16.shuffle -inf 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15) " 614 "(v128.const i8x16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0) " 615 "(v128.const i8x16 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15)))") "malformed lane index") 616 (assert_malformed (module quote "(func (result v128) " 617 "(i8x16.shuffle 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 inf) " 618 "(v128.const i8x16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0) " 619 "(v128.const i8x16 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15)))") "malformed lane index") 620 (assert_malformed (module quote "(func (result v128) " 621 "(i8x16.shuffle nan 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15) " 622 "(v128.const i8x16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0) " 623 "(v128.const i8x16 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15)))") "malformed lane index") 624 625 626 ;; Combination with each other 627 628 (module 629 ;; as *.replace_lane's operand 630 (func (export "i8x16_extract_lane_s") (param v128 v128) (result v128) 631 (i8x16.replace_lane 0 (local.get 0) (i8x16.extract_lane_s 0 (local.get 1)))) 632 (func (export "i8x16_extract_lane_u") (param v128 v128) (result v128) 633 (i8x16.replace_lane 0 (local.get 0) (i8x16.extract_lane_u 0 (local.get 1)))) 634 (func (export "i16x8_extract_lane_s") (param v128 v128) (result v128) 635 (i16x8.replace_lane 0 (local.get 0) (i16x8.extract_lane_s 0 (local.get 1)))) 636 (func (export "i16x8_extract_lane_u") (param v128 v128) (result v128) 637 (i16x8.replace_lane 0 (local.get 0) (i16x8.extract_lane_u 0 (local.get 1)))) 638 (func (export "i32x4_extract_lane") (param v128 v128) (result v128) 639 (i32x4.replace_lane 0 (local.get 0) (i32x4.extract_lane 0 (local.get 1)))) 640 (func (export "f32x4_extract_lane") (param v128 v128) (result v128) 641 (i32x4.replace_lane 0 (local.get 0) (i32x4.extract_lane 0 (local.get 1)))) 642 (func (export "i64x2_extract_lane") (param v128 v128) (result v128) 643 (i64x2.replace_lane 0 (local.get 0) (i64x2.extract_lane 0 (local.get 1)))) 644 (func (export "f64x2_extract_lane") (param v128 v128) (result v128) 645 (f64x2.replace_lane 0 (local.get 0) (f64x2.extract_lane 0 (local.get 1)))) 646 647 ;; as *.extract_lane's operand 648 (func (export "i8x16_replace_lane-s") (param v128 i32) (result i32) 649 (i8x16.extract_lane_s 15 (i8x16.replace_lane 15 (local.get 0) (local.get 1)))) 650 (func (export "i8x16_replace_lane-u") (param v128 i32) (result i32) 651 (i8x16.extract_lane_u 15 (i8x16.replace_lane 15 (local.get 0) (local.get 1)))) 652 (func (export "i16x8_replace_lane-s") (param v128 i32) (result i32) 653 (i16x8.extract_lane_s 7 (i16x8.replace_lane 7 (local.get 0) (local.get 1)))) 654 (func (export "i16x8_replace_lane-u") (param v128 i32) (result i32) 655 (i16x8.extract_lane_u 7 (i16x8.replace_lane 7 (local.get 0) (local.get 1)))) 656 (func (export "i32x4_replace_lane") (param v128 i32) (result i32) 657 (i32x4.extract_lane 3 (i32x4.replace_lane 3 (local.get 0) (local.get 1)))) 658 (func (export "f32x4_replace_lane") (param v128 f32) (result f32) 659 (f32x4.extract_lane 3 (f32x4.replace_lane 3 (local.get 0) (local.get 1)))) 660 (func (export "i64x2_replace_lane") (param v128 i64) (result i64) 661 (i64x2.extract_lane 1 (i64x2.replace_lane 1 (local.get 0) (local.get 1)))) 662 (func (export "f64x2_replace_lane") (param v128 f64) (result f64) 663 (f64x2.extract_lane 1 (f64x2.replace_lane 1 (local.get 0) (local.get 1)))) 664 665 ;; i8x16.replace outputs as shuffle operand 666 (func (export "as-v8x16_swizzle-operand") (param v128 i32 v128) (result v128) 667 (i8x16.swizzle (i8x16.replace_lane 0 (local.get 0) (local.get 1)) (local.get 2))) 668 (func (export "as-v8x16_shuffle-operands") (param v128 i32 v128 i32) (result v128) 669 (i8x16.shuffle 16 1 18 3 20 5 22 7 24 9 26 11 28 13 30 15 670 (i8x16.replace_lane 0 (local.get 0) (local.get 1)) 671 (i8x16.replace_lane 15 (local.get 2) (local.get 3)))) 672 ) 673 674 (assert_return (invoke "i8x16_extract_lane_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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) 675 (assert_return (invoke "i8x16_extract_lane_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 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) 676 (assert_return (invoke "i16x8_extract_lane_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 0 0 0 0 0 0 0)) 677 (assert_return (invoke "i16x8_extract_lane_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 0 0 0 0 0 0 0)) 678 (assert_return (invoke "i32x4_extract_lane" (v128.const i32x4 0 0 0 0) (v128.const i32x4 0x10000 -1 -1 -1)) (v128.const i32x4 65536 0 0 0)) 679 (assert_return (invoke "f32x4_extract_lane" (v128.const f32x4 0 0 0 0) (v128.const f32x4 1e38 nan nan nan)) (v128.const f32x4 1e38 0 0 0)) 680 (assert_return (invoke "i8x16_replace_lane-s" (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0) (i32.const 255)) (i32.const -1)) 681 (assert_return (invoke "i8x16_replace_lane-u" (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0) (i32.const 255)) (i32.const 255)) 682 (assert_return (invoke "i16x8_replace_lane-s" (v128.const i16x8 0 0 0 0 0 0 0 0) (i32.const 65535)) (i32.const -1)) 683 (assert_return (invoke "i16x8_replace_lane-u" (v128.const i16x8 0 0 0 0 0 0 0 0) (i32.const 65535)) (i32.const 65535)) 684 (assert_return (invoke "i32x4_replace_lane" (v128.const i32x4 0 0 0 0) (i32.const -1)) (i32.const -1)) 685 (assert_return (invoke "f32x4_replace_lane" (v128.const f32x4 0 0 0 0) (f32.const 1.25)) (f32.const 1.25)) 686 687 (assert_return (invoke "i64x2_extract_lane" (v128.const i64x2 0 0) (v128.const i64x2 0xffffffffffffffff -1)) (v128.const i64x2 0xffffffffffffffff 0)) 688 (assert_return (invoke "f64x2_extract_lane" (v128.const f64x2 0 0) (v128.const f64x2 1e308 nan)) (v128.const f64x2 1e308 0)) 689 (assert_return (invoke "i64x2_replace_lane" (v128.const i64x2 0 0) (i64.const -1)) (i64.const -1)) 690 (assert_return (invoke "f64x2_replace_lane" (v128.const f64x2 0 0) (f64.const 2.5)) (f64.const 2.5)) 691 692 (assert_return (invoke "as-v8x16_swizzle-operand" 693 (v128.const i8x16 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15) (i32.const 255) 694 (v128.const i8x16 -1 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1)) 695 (v128.const i8x16 0 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1)) 696 (assert_return (invoke "as-v8x16_shuffle-operands" 697 (v128.const i8x16 0 255 0 255 15 255 0 255 255 255 0 255 127 255 0 255) (i32.const 1) 698 (v128.const i8x16 0x55 0 0x55 0 0x55 0 0x55 0 0x55 0 0x55 0 0x55 1 0x55 -1) (i32.const 0)) 699 (v128.const i8x16 0x55 0xff 0x55 0xff 0x55 0xff 0x55 0xff 0x55 0xff 0x55 0xff 0x55 0xff 0x55 0xff)) 700 701 ;; Combination with other SIMD instructions 702 703 (module 704 ;; Constructing SIMD values 705 (func (export "as-i8x16_splat-operand") (param v128) (result v128) 706 (i8x16.splat (i8x16.extract_lane_s 0 (local.get 0)))) 707 (func (export "as-i16x8_splat-operand") (param v128) (result v128) 708 (i16x8.splat (i16x8.extract_lane_u 0 (local.get 0)))) 709 (func (export "as-i32x4_splat-operand") (param v128) (result v128) 710 (i32x4.splat (i32x4.extract_lane 0 (local.get 0)))) 711 (func (export "as-f32x4_splat-operand") (param v128) (result v128) 712 (f32x4.splat (f32x4.extract_lane 0 (local.get 0)))) 713 (func (export "as-i64x2_splat-operand") (param v128) (result v128) 714 (i64x2.splat (i64x2.extract_lane 0 (local.get 0)))) 715 (func (export "as-f64x2_splat-operand") (param v128) (result v128) 716 (f64x2.splat (f64x2.extract_lane 0 (local.get 0)))) 717 718 ;; Integer arithmetic 719 (func (export "as-i8x16_add-operands") (param v128 i32 v128 i32) (result v128) 720 (i8x16.add (i8x16.replace_lane 0 (local.get 0) (local.get 1)) (i8x16.replace_lane 15 (local.get 2) (local.get 3)))) 721 (func (export "as-i16x8_add-operands") (param v128 i32 v128 i32) (result v128) 722 (i16x8.add (i16x8.replace_lane 0 (local.get 0) (local.get 1)) (i16x8.replace_lane 7 (local.get 2) (local.get 3)))) 723 (func (export "as-i32x4_add-operands") (param v128 i32 v128 i32) (result v128) 724 (i32x4.add (i32x4.replace_lane 0 (local.get 0) (local.get 1)) (i32x4.replace_lane 3 (local.get 2) (local.get 3)))) 725 (func (export "as-i64x2_add-operands") (param v128 i64 v128 i64) (result v128) 726 (i64x2.add (i64x2.replace_lane 0 (local.get 0) (local.get 1)) (i64x2.replace_lane 1 (local.get 2) (local.get 3)))) 727 728 (func (export "swizzle-as-i8x16_add-operands") (param v128 v128 v128 v128) (result v128) 729 (i8x16.add (i8x16.swizzle (local.get 0) (local.get 1)) (i8x16.swizzle (local.get 2) (local.get 3)))) 730 (func (export "shuffle-as-i8x16_sub-operands") (param v128 v128 v128 v128) (result v128) 731 (i8x16.sub (i8x16.shuffle 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 (local.get 0) (local.get 1)) 732 (i8x16.shuffle 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 (local.get 2) (local.get 3)))) 733 734 ;; Boolean horizontal reductions 735 (func (export "as-i8x16_any_true-operand") (param v128 i32) (result i32) 736 (v128.any_true (i8x16.replace_lane 0 (local.get 0) (local.get 1)))) 737 (func (export "as-i16x8_any_true-operand") (param v128 i32) (result i32) 738 (v128.any_true (i16x8.replace_lane 0 (local.get 0) (local.get 1)))) 739 (func (export "as-i32x4_any_true-operand1") (param v128 i32) (result i32) 740 (v128.any_true (i32x4.replace_lane 0 (local.get 0) (local.get 1)))) 741 (func (export "as-i32x4_any_true-operand2") (param v128 i64) (result i32) 742 (v128.any_true (i64x2.replace_lane 0 (local.get 0) (local.get 1)))) 743 744 (func (export "swizzle-as-i8x16_all_true-operands") (param v128 v128) (result i32) 745 (i8x16.all_true (i8x16.swizzle (local.get 0) (local.get 1)))) 746 (func (export "shuffle-as-i8x16_any_true-operands") (param v128 v128) (result i32) 747 (v128.any_true (i8x16.shuffle 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 (local.get 0) (local.get 1)))) 748 ) 749 750 (assert_return (invoke "as-i8x16_splat-operand" (v128.const i8x16 0xff 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)) 751 (assert_return (invoke "as-i16x8_splat-operand" (v128.const i16x8 -1 -1 -1 -1 0 0 0 0)) (v128.const i16x8 -1 -1 -1 -1 -1 -1 -1 -1)) 752 (assert_return (invoke "as-i32x4_splat-operand" (v128.const i32x4 0x10000 0 0 0)) (v128.const i32x4 65536 65536 65536 65536)) 753 (assert_return (invoke "as-f32x4_splat-operand" (v128.const f32x4 3.14 nan nan nan)) (v128.const f32x4 3.14 3.14 3.14 3.14)) 754 (assert_return (invoke "as-i64x2_splat-operand" (v128.const i64x2 -1 0)) (v128.const i64x2 -1 -1)) 755 (assert_return (invoke "as-f64x2_splat-operand" (v128.const f64x2 inf nan)) (v128.const f64x2 inf inf)) 756 (assert_return (invoke "as-i8x16_add-operands" 757 (v128.const i8x16 0xff 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16) (i32.const 1) 758 (v128.const i8x16 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 0xff) (i32.const 1)) 759 (v128.const i8x16 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17 17)) 760 (assert_return (invoke "as-i16x8_add-operands" 761 (v128.const i16x8 -1 4 9 16 25 36 49 64) (i32.const 1) 762 (v128.const i16x8 64 49 36 25 16 9 4 -1) (i32.const 1)) 763 (v128.const i16x8 65 53 45 41 41 45 53 65)) 764 (assert_return (invoke "as-i32x4_add-operands" 765 (v128.const i32x4 -1 8 27 64) (i32.const 1) (v128.const i32x4 64 27 8 -1) (i32.const 1)) (v128.const i32x4 65 35 35 65)) 766 (assert_return (invoke "as-i64x2_add-operands" 767 (v128.const i64x2 -1 8) (i64.const 1) (v128.const i64x2 64 27) (i64.const 1)) (v128.const i64x2 65 9)) 768 769 (assert_return (invoke "swizzle-as-i8x16_add-operands" 770 (v128.const i8x16 -16 -15 -14 -13 -12 -11 -10 -9 -8 -7 -6 -5 -4 -3 -2 -1) 771 (v128.const i8x16 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15) 772 (v128.const i8x16 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15) 773 (v128.const i8x16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0)) 774 (v128.const i8x16 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1)) 775 (assert_return (invoke "shuffle-as-i8x16_sub-operands" 776 (v128.const i8x16 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15) 777 (v128.const i8x16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0) 778 (v128.const i8x16 -16 -15 -14 -13 -12 -11 -10 -9 -8 -7 -6 -5 -4 -3 -2 -1) 779 (v128.const i8x16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0)) 780 (v128.const i8x16 -15 -13 -11 -9 -7 -5 -3 -1 1 3 5 7 9 11 13 15)) 781 782 (assert_return (invoke "as-i8x16_any_true-operand" (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0) (i32.const 1)) (i32.const 1)) 783 (assert_return (invoke "as-i16x8_any_true-operand" (v128.const i16x8 0 0 0 0 0 0 0 0) (i32.const 1)) (i32.const 1)) 784 (assert_return (invoke "as-i32x4_any_true-operand1" (v128.const i32x4 1 0 0 0) (i32.const 0)) (i32.const 0)) 785 (assert_return (invoke "as-i32x4_any_true-operand2" (v128.const i64x2 1 0) (i64.const 0)) (i32.const 0)) 786 787 (assert_return (invoke "swizzle-as-i8x16_all_true-operands" 788 (v128.const i8x16 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16) 789 (v128.const i8x16 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15)) (i32.const 1)) 790 (assert_return (invoke "swizzle-as-i8x16_all_true-operands" 791 (v128.const i8x16 -16 -15 -14 -13 -12 -11 -10 -9 -8 -7 -6 -5 -4 -3 -2 -1) 792 (v128.const i8x16 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 16)) (i32.const 0)) 793 (assert_return (invoke "shuffle-as-i8x16_any_true-operands" 794 (v128.const i8x16 -16 -15 -14 -13 -12 -11 -10 -9 -8 -7 -6 -5 -4 -3 -2 -1) 795 (v128.const i8x16 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15)) (i32.const 1)) 796 797 ;; Load and store 798 799 (module 800 (memory 1) 801 (func (export "as-v128_store-operand-1") (param v128 i32) (result v128) 802 (v128.store (i32.const 0) (i8x16.replace_lane 0 (local.get 0) (local.get 1))) 803 (v128.load (i32.const 0))) 804 (func (export "as-v128_store-operand-2") (param v128 i32) (result v128) 805 (v128.store (i32.const 0) (i16x8.replace_lane 0 (local.get 0) (local.get 1))) 806 (v128.load (i32.const 0))) 807 (func (export "as-v128_store-operand-3") (param v128 i32) (result v128) 808 (v128.store (i32.const 0) (i32x4.replace_lane 0 (local.get 0) (local.get 1))) 809 (v128.load (i32.const 0))) 810 (func (export "as-v128_store-operand-4") (param v128 f32) (result v128) 811 (v128.store (i32.const 0) (f32x4.replace_lane 0 (local.get 0) (local.get 1))) 812 (v128.load (i32.const 0))) 813 (func (export "as-v128_store-operand-5") (param v128 i64) (result v128) 814 (v128.store (i32.const 0) (i64x2.replace_lane 0 (local.get 0) (local.get 1))) 815 (v128.load (i32.const 0))) 816 (func (export "as-v128_store-operand-6") (param v128 f64) (result v128) 817 (v128.store (i32.const 0) (f64x2.replace_lane 0 (local.get 0) (local.get 1))) 818 (v128.load (i32.const 0))) 819 ) 820 821 (assert_return (invoke "as-v128_store-operand-1" (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0) (i32.const 1)) (v128.const i8x16 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) 822 (assert_return (invoke "as-v128_store-operand-2" (v128.const i16x8 0 0 0 0 0 0 0 0) (i32.const 256)) (v128.const i16x8 0x100 0 0 0 0 0 0 0)) 823 (assert_return (invoke "as-v128_store-operand-3" (v128.const i32x4 0 0 0 0) (i32.const 0xffffffff)) (v128.const i32x4 -1 0 0 0)) 824 (assert_return (invoke "as-v128_store-operand-4" (v128.const f32x4 0 0 0 0) (f32.const 3.14)) (v128.const f32x4 3.14 0 0 0)) 825 (assert_return (invoke "as-v128_store-operand-5" (v128.const i64x2 0 0) (i64.const 0xffffffffffffffff)) (v128.const i64x2 -1 0)) 826 (assert_return (invoke "as-v128_store-operand-6" (v128.const f64x2 0 0) (f64.const 3.14)) (v128.const f64x2 3.14 0)) 827 828 ;; As the argument of wasm core ops 829 830 (module 831 (global $g (mut v128) (v128.const f32x4 0.0 0.0 0.0 0.0)) 832 (global $h (mut v128) (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) 833 (func (export "as-if-condition-value") (param v128) (result i32) 834 (if (result i32) (i8x16.extract_lane_s 0 (local.get 0)) (then (i32.const 0xff)) (else (i32.const 0)))) 835 (func (export "as-return-value-1") (param v128 i32) (result v128) 836 (return (i16x8.replace_lane 0 (local.get 0) (local.get 1)))) 837 (func (export "as-local_set-value") (param v128) (result i32) (local i32) 838 (local.set 1 (i32x4.extract_lane 0 (local.get 0))) 839 (return (local.get 1))) 840 (func (export "as-global_set-value-1") (param v128 f32) (result v128) 841 (global.set $g (f32x4.replace_lane 0 (local.get 0) (local.get 1))) 842 (return (global.get $g))) 843 844 (func (export "as-return-value-2") (param v128 v128) (result v128) 845 (return (i8x16.swizzle (local.get 0) (local.get 1)))) 846 (func (export "as-global_set-value-2") (param v128 v128) (result v128) 847 (global.set $h (i8x16.shuffle 0 1 2 3 4 5 6 7 24 25 26 27 28 29 30 31 (local.get 0) (local.get 1))) 848 (return (global.get $h))) 849 850 (func (export "as-local_set-value-1") (param v128) (result i64) (local i64) 851 (local.set 1 (i64x2.extract_lane 0 (local.get 0))) 852 (return (local.get 1))) 853 (func (export "as-global_set-value-3") (param v128 f64) (result v128) 854 (global.set $g (f64x2.replace_lane 0 (local.get 0) (local.get 1))) 855 (return (global.get $g))) 856 ) 857 858 (assert_return (invoke "as-if-condition-value" (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) (i32.const 0)) 859 (assert_return (invoke "as-return-value-1" (v128.const i16x8 0 0 0 0 0 0 0 0) (i32.const 1)) (v128.const i16x8 1 0 0 0 0 0 0 0)) 860 (assert_return (invoke "as-local_set-value" (v128.const i32x4 -1 -1 -1 -1)) (i32.const -1)) 861 (assert_return (invoke "as-global_set-value-1" (v128.const f32x4 0 0 0 0)(f32.const 3.14)) (v128.const f32x4 3.14 0 0 0)) 862 863 (assert_return (invoke "as-return-value-2" 864 (v128.const i8x16 -16 -15 -14 -13 -12 -11 -10 -9 -8 -7 -6 -5 -4 -3 -2 -1) 865 (v128.const i8x16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0)) 866 (v128.const i8x16 -1 -2 -3 -4 -5 -6 -7 -8 -9 -10 -11 -12 -13 -14 -15 -16)) 867 (assert_return (invoke "as-global_set-value-2" 868 (v128.const i8x16 -16 -15 -14 -13 -12 -11 -10 -9 -8 -7 -6 -5 -4 -3 -2 -1) 869 (v128.const i8x16 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1)) 870 (v128.const i8x16 -16 -15 -14 -13 -12 -11 -10 -9 8 7 6 5 4 3 2 1)) 871 872 (assert_return (invoke "as-local_set-value-1" (v128.const i64x2 -1 -1)) (i64.const -1)) 873 (assert_return (invoke "as-global_set-value-3" (v128.const f64x2 0 0)(f64.const 3.14)) (v128.const f64x2 3.14 0)) 874 875 ;; Non-nat lane index 876 877 (assert_malformed (module quote "(func (result i32) (i8x16.extract_lane_u +0x0f (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)))") "unexpected token") 878 (assert_malformed (module quote "(func (result f32) (f32x4.extract_lane +03 (v128.const f32x4 0 0 0 0)))") "unexpected token") 879 (assert_malformed (module quote "(func (result i64) (i64x2.extract_lane +1 (v128.const i64x2 0 0)))") "unexpected token") 880 (assert_malformed (module quote "(func (result v128) (i8x16.replace_lane +015 (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0) (i32.const 1)))") "unexpected token") 881 (assert_malformed (module quote "(func (result v128) (i16x8.replace_lane +0x7 (v128.const i16x8 0 0 0 0 0 0 0 0) (i32.const 1)))") "unexpected token") 882 (assert_malformed (module quote "(func (result v128) (i32x4.replace_lane +3 (v128.const i32x4 0 0 0 0) (i32.const 1)))") "unexpected token") 883 (assert_malformed (module quote "(func (result v128) (f64x2.replace_lane +0x01 (v128.const f64x2 0 0) (f64.const 1.0)))") "unexpected token") 884 885 ;; Lane index literal 886 887 (module (func (result i32) (i8x16.extract_lane_s 0x0f (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)))) 888 (module (func (result i32) (i16x8.extract_lane_s 0x07 (v128.const i16x8 0 0 0 0 0 0 0 0)))) 889 (module (func (result i32) (i16x8.extract_lane_u 0x0_7 (v128.const i16x8 0 0 0 0 0 0 0 0)))) 890 (module (func (result i32) (i32x4.extract_lane 03 (v128.const i32x4 0 0 0 0)))) 891 (module (func (result f64) (f64x2.extract_lane 0x1 (v128.const f64x2 0 0)))) 892 (module (func (result v128) (f32x4.replace_lane 0x3 (v128.const f32x4 0 0 0 0) (f32.const 1.0)))) 893 (module (func (result v128) (i64x2.replace_lane 01 (v128.const i64x2 0 0) (i64.const 1)))) 894 895 ;; 1.0 is malformed lane index 896 897 (assert_malformed (module quote "(func (result i32) (i8x16.extract_lane_s 1.0 (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)))") "unexpected token") 898 899 ;; Test operation with empty argument 900 901 (assert_malformed 902 (module quote 903 "(func $i8x16.extract_lane_s-1st-arg-empty (result i32)" 904 " (i8x16.extract_lane_s (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0))" 905 ")" 906 ) 907 "unexpected token" 908 ) 909 (assert_invalid 910 (module 911 (func $i8x16.extract_lane_s-2nd-arg-empty (result i32) 912 (i8x16.extract_lane_s 0) 913 ) 914 ) 915 "type mismatch" 916 ) 917 (assert_malformed 918 (module quote 919 "(func $i8x16.extract_lane_s-arg-empty (result i32)" 920 " (i8x16.extract_lane_s)" 921 ")" 922 ) 923 "unexpected token" 924 ) 925 (assert_malformed 926 (module quote 927 "(func $i16x8.extract_lane_u-1st-arg-empty (result i32)" 928 " (i16x8.extract_lane_u (v128.const i16x8 0 0 0 0 0 0 0 0))" 929 ")" 930 ) 931 "unexpected token" 932 ) 933 (assert_invalid 934 (module 935 (func $i16x8.extract_lane_u-2nd-arg-empty (result i32) 936 (i16x8.extract_lane_u 0) 937 ) 938 ) 939 "type mismatch" 940 ) 941 (assert_malformed 942 (module quote 943 "(func $i16x8.extract_lane_u-arg-empty (result i32)" 944 " (i16x8.extract_lane_u)" 945 ")" 946 ) 947 "unexpected token" 948 ) 949 (assert_malformed 950 (module quote 951 "(func $i32x4.extract_lane-1st-arg-empty (result i32)" 952 " (i32x4.extract_lane (v128.const i32x4 0 0 0 0))" 953 ")" 954 ) 955 "unexpected token" 956 ) 957 (assert_invalid 958 (module 959 (func $i32x4.extract_lane-2nd-arg-empty (result i32) 960 (i32x4.extract_lane 0) 961 ) 962 ) 963 "type mismatch" 964 ) 965 (assert_malformed 966 (module quote 967 "(func $i32x4.extract_lane-arg-empty (result i32)" 968 " (i32x4.extract_lane)" 969 ")" 970 ) 971 "unexpected token" 972 ) 973 (assert_malformed 974 (module quote 975 "(func $i64x2.extract_lane-1st-arg-empty (result i64)" 976 " (i64x2.extract_lane (v128.const i64x2 0 0))" 977 ")" 978 ) 979 "unexpected token" 980 ) 981 (assert_invalid 982 (module 983 (func $i64x2.extract_lane-2nd-arg-empty (result i64) 984 (i64x2.extract_lane 0) 985 ) 986 ) 987 "type mismatch" 988 ) 989 (assert_malformed 990 (module quote 991 "(func $i64x2.extract_lane-arg-empty (result i64)" 992 " (i64x2.extract_lane)" 993 ")" 994 ) 995 "unexpected token" 996 ) 997 (assert_malformed 998 (module quote 999 "(func $f32x4.extract_lane-1st-arg-empty (result f32)" 1000 " (f32x4.extract_lane (v128.const f32x4 0 0 0 0))" 1001 ")" 1002 ) 1003 "unexpected token" 1004 ) 1005 (assert_invalid 1006 (module 1007 (func $f32x4.extract_lane-2nd-arg-empty (result f32) 1008 (f32x4.extract_lane 0) 1009 ) 1010 ) 1011 "type mismatch" 1012 ) 1013 (assert_malformed 1014 (module quote 1015 "(func $f32x4.extract_lane-arg-empty (result f32)" 1016 " (f32x4.extract_lane)" 1017 ")" 1018 ) 1019 "unexpected token" 1020 ) 1021 (assert_malformed 1022 (module quote 1023 "(func $f64x2.extract_lane-1st-arg-empty (result f64)" 1024 " (f64x2.extract_lane (v128.const f64x2 0 0))" 1025 ")" 1026 ) 1027 "unexpected token" 1028 ) 1029 (assert_invalid 1030 (module 1031 (func $f64x2.extract_lane-2nd-arg-empty (result f64) 1032 (f64x2.extract_lane 0) 1033 ) 1034 ) 1035 "type mismatch" 1036 ) 1037 (assert_malformed 1038 (module quote 1039 "(func $f64x2.extract_lane-arg-empty (result f64)" 1040 " (f64x2.extract_lane)" 1041 ")" 1042 ) 1043 "unexpected token" 1044 ) 1045 (assert_malformed 1046 (module quote 1047 "(func $i8x16.replace_lane-1st-arg-empty (result v128)" 1048 " (i8x16.replace_lane (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0) (i32.const 1))" 1049 ")" 1050 ) 1051 "unexpected token" 1052 ) 1053 (assert_invalid 1054 (module 1055 (func $i8x16.replace_lane-2nd-arg-empty (result v128) 1056 (i8x16.replace_lane 0 (i32.const 1)) 1057 ) 1058 ) 1059 "type mismatch" 1060 ) 1061 (assert_invalid 1062 (module 1063 (func $i8x16.replace_lane-3rd-arg-empty (result v128) 1064 (i8x16.replace_lane 0 (v128.const i8x16 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0)) 1065 ) 1066 ) 1067 "type mismatch" 1068 ) 1069 (assert_malformed 1070 (module quote 1071 "(func $i8x16.replace_lane-arg-empty (result v128)" 1072 " (i8x16.replace_lane)" 1073 ")" 1074 ) 1075 "unexpected token" 1076 ) 1077 (assert_malformed 1078 (module quote 1079 "(func $i16x8.replace_lane-1st-arg-empty (result v128)" 1080 " (i16x8.replace_lane (v128.const i16x8 0 0 0 0 0 0 0 0) (i32.const 1))" 1081 ")" 1082 ) 1083 "unexpected token" 1084 ) 1085 (assert_invalid 1086 (module 1087 (func $i16x8.replace_lane-2nd-arg-empty (result v128) 1088 (i16x8.replace_lane 0 (i32.const 1)) 1089 ) 1090 ) 1091 "type mismatch" 1092 ) 1093 (assert_invalid 1094 (module 1095 (func $i16x8.replace_lane-3rd-arg-empty (result v128) 1096 (i16x8.replace_lane 0 (v128.const i16x8 0 0 0 0 0 0 0 0)) 1097 ) 1098 ) 1099 "type mismatch" 1100 ) 1101 (assert_malformed 1102 (module quote 1103 "(func $i16x8.replace_lane-arg-empty (result v128)" 1104 " (i16x8.replace_lane)" 1105 ")" 1106 ) 1107 "unexpected token" 1108 ) 1109 (assert_malformed 1110 (module quote 1111 "(func $i32x4.replace_lane-1st-arg-empty (result v128)" 1112 " (i32x4.replace_lane (v128.const i32x4 0 0 0 0) (i32.const 1))" 1113 ")" 1114 ) 1115 "unexpected token" 1116 ) 1117 (assert_invalid 1118 (module 1119 (func $i32x4.replace_lane-2nd-arg-empty (result v128) 1120 (i32x4.replace_lane 0 (i32.const 1)) 1121 ) 1122 ) 1123 "type mismatch" 1124 ) 1125 (assert_invalid 1126 (module 1127 (func $i32x4.replace_lane-3rd-arg-empty (result v128) 1128 (i32x4.replace_lane 0 (v128.const i32x4 0 0 0 0)) 1129 ) 1130 ) 1131 "type mismatch" 1132 ) 1133 (assert_malformed 1134 (module quote 1135 "(func $i32x4.replace_lane-arg-empty (result v128)" 1136 " (i32x4.replace_lane)" 1137 ")" 1138 ) 1139 "unexpected token" 1140 ) 1141 (assert_malformed 1142 (module quote 1143 "(func $f32x4.replace_lane-1st-arg-empty (result v128)" 1144 " (f32x4.replace_lane (v128.const f32x4 0 0 0 0) (f32.const 1.0))" 1145 ")" 1146 ) 1147 "unexpected token" 1148 ) 1149 (assert_invalid 1150 (module 1151 (func $f32x4.replace_lane-2nd-arg-empty (result v128) 1152 (f32x4.replace_lane 0 (f32.const 1.0)) 1153 ) 1154 ) 1155 "type mismatch" 1156 ) 1157 (assert_invalid 1158 (module 1159 (func $f32x4.replace_lane-3rd-arg-empty (result v128) 1160 (f32x4.replace_lane 0 (v128.const f32x4 0 0 0 0)) 1161 ) 1162 ) 1163 "type mismatch" 1164 ) 1165 (assert_malformed 1166 (module quote 1167 "(func $f32x4.replace_lane-arg-empty (result v128)" 1168 " (f32x4.replace_lane)" 1169 ")" 1170 ) 1171 "unexpected token" 1172 ) 1173 (assert_malformed 1174 (module quote 1175 "(func $i64x2.replace_lane-1st-arg-empty (result v128)" 1176 " (i64x2.replace_lane (v128.const i64x2 0 0) (i64.const 1))" 1177 ")" 1178 ) 1179 "unexpected token" 1180 ) 1181 (assert_invalid 1182 (module 1183 (func $i64x2.replace_lane-2nd-arg-empty (result v128) 1184 (i64x2.replace_lane 0 (i64.const 1)) 1185 ) 1186 ) 1187 "type mismatch" 1188 ) 1189 (assert_invalid 1190 (module 1191 (func $i64x2.replace_lane-3rd-arg-empty (result v128) 1192 (i64x2.replace_lane 0 (v128.const i64x2 0 0)) 1193 ) 1194 ) 1195 "type mismatch" 1196 ) 1197 (assert_malformed 1198 (module quote 1199 "(func $i64x2.replace_lane-arg-empty (result v128)" 1200 " (i64x2.replace_lane)" 1201 ")" 1202 ) 1203 "unexpected token" 1204 ) 1205 (assert_malformed 1206 (module quote 1207 "(func $f64x2.replace_lane-1st-arg-empty (result v128)" 1208 " (f64x2.replace_lane (v128.const f64x2 0 0) (f64.const 1.0))" 1209 ")" 1210 ) 1211 "unexpected token" 1212 ) 1213 (assert_invalid 1214 (module 1215 (func $f64x2.replace_lane-2nd-arg-empty (result v128) 1216 (f64x2.replace_lane 0 (f64.const 1.0)) 1217 ) 1218 ) 1219 "type mismatch" 1220 ) 1221 (assert_invalid 1222 (module 1223 (func $f64x2.replace_lane-3rd-arg-empty (result v128) 1224 (f64x2.replace_lane 0 (v128.const f64x2 0 0)) 1225 ) 1226 ) 1227 "type mismatch" 1228 ) 1229 (assert_malformed 1230 (module quote 1231 "(func $f64x2.replace_lane-arg-empty (result v128)" 1232 " (f64x2.replace_lane)" 1233 ")" 1234 ) 1235 "unexpected token" 1236 ) 1237 (assert_malformed 1238 (module quote 1239 "(func $i8x16.shuffle-1st-arg-empty (result v128)" 1240 " (i8x16.shuffle" 1241 " (v128.const i8x16 0 1 2 3 5 6 6 7 8 9 10 11 12 13 14 15)" 1242 " (v128.const i8x16 1 2 3 5 6 6 7 8 9 10 11 12 13 14 15 16)" 1243 " )" 1244 ")" 1245 ) 1246 "invalid lane length" 1247 ) 1248 (assert_invalid 1249 (module 1250 (func $i8x16.shuffle-2nd-arg-empty (result v128) 1251 (i8x16.shuffle 0 1 2 3 5 6 6 7 8 9 10 11 12 13 14 15 1252 (v128.const i8x16 1 2 3 5 6 6 7 8 9 10 11 12 13 14 15 16) 1253 ) 1254 ) 1255 ) 1256 "type mismatch" 1257 ) 1258 (assert_malformed 1259 (module quote 1260 "(func $i8x16.shuffle-arg-empty (result v128)" 1261 " (i8x16.shuffle)" 1262 ")" 1263 ) 1264 "invalid lane length" 1265 )