wa-lang.org/wazero@v1.0.2/internal/integration_test/spectest/v2/testdata/select.wast (about) 1 (module 2 ;; Auxiliary 3 (func $dummy) 4 (table $tab funcref (elem $dummy)) 5 (memory 1) 6 7 (func (export "select-i32") (param i32 i32 i32) (result i32) 8 (select (local.get 0) (local.get 1) (local.get 2)) 9 ) 10 (func (export "select-i64") (param i64 i64 i32) (result i64) 11 (select (local.get 0) (local.get 1) (local.get 2)) 12 ) 13 (func (export "select-f32") (param f32 f32 i32) (result f32) 14 (select (local.get 0) (local.get 1) (local.get 2)) 15 ) 16 (func (export "select-f64") (param f64 f64 i32) (result f64) 17 (select (local.get 0) (local.get 1) (local.get 2)) 18 ) 19 20 (func (export "select-i32-t") (param i32 i32 i32) (result i32) 21 (select (result i32) (local.get 0) (local.get 1) (local.get 2)) 22 ) 23 (func (export "select-i64-t") (param i64 i64 i32) (result i64) 24 (select (result i64) (local.get 0) (local.get 1) (local.get 2)) 25 ) 26 (func (export "select-f32-t") (param f32 f32 i32) (result f32) 27 (select (result f32) (local.get 0) (local.get 1) (local.get 2)) 28 ) 29 (func (export "select-f64-t") (param f64 f64 i32) (result f64) 30 (select (result f64) (local.get 0) (local.get 1) (local.get 2)) 31 ) 32 (func (export "select-funcref") (param funcref funcref i32) (result funcref) 33 (select (result funcref) (local.get 0) (local.get 1) (local.get 2)) 34 ) 35 (func (export "select-externref") (param externref externref i32) (result externref) 36 (select (result externref) (local.get 0) (local.get 1) (local.get 2)) 37 ) 38 39 ;; As the argument of control constructs and instructions 40 41 (func (export "as-select-first") (param i32) (result i32) 42 (select (select (i32.const 0) (i32.const 1) (local.get 0)) (i32.const 2) (i32.const 3)) 43 ) 44 (func (export "as-select-mid") (param i32) (result i32) 45 (select (i32.const 2) (select (i32.const 0) (i32.const 1) (local.get 0)) (i32.const 3)) 46 ) 47 (func (export "as-select-last") (param i32) (result i32) 48 (select (i32.const 2) (i32.const 3) (select (i32.const 0) (i32.const 1) (local.get 0))) 49 ) 50 51 (func (export "as-loop-first") (param i32) (result i32) 52 (loop (result i32) (select (i32.const 2) (i32.const 3) (local.get 0)) (call $dummy) (call $dummy)) 53 ) 54 (func (export "as-loop-mid") (param i32) (result i32) 55 (loop (result i32) (call $dummy) (select (i32.const 2) (i32.const 3) (local.get 0)) (call $dummy)) 56 ) 57 (func (export "as-loop-last") (param i32) (result i32) 58 (loop (result i32) (call $dummy) (call $dummy) (select (i32.const 2) (i32.const 3) (local.get 0))) 59 ) 60 61 (func (export "as-if-condition") (param i32) 62 (select (i32.const 2) (i32.const 3) (local.get 0)) (if (then (call $dummy))) 63 ) 64 (func (export "as-if-then") (param i32) (result i32) 65 (if (result i32) (i32.const 1) (then (select (i32.const 2) (i32.const 3) (local.get 0))) (else (i32.const 4))) 66 ) 67 (func (export "as-if-else") (param i32) (result i32) 68 (if (result i32) (i32.const 0) (then (i32.const 2)) (else (select (i32.const 2) (i32.const 3) (local.get 0)))) 69 ) 70 71 (func (export "as-br_if-first") (param i32) (result i32) 72 (block (result i32) (br_if 0 (select (i32.const 2) (i32.const 3) (local.get 0)) (i32.const 4))) 73 ) 74 (func (export "as-br_if-last") (param i32) (result i32) 75 (block (result i32) (br_if 0 (i32.const 2) (select (i32.const 2) (i32.const 3) (local.get 0)))) 76 ) 77 78 (func (export "as-br_table-first") (param i32) (result i32) 79 (block (result i32) (select (i32.const 2) (i32.const 3) (local.get 0)) (i32.const 2) (br_table 0 0)) 80 ) 81 (func (export "as-br_table-last") (param i32) (result i32) 82 (block (result i32) (i32.const 2) (select (i32.const 2) (i32.const 3) (local.get 0)) (br_table 0 0)) 83 ) 84 85 (func $func (param i32 i32) (result i32) (local.get 0)) 86 (type $check (func (param i32 i32) (result i32))) 87 (table $t funcref (elem $func)) 88 (func (export "as-call_indirect-first") (param i32) (result i32) 89 (block (result i32) 90 (call_indirect $t (type $check) 91 (select (i32.const 2) (i32.const 3) (local.get 0)) (i32.const 1) (i32.const 0) 92 ) 93 ) 94 ) 95 (func (export "as-call_indirect-mid") (param i32) (result i32) 96 (block (result i32) 97 (call_indirect $t (type $check) 98 (i32.const 1) (select (i32.const 2) (i32.const 3) (local.get 0)) (i32.const 0) 99 ) 100 ) 101 ) 102 (func (export "as-call_indirect-last") (param i32) (result i32) 103 (block (result i32) 104 (call_indirect $t (type $check) 105 (i32.const 1) (i32.const 4) (select (i32.const 2) (i32.const 3) (local.get 0)) 106 ) 107 ) 108 ) 109 110 (func (export "as-store-first") (param i32) 111 (select (i32.const 0) (i32.const 4) (local.get 0)) (i32.const 1) (i32.store) 112 ) 113 (func (export "as-store-last") (param i32) 114 (i32.const 8) (select (i32.const 1) (i32.const 2) (local.get 0)) (i32.store) 115 ) 116 117 (func (export "as-memory.grow-value") (param i32) (result i32) 118 (memory.grow (select (i32.const 1) (i32.const 2) (local.get 0))) 119 ) 120 121 (func $f (param i32) (result i32) (local.get 0)) 122 123 (func (export "as-call-value") (param i32) (result i32) 124 (call $f (select (i32.const 1) (i32.const 2) (local.get 0))) 125 ) 126 (func (export "as-return-value") (param i32) (result i32) 127 (select (i32.const 1) (i32.const 2) (local.get 0)) (return) 128 ) 129 (func (export "as-drop-operand") (param i32) 130 (drop (select (i32.const 1) (i32.const 2) (local.get 0))) 131 ) 132 (func (export "as-br-value") (param i32) (result i32) 133 (block (result i32) (br 0 (select (i32.const 1) (i32.const 2) (local.get 0)))) 134 ) 135 (func (export "as-local.set-value") (param i32) (result i32) 136 (local i32) (local.set 0 (select (i32.const 1) (i32.const 2) (local.get 0))) (local.get 0) 137 ) 138 (func (export "as-local.tee-value") (param i32) (result i32) 139 (local.tee 0 (select (i32.const 1) (i32.const 2) (local.get 0))) 140 ) 141 (global $a (mut i32) (i32.const 10)) 142 (func (export "as-global.set-value") (param i32) (result i32) 143 (global.set $a (select (i32.const 1) (i32.const 2) (local.get 0))) 144 (global.get $a) 145 ) 146 (func (export "as-load-operand") (param i32) (result i32) 147 (i32.load (select (i32.const 0) (i32.const 4) (local.get 0))) 148 ) 149 150 (func (export "as-unary-operand") (param i32) (result i32) 151 (i32.eqz (select (i32.const 0) (i32.const 1) (local.get 0))) 152 ) 153 (func (export "as-binary-operand") (param i32) (result i32) 154 (i32.mul 155 (select (i32.const 1) (i32.const 2) (local.get 0)) 156 (select (i32.const 1) (i32.const 2) (local.get 0)) 157 ) 158 ) 159 (func (export "as-test-operand") (param i32) (result i32) 160 (block (result i32) 161 (i32.eqz (select (i32.const 0) (i32.const 1) (local.get 0))) 162 ) 163 ) 164 165 (func (export "as-compare-left") (param i32) (result i32) 166 (block (result i32) 167 (i32.le_s (select (i32.const 1) (i32.const 2) (local.get 0)) (i32.const 1)) 168 ) 169 ) 170 (func (export "as-compare-right") (param i32) (result i32) 171 (block (result i32) 172 (i32.ne (i32.const 1) (select (i32.const 0) (i32.const 1) (local.get 0))) 173 ) 174 ) 175 176 (func (export "as-convert-operand") (param i32) (result i32) 177 (block (result i32) 178 (i32.wrap_i64 (select (i64.const 1) (i64.const 0) (local.get 0))) 179 ) 180 ) 181 ) 182 183 (assert_return (invoke "select-i32" (i32.const 1) (i32.const 2) (i32.const 1)) (i32.const 1)) 184 (assert_return (invoke "select-i64" (i64.const 2) (i64.const 1) (i32.const 1)) (i64.const 2)) 185 (assert_return (invoke "select-f32" (f32.const 1) (f32.const 2) (i32.const 1)) (f32.const 1)) 186 (assert_return (invoke "select-f64" (f64.const 1) (f64.const 2) (i32.const 1)) (f64.const 1)) 187 188 (assert_return (invoke "select-i32" (i32.const 1) (i32.const 2) (i32.const 0)) (i32.const 2)) 189 (assert_return (invoke "select-i32" (i32.const 2) (i32.const 1) (i32.const 0)) (i32.const 1)) 190 (assert_return (invoke "select-i64" (i64.const 2) (i64.const 1) (i32.const -1)) (i64.const 2)) 191 (assert_return (invoke "select-i64" (i64.const 2) (i64.const 1) (i32.const 0xf0f0f0f0)) (i64.const 2)) 192 193 (assert_return (invoke "select-f32" (f32.const nan) (f32.const 1) (i32.const 1)) (f32.const nan)) 194 (assert_return (invoke "select-f32" (f32.const nan:0x20304) (f32.const 1) (i32.const 1)) (f32.const nan:0x20304)) 195 (assert_return (invoke "select-f32" (f32.const nan) (f32.const 1) (i32.const 0)) (f32.const 1)) 196 (assert_return (invoke "select-f32" (f32.const nan:0x20304) (f32.const 1) (i32.const 0)) (f32.const 1)) 197 (assert_return (invoke "select-f32" (f32.const 2) (f32.const nan) (i32.const 1)) (f32.const 2)) 198 (assert_return (invoke "select-f32" (f32.const 2) (f32.const nan:0x20304) (i32.const 1)) (f32.const 2)) 199 (assert_return (invoke "select-f32" (f32.const 2) (f32.const nan) (i32.const 0)) (f32.const nan)) 200 (assert_return (invoke "select-f32" (f32.const 2) (f32.const nan:0x20304) (i32.const 0)) (f32.const nan:0x20304)) 201 202 (assert_return (invoke "select-f64" (f64.const nan) (f64.const 1) (i32.const 1)) (f64.const nan)) 203 (assert_return (invoke "select-f64" (f64.const nan:0x20304) (f64.const 1) (i32.const 1)) (f64.const nan:0x20304)) 204 (assert_return (invoke "select-f64" (f64.const nan) (f64.const 1) (i32.const 0)) (f64.const 1)) 205 (assert_return (invoke "select-f64" (f64.const nan:0x20304) (f64.const 1) (i32.const 0)) (f64.const 1)) 206 (assert_return (invoke "select-f64" (f64.const 2) (f64.const nan) (i32.const 1)) (f64.const 2)) 207 (assert_return (invoke "select-f64" (f64.const 2) (f64.const nan:0x20304) (i32.const 1)) (f64.const 2)) 208 (assert_return (invoke "select-f64" (f64.const 2) (f64.const nan) (i32.const 0)) (f64.const nan)) 209 (assert_return (invoke "select-f64" (f64.const 2) (f64.const nan:0x20304) (i32.const 0)) (f64.const nan:0x20304)) 210 211 (assert_return (invoke "select-i32-t" (i32.const 1) (i32.const 2) (i32.const 1)) (i32.const 1)) 212 (assert_return (invoke "select-i64-t" (i64.const 2) (i64.const 1) (i32.const 1)) (i64.const 2)) 213 (assert_return (invoke "select-f32-t" (f32.const 1) (f32.const 2) (i32.const 1)) (f32.const 1)) 214 (assert_return (invoke "select-f64-t" (f64.const 1) (f64.const 2) (i32.const 1)) (f64.const 1)) 215 (assert_return (invoke "select-funcref" (ref.null func) (ref.null func) (i32.const 1)) (ref.null func)) 216 (assert_return (invoke "select-externref" (ref.extern 1) (ref.extern 2) (i32.const 1)) (ref.extern 1)) 217 218 (assert_return (invoke "select-i32-t" (i32.const 1) (i32.const 2) (i32.const 0)) (i32.const 2)) 219 (assert_return (invoke "select-i32-t" (i32.const 2) (i32.const 1) (i32.const 0)) (i32.const 1)) 220 (assert_return (invoke "select-i64-t" (i64.const 2) (i64.const 1) (i32.const -1)) (i64.const 2)) 221 (assert_return (invoke "select-i64-t" (i64.const 2) (i64.const 1) (i32.const 0xf0f0f0f0)) (i64.const 2)) 222 (assert_return (invoke "select-externref" (ref.extern 1) (ref.extern 2) (i32.const 0)) (ref.extern 2)) 223 (assert_return (invoke "select-externref" (ref.extern 2) (ref.extern 1) (i32.const 0)) (ref.extern 1)) 224 225 (assert_return (invoke "select-f32-t" (f32.const nan) (f32.const 1) (i32.const 1)) (f32.const nan)) 226 (assert_return (invoke "select-f32-t" (f32.const nan:0x20304) (f32.const 1) (i32.const 1)) (f32.const nan:0x20304)) 227 (assert_return (invoke "select-f32-t" (f32.const nan) (f32.const 1) (i32.const 0)) (f32.const 1)) 228 (assert_return (invoke "select-f32-t" (f32.const nan:0x20304) (f32.const 1) (i32.const 0)) (f32.const 1)) 229 (assert_return (invoke "select-f32-t" (f32.const 2) (f32.const nan) (i32.const 1)) (f32.const 2)) 230 (assert_return (invoke "select-f32-t" (f32.const 2) (f32.const nan:0x20304) (i32.const 1)) (f32.const 2)) 231 (assert_return (invoke "select-f32-t" (f32.const 2) (f32.const nan) (i32.const 0)) (f32.const nan)) 232 (assert_return (invoke "select-f32-t" (f32.const 2) (f32.const nan:0x20304) (i32.const 0)) (f32.const nan:0x20304)) 233 234 (assert_return (invoke "select-f64-t" (f64.const nan) (f64.const 1) (i32.const 1)) (f64.const nan)) 235 (assert_return (invoke "select-f64-t" (f64.const nan:0x20304) (f64.const 1) (i32.const 1)) (f64.const nan:0x20304)) 236 (assert_return (invoke "select-f64-t" (f64.const nan) (f64.const 1) (i32.const 0)) (f64.const 1)) 237 (assert_return (invoke "select-f64-t" (f64.const nan:0x20304) (f64.const 1) (i32.const 0)) (f64.const 1)) 238 (assert_return (invoke "select-f64-t" (f64.const 2) (f64.const nan) (i32.const 1)) (f64.const 2)) 239 (assert_return (invoke "select-f64-t" (f64.const 2) (f64.const nan:0x20304) (i32.const 1)) (f64.const 2)) 240 (assert_return (invoke "select-f64-t" (f64.const 2) (f64.const nan) (i32.const 0)) (f64.const nan)) 241 (assert_return (invoke "select-f64-t" (f64.const 2) (f64.const nan:0x20304) (i32.const 0)) (f64.const nan:0x20304)) 242 243 (assert_return (invoke "as-select-first" (i32.const 0)) (i32.const 1)) 244 (assert_return (invoke "as-select-first" (i32.const 1)) (i32.const 0)) 245 (assert_return (invoke "as-select-mid" (i32.const 0)) (i32.const 2)) 246 (assert_return (invoke "as-select-mid" (i32.const 1)) (i32.const 2)) 247 (assert_return (invoke "as-select-last" (i32.const 0)) (i32.const 2)) 248 (assert_return (invoke "as-select-last" (i32.const 1)) (i32.const 3)) 249 250 (assert_return (invoke "as-loop-first" (i32.const 0)) (i32.const 3)) 251 (assert_return (invoke "as-loop-first" (i32.const 1)) (i32.const 2)) 252 (assert_return (invoke "as-loop-mid" (i32.const 0)) (i32.const 3)) 253 (assert_return (invoke "as-loop-mid" (i32.const 1)) (i32.const 2)) 254 (assert_return (invoke "as-loop-last" (i32.const 0)) (i32.const 3)) 255 (assert_return (invoke "as-loop-last" (i32.const 1)) (i32.const 2)) 256 257 (assert_return (invoke "as-if-condition" (i32.const 0))) 258 (assert_return (invoke "as-if-condition" (i32.const 1))) 259 (assert_return (invoke "as-if-then" (i32.const 0)) (i32.const 3)) 260 (assert_return (invoke "as-if-then" (i32.const 1)) (i32.const 2)) 261 (assert_return (invoke "as-if-else" (i32.const 0)) (i32.const 3)) 262 (assert_return (invoke "as-if-else" (i32.const 1)) (i32.const 2)) 263 264 (assert_return (invoke "as-br_if-first" (i32.const 0)) (i32.const 3)) 265 (assert_return (invoke "as-br_if-first" (i32.const 1)) (i32.const 2)) 266 (assert_return (invoke "as-br_if-last" (i32.const 0)) (i32.const 2)) 267 (assert_return (invoke "as-br_if-last" (i32.const 1)) (i32.const 2)) 268 269 (assert_return (invoke "as-br_table-first" (i32.const 0)) (i32.const 3)) 270 (assert_return (invoke "as-br_table-first" (i32.const 1)) (i32.const 2)) 271 (assert_return (invoke "as-br_table-last" (i32.const 0)) (i32.const 2)) 272 (assert_return (invoke "as-br_table-last" (i32.const 1)) (i32.const 2)) 273 274 (assert_return (invoke "as-call_indirect-first" (i32.const 0)) (i32.const 3)) 275 (assert_return (invoke "as-call_indirect-first" (i32.const 1)) (i32.const 2)) 276 (assert_return (invoke "as-call_indirect-mid" (i32.const 0)) (i32.const 1)) 277 (assert_return (invoke "as-call_indirect-mid" (i32.const 1)) (i32.const 1)) 278 (assert_trap (invoke "as-call_indirect-last" (i32.const 0)) "undefined element") 279 (assert_trap (invoke "as-call_indirect-last" (i32.const 1)) "undefined element") 280 281 (assert_return (invoke "as-store-first" (i32.const 0))) 282 (assert_return (invoke "as-store-first" (i32.const 1))) 283 (assert_return (invoke "as-store-last" (i32.const 0))) 284 (assert_return (invoke "as-store-last" (i32.const 1))) 285 286 (assert_return (invoke "as-memory.grow-value" (i32.const 0)) (i32.const 1)) 287 (assert_return (invoke "as-memory.grow-value" (i32.const 1)) (i32.const 3)) 288 289 (assert_return (invoke "as-call-value" (i32.const 0)) (i32.const 2)) 290 (assert_return (invoke "as-call-value" (i32.const 1)) (i32.const 1)) 291 (assert_return (invoke "as-return-value" (i32.const 0)) (i32.const 2)) 292 (assert_return (invoke "as-return-value" (i32.const 1)) (i32.const 1)) 293 (assert_return (invoke "as-drop-operand" (i32.const 0))) 294 (assert_return (invoke "as-drop-operand" (i32.const 1))) 295 (assert_return (invoke "as-br-value" (i32.const 0)) (i32.const 2)) 296 (assert_return (invoke "as-br-value" (i32.const 1)) (i32.const 1)) 297 (assert_return (invoke "as-local.set-value" (i32.const 0)) (i32.const 2)) 298 (assert_return (invoke "as-local.set-value" (i32.const 1)) (i32.const 1)) 299 (assert_return (invoke "as-local.tee-value" (i32.const 0)) (i32.const 2)) 300 (assert_return (invoke "as-local.tee-value" (i32.const 1)) (i32.const 1)) 301 (assert_return (invoke "as-global.set-value" (i32.const 0)) (i32.const 2)) 302 (assert_return (invoke "as-global.set-value" (i32.const 1)) (i32.const 1)) 303 (assert_return (invoke "as-load-operand" (i32.const 0)) (i32.const 1)) 304 (assert_return (invoke "as-load-operand" (i32.const 1)) (i32.const 1)) 305 306 (assert_return (invoke "as-unary-operand" (i32.const 0)) (i32.const 0)) 307 (assert_return (invoke "as-unary-operand" (i32.const 1)) (i32.const 1)) 308 (assert_return (invoke "as-binary-operand" (i32.const 0)) (i32.const 4)) 309 (assert_return (invoke "as-binary-operand" (i32.const 1)) (i32.const 1)) 310 (assert_return (invoke "as-test-operand" (i32.const 0)) (i32.const 0)) 311 (assert_return (invoke "as-test-operand" (i32.const 1)) (i32.const 1)) 312 (assert_return (invoke "as-compare-left" (i32.const 0)) (i32.const 0)) 313 (assert_return (invoke "as-compare-left" (i32.const 1)) (i32.const 1)) 314 (assert_return (invoke "as-compare-right" (i32.const 0)) (i32.const 0)) 315 (assert_return (invoke "as-compare-right" (i32.const 1)) (i32.const 1)) 316 (assert_return (invoke "as-convert-operand" (i32.const 0)) (i32.const 0)) 317 (assert_return (invoke "as-convert-operand" (i32.const 1)) (i32.const 1)) 318 319 (assert_invalid 320 (module (func $arity-0-implicit (select (nop) (nop) (i32.const 1)))) 321 "type mismatch" 322 ) 323 (assert_invalid 324 (module (func $arity-0 (select (result) (nop) (nop) (i32.const 1)))) 325 "invalid result arity" 326 ) 327 (assert_invalid 328 (module (func $arity-2 (result i32 i32) 329 (select (result i32 i32) 330 (i32.const 0) (i32.const 0) 331 (i32.const 0) (i32.const 0) 332 (i32.const 1) 333 ) 334 )) 335 "invalid result arity" 336 ) 337 338 339 (assert_invalid 340 (module (func $type-externref-implicit (param $r externref) 341 (drop (select (local.get $r) (local.get $r) (i32.const 1))) 342 )) 343 "type mismatch" 344 ) 345 346 (assert_invalid 347 (module (func $type-num-vs-num 348 (drop (select (i32.const 1) (i64.const 1) (i32.const 1))) 349 )) 350 "type mismatch" 351 ) 352 (assert_invalid 353 (module (func $type-num-vs-num 354 (drop (select (i32.const 1) (f32.const 1.0) (i32.const 1))) 355 )) 356 "type mismatch" 357 ) 358 (assert_invalid 359 (module (func $type-num-vs-num 360 (drop (select (i32.const 1) (f64.const 1.0) (i32.const 1))) 361 )) 362 "type mismatch" 363 ) 364 365 (assert_invalid 366 (module (func $type-num-vs-num (select (i32.const 1) (i64.const 1) (i32.const 1)) (drop))) 367 "type mismatch" 368 ) 369 (assert_invalid 370 (module (func $type-num-vs-num (select (i32.const 1) (f32.const 1.0) (i32.const 1)) (drop))) 371 "type mismatch" 372 ) 373 (assert_invalid 374 (module (func $type-num-vs-num (select (i32.const 1) (i64.const 1) (i32.const 1)) (drop))) 375 "type mismatch" 376 ) 377 (assert_invalid 378 (module (func $type-num-vs-num (select (i32.const 1) (f32.const 1.0) (i32.const 1)) (drop))) 379 "type mismatch" 380 ) 381 (assert_invalid 382 (module (func $type-num-vs-num (select (i32.const 1) (f64.const 1.0) (i32.const 1)) (drop))) 383 "type mismatch" 384 ) 385 386 387 (assert_invalid 388 (module 389 (func $type-1st-operand-empty 390 (select) (drop) 391 ) 392 ) 393 "type mismatch" 394 ) 395 (assert_invalid 396 (module 397 (func $type-2nd-operand-empty 398 (i32.const 0) (select) (drop) 399 ) 400 ) 401 "type mismatch" 402 ) 403 (assert_invalid 404 (module 405 (func $type-3rd-operand-empty 406 (i32.const 0) (i32.const 0) (select) (drop) 407 ) 408 ) 409 "type mismatch" 410 ) 411 (assert_invalid 412 (module 413 (func $type-1st-operand-empty-in-block 414 (i32.const 0) (i32.const 0) (i32.const 0) 415 (block (select) (drop)) 416 ) 417 ) 418 "type mismatch" 419 ) 420 (assert_invalid 421 (module 422 (func $type-2nd-operand-empty-in-block 423 (i32.const 0) (i32.const 0) 424 (block (i32.const 0) (select) (drop)) 425 ) 426 ) 427 "type mismatch" 428 ) 429 (assert_invalid 430 (module 431 (func $type-3rd-operand-empty-in-block 432 (i32.const 0) 433 (block (i32.const 0) (i32.const 0) (select) (drop)) 434 ) 435 ) 436 "type mismatch" 437 ) 438 (assert_invalid 439 (module 440 (func $type-1st-operand-empty-in-loop 441 (i32.const 0) (i32.const 0) (i32.const 0) 442 (loop (select) (drop)) 443 ) 444 ) 445 "type mismatch" 446 ) 447 (assert_invalid 448 (module 449 (func $type-2nd-operand-empty-in-loop 450 (i32.const 0) (i32.const 0) 451 (loop (i32.const 0) (select) (drop)) 452 ) 453 ) 454 "type mismatch" 455 ) 456 (assert_invalid 457 (module 458 (func $type-3rd-operand-empty-in-loop 459 (i32.const 0) 460 (loop (i32.const 0) (i32.const 0) (select) (drop)) 461 ) 462 ) 463 "type mismatch" 464 ) 465 (assert_invalid 466 (module 467 (func $type-1st-operand-empty-in-then 468 (i32.const 0) (i32.const 0) (i32.const 0) 469 (if (then (select) (drop))) 470 ) 471 ) 472 "type mismatch" 473 ) 474 (assert_invalid 475 (module 476 (func $type-2nd-operand-empty-in-then 477 (i32.const 0) (i32.const 0) 478 (if (then (i32.const 0) (select) (drop))) 479 ) 480 ) 481 "type mismatch" 482 ) 483 (assert_invalid 484 (module 485 (func $type-3rd-operand-empty-in-then 486 (i32.const 0) 487 (if (then (i32.const 0) (i32.const 0) (select) (drop))) 488 ) 489 ) 490 "type mismatch" 491 ) 492 493 ;; Third operand must be i32 494 495 (assert_invalid 496 (module (func (select (i32.const 1) (i32.const 1) (i64.const 1)) (drop))) 497 "type mismatch" 498 ) 499 (assert_invalid 500 (module (func (select (i32.const 1) (i32.const 1) (f32.const 1)) (drop))) 501 "type mismatch" 502 ) 503 (assert_invalid 504 (module (func (select (i32.const 1) (i32.const 1) (f64.const 1)) (drop))) 505 "type mismatch" 506 ) 507 508 ;; Result of select has type of first two operands 509 510 (assert_invalid 511 (module (func (result i32) (select (i64.const 1) (i64.const 1) (i32.const 1)))) 512 "type mismatch" 513 ) 514