wa-lang.org/wazero@v1.0.2/internal/integration_test/spectest/v2/testdata/local_tee.wast (about) 1 ;; Test `local.tee` operator 2 3 (module 4 ;; Typing 5 6 (func (export "type-local-i32") (result i32) (local i32) (local.tee 0 (i32.const 0))) 7 (func (export "type-local-i64") (result i64) (local i64) (local.tee 0 (i64.const 0))) 8 (func (export "type-local-f32") (result f32) (local f32) (local.tee 0 (f32.const 0))) 9 (func (export "type-local-f64") (result f64) (local f64) (local.tee 0 (f64.const 0))) 10 11 (func (export "type-param-i32") (param i32) (result i32) (local.tee 0 (i32.const 10))) 12 (func (export "type-param-i64") (param i64) (result i64) (local.tee 0 (i64.const 11))) 13 (func (export "type-param-f32") (param f32) (result f32) (local.tee 0 (f32.const 11.1))) 14 (func (export "type-param-f64") (param f64) (result f64) (local.tee 0 (f64.const 12.2))) 15 16 (func (export "type-mixed") (param i64 f32 f64 i32 i32) (local f32 i64 i64 f64) 17 (drop (i64.eqz (local.tee 0 (i64.const 0)))) 18 (drop (f32.neg (local.tee 1 (f32.const 0)))) 19 (drop (f64.neg (local.tee 2 (f64.const 0)))) 20 (drop (i32.eqz (local.tee 3 (i32.const 0)))) 21 (drop (i32.eqz (local.tee 4 (i32.const 0)))) 22 (drop (f32.neg (local.tee 5 (f32.const 0)))) 23 (drop (i64.eqz (local.tee 6 (i64.const 0)))) 24 (drop (i64.eqz (local.tee 7 (i64.const 0)))) 25 (drop (f64.neg (local.tee 8 (f64.const 0)))) 26 ) 27 28 ;; Writing 29 30 (func (export "write") (param i64 f32 f64 i32 i32) (result i64) (local f32 i64 i64 f64) 31 (drop (local.tee 1 (f32.const -0.3))) 32 (drop (local.tee 3 (i32.const 40))) 33 (drop (local.tee 4 (i32.const -7))) 34 (drop (local.tee 5 (f32.const 5.5))) 35 (drop (local.tee 6 (i64.const 6))) 36 (drop (local.tee 8 (f64.const 8))) 37 (i64.trunc_f64_s 38 (f64.add 39 (f64.convert_i64_u (local.get 0)) 40 (f64.add 41 (f64.promote_f32 (local.get 1)) 42 (f64.add 43 (local.get 2) 44 (f64.add 45 (f64.convert_i32_u (local.get 3)) 46 (f64.add 47 (f64.convert_i32_s (local.get 4)) 48 (f64.add 49 (f64.promote_f32 (local.get 5)) 50 (f64.add 51 (f64.convert_i64_u (local.get 6)) 52 (f64.add 53 (f64.convert_i64_u (local.get 7)) 54 (local.get 8) 55 ) 56 ) 57 ) 58 ) 59 ) 60 ) 61 ) 62 ) 63 ) 64 ) 65 66 ;; Result 67 68 (func (export "result") (param i64 f32 f64 i32 i32) (result f64) 69 (local f32 i64 i64 f64) 70 (f64.add 71 (f64.convert_i64_u (local.tee 0 (i64.const 1))) 72 (f64.add 73 (f64.promote_f32 (local.tee 1 (f32.const 2))) 74 (f64.add 75 (local.tee 2 (f64.const 3.3)) 76 (f64.add 77 (f64.convert_i32_u (local.tee 3 (i32.const 4))) 78 (f64.add 79 (f64.convert_i32_s (local.tee 4 (i32.const 5))) 80 (f64.add 81 (f64.promote_f32 (local.tee 5 (f32.const 5.5))) 82 (f64.add 83 (f64.convert_i64_u (local.tee 6 (i64.const 6))) 84 (f64.add 85 (f64.convert_i64_u (local.tee 7 (i64.const 0))) 86 (local.tee 8 (f64.const 8)) 87 ) 88 ) 89 ) 90 ) 91 ) 92 ) 93 ) 94 ) 95 ) 96 97 (func $dummy) 98 99 (func (export "as-block-first") (param i32) (result i32) 100 (block (result i32) (local.tee 0 (i32.const 1)) (call $dummy)) 101 ) 102 (func (export "as-block-mid") (param i32) (result i32) 103 (block (result i32) (call $dummy) (local.tee 0 (i32.const 1)) (call $dummy)) 104 ) 105 (func (export "as-block-last") (param i32) (result i32) 106 (block (result i32) (call $dummy) (call $dummy) (local.tee 0 (i32.const 1))) 107 ) 108 109 (func (export "as-loop-first") (param i32) (result i32) 110 (loop (result i32) (local.tee 0 (i32.const 3)) (call $dummy)) 111 ) 112 (func (export "as-loop-mid") (param i32) (result i32) 113 (loop (result i32) (call $dummy) (local.tee 0 (i32.const 4)) (call $dummy)) 114 ) 115 (func (export "as-loop-last") (param i32) (result i32) 116 (loop (result i32) (call $dummy) (call $dummy) (local.tee 0 (i32.const 5))) 117 ) 118 119 (func (export "as-br-value") (param i32) (result i32) 120 (block (result i32) (br 0 (local.tee 0 (i32.const 9)))) 121 ) 122 123 (func (export "as-br_if-cond") (param i32) 124 (block (br_if 0 (local.tee 0 (i32.const 1)))) 125 ) 126 (func (export "as-br_if-value") (param i32) (result i32) 127 (block (result i32) 128 (drop (br_if 0 (local.tee 0 (i32.const 8)) (i32.const 1))) (i32.const 7) 129 ) 130 ) 131 (func (export "as-br_if-value-cond") (param i32) (result i32) 132 (block (result i32) 133 (drop (br_if 0 (i32.const 6) (local.tee 0 (i32.const 9)))) (i32.const 7) 134 ) 135 ) 136 137 (func (export "as-br_table-index") (param i32) 138 (block (br_table 0 0 0 (local.tee 0 (i32.const 0)))) 139 ) 140 (func (export "as-br_table-value") (param i32) (result i32) 141 (block (result i32) 142 (br_table 0 0 0 (local.tee 0 (i32.const 10)) (i32.const 1)) (i32.const 7) 143 ) 144 ) 145 (func (export "as-br_table-value-index") (param i32) (result i32) 146 (block (result i32) 147 (br_table 0 0 (i32.const 6) (local.tee 0 (i32.const 11))) (i32.const 7) 148 ) 149 ) 150 151 (func (export "as-return-value") (param i32) (result i32) 152 (return (local.tee 0 (i32.const 7))) 153 ) 154 155 (func (export "as-if-cond") (param i32) (result i32) 156 (if (result i32) (local.tee 0 (i32.const 2)) 157 (then (i32.const 0)) (else (i32.const 1)) 158 ) 159 ) 160 (func (export "as-if-then") (param i32) (result i32) 161 (if (result i32) (local.get 0) 162 (then (local.tee 0 (i32.const 3))) (else (local.get 0)) 163 ) 164 ) 165 (func (export "as-if-else") (param i32) (result i32) 166 (if (result i32) (local.get 0) 167 (then (local.get 0)) (else (local.tee 0 (i32.const 4))) 168 ) 169 ) 170 171 (func (export "as-select-first") (param i32 i32) (result i32) 172 (select (local.tee 0 (i32.const 5)) (local.get 0) (local.get 1)) 173 ) 174 (func (export "as-select-second") (param i32 i32) (result i32) 175 (select (local.get 0) (local.tee 0 (i32.const 6)) (local.get 1)) 176 ) 177 (func (export "as-select-cond") (param i32) (result i32) 178 (select (i32.const 0) (i32.const 1) (local.tee 0 (i32.const 7))) 179 ) 180 181 (func $f (param i32 i32 i32) (result i32) (i32.const -1)) 182 (func (export "as-call-first") (param i32) (result i32) 183 (call $f (local.tee 0 (i32.const 12)) (i32.const 2) (i32.const 3)) 184 ) 185 (func (export "as-call-mid") (param i32) (result i32) 186 (call $f (i32.const 1) (local.tee 0 (i32.const 13)) (i32.const 3)) 187 ) 188 (func (export "as-call-last") (param i32) (result i32) 189 (call $f (i32.const 1) (i32.const 2) (local.tee 0 (i32.const 14))) 190 ) 191 192 (type $sig (func (param i32 i32 i32) (result i32))) 193 (table funcref (elem $f)) 194 (func (export "as-call_indirect-first") (param i32) (result i32) 195 (call_indirect (type $sig) 196 (local.tee 0 (i32.const 1)) (i32.const 2) (i32.const 3) (i32.const 0) 197 ) 198 ) 199 (func (export "as-call_indirect-mid") (param i32) (result i32) 200 (call_indirect (type $sig) 201 (i32.const 1) (local.tee 0 (i32.const 2)) (i32.const 3) (i32.const 0) 202 ) 203 ) 204 (func (export "as-call_indirect-last") (param i32) (result i32) 205 (call_indirect (type $sig) 206 (i32.const 1) (i32.const 2) (local.tee 0 (i32.const 3)) (i32.const 0) 207 ) 208 ) 209 (func (export "as-call_indirect-index") (param i32) (result i32) 210 (call_indirect (type $sig) 211 (i32.const 1) (i32.const 2) (i32.const 3) (local.tee 0 (i32.const 0)) 212 ) 213 ) 214 215 (func (export "as-local.set-value") (local i32) 216 (local.set 0 (local.tee 0 (i32.const 1))) 217 ) 218 (func (export "as-local.tee-value") (param i32) (result i32) 219 (local.tee 0 (local.tee 0 (i32.const 1))) 220 ) 221 (global $g (mut i32) (i32.const 0)) 222 (func (export "as-global.set-value") (local i32) 223 (global.set $g (local.tee 0 (i32.const 1))) 224 ) 225 226 (memory 1) 227 (func (export "as-load-address") (param i32) (result i32) 228 (i32.load (local.tee 0 (i32.const 1))) 229 ) 230 (func (export "as-loadN-address") (param i32) (result i32) 231 (i32.load8_s (local.tee 0 (i32.const 3))) 232 ) 233 234 (func (export "as-store-address") (param i32) 235 (i32.store (local.tee 0 (i32.const 30)) (i32.const 7)) 236 ) 237 (func (export "as-store-value") (param i32) 238 (i32.store (i32.const 2) (local.tee 0 (i32.const 1))) 239 ) 240 241 (func (export "as-storeN-address") (param i32) 242 (i32.store8 (local.tee 0 (i32.const 1)) (i32.const 7)) 243 ) 244 (func (export "as-storeN-value") (param i32) 245 (i32.store16 (i32.const 2) (local.tee 0 (i32.const 1))) 246 ) 247 248 (func (export "as-unary-operand") (param f32) (result f32) 249 (f32.neg (local.tee 0 (f32.const nan:0x0f1e2))) 250 ) 251 252 (func (export "as-binary-left") (param i32) (result i32) 253 (i32.add (local.tee 0 (i32.const 3)) (i32.const 10)) 254 ) 255 (func (export "as-binary-right") (param i32) (result i32) 256 (i32.sub (i32.const 10) (local.tee 0 (i32.const 4))) 257 ) 258 259 (func (export "as-test-operand") (param i32) (result i32) 260 (i32.eqz (local.tee 0 (i32.const 0))) 261 ) 262 263 (func (export "as-compare-left") (param i32) (result i32) 264 (i32.le_s (local.tee 0 (i32.const 43)) (i32.const 10)) 265 ) 266 (func (export "as-compare-right") (param i32) (result i32) 267 (i32.ne (i32.const 10) (local.tee 0 (i32.const 42))) 268 ) 269 270 (func (export "as-convert-operand") (param i64) (result i32) 271 (i32.wrap_i64 (local.tee 0 (i64.const 41))) 272 ) 273 274 (func (export "as-memory.grow-size") (param i32) (result i32) 275 (memory.grow (local.tee 0 (i32.const 40))) 276 ) 277 278 ) 279 280 (assert_return (invoke "type-local-i32") (i32.const 0)) 281 (assert_return (invoke "type-local-i64") (i64.const 0)) 282 (assert_return (invoke "type-local-f32") (f32.const 0)) 283 (assert_return (invoke "type-local-f64") (f64.const 0)) 284 285 (assert_return (invoke "type-param-i32" (i32.const 2)) (i32.const 10)) 286 (assert_return (invoke "type-param-i64" (i64.const 3)) (i64.const 11)) 287 (assert_return (invoke "type-param-f32" (f32.const 4.4)) (f32.const 11.1)) 288 (assert_return (invoke "type-param-f64" (f64.const 5.5)) (f64.const 12.2)) 289 290 (assert_return (invoke "as-block-first" (i32.const 0)) (i32.const 1)) 291 (assert_return (invoke "as-block-mid" (i32.const 0)) (i32.const 1)) 292 (assert_return (invoke "as-block-last" (i32.const 0)) (i32.const 1)) 293 294 (assert_return (invoke "as-loop-first" (i32.const 0)) (i32.const 3)) 295 (assert_return (invoke "as-loop-mid" (i32.const 0)) (i32.const 4)) 296 (assert_return (invoke "as-loop-last" (i32.const 0)) (i32.const 5)) 297 298 (assert_return (invoke "as-br-value" (i32.const 0)) (i32.const 9)) 299 300 (assert_return (invoke "as-br_if-cond" (i32.const 0))) 301 (assert_return (invoke "as-br_if-value" (i32.const 0)) (i32.const 8)) 302 (assert_return (invoke "as-br_if-value-cond" (i32.const 0)) (i32.const 6)) 303 304 (assert_return (invoke "as-br_table-index" (i32.const 0))) 305 (assert_return (invoke "as-br_table-value" (i32.const 0)) (i32.const 10)) 306 (assert_return (invoke "as-br_table-value-index" (i32.const 0)) (i32.const 6)) 307 308 (assert_return (invoke "as-return-value" (i32.const 0)) (i32.const 7)) 309 310 (assert_return (invoke "as-if-cond" (i32.const 0)) (i32.const 0)) 311 (assert_return (invoke "as-if-then" (i32.const 1)) (i32.const 3)) 312 (assert_return (invoke "as-if-else" (i32.const 0)) (i32.const 4)) 313 314 (assert_return (invoke "as-select-first" (i32.const 0) (i32.const 1)) (i32.const 5)) 315 (assert_return (invoke "as-select-second" (i32.const 0) (i32.const 0)) (i32.const 6)) 316 (assert_return (invoke "as-select-cond" (i32.const 0)) (i32.const 0)) 317 318 (assert_return (invoke "as-call-first" (i32.const 0)) (i32.const -1)) 319 (assert_return (invoke "as-call-mid" (i32.const 0)) (i32.const -1)) 320 (assert_return (invoke "as-call-last" (i32.const 0)) (i32.const -1)) 321 322 (assert_return (invoke "as-call_indirect-first" (i32.const 0)) (i32.const -1)) 323 (assert_return (invoke "as-call_indirect-mid" (i32.const 0)) (i32.const -1)) 324 (assert_return (invoke "as-call_indirect-last" (i32.const 0)) (i32.const -1)) 325 (assert_return (invoke "as-call_indirect-index" (i32.const 0)) (i32.const -1)) 326 327 (assert_return (invoke "as-local.set-value")) 328 (assert_return (invoke "as-local.tee-value" (i32.const 0)) (i32.const 1)) 329 (assert_return (invoke "as-global.set-value")) 330 331 (assert_return (invoke "as-load-address" (i32.const 0)) (i32.const 0)) 332 (assert_return (invoke "as-loadN-address" (i32.const 0)) (i32.const 0)) 333 (assert_return (invoke "as-store-address" (i32.const 0))) 334 (assert_return (invoke "as-store-value" (i32.const 0))) 335 (assert_return (invoke "as-storeN-address" (i32.const 0))) 336 (assert_return (invoke "as-storeN-value" (i32.const 0))) 337 338 (assert_return (invoke "as-unary-operand" (f32.const 0)) (f32.const -nan:0x0f1e2)) 339 (assert_return (invoke "as-binary-left" (i32.const 0)) (i32.const 13)) 340 (assert_return (invoke "as-binary-right" (i32.const 0)) (i32.const 6)) 341 (assert_return (invoke "as-test-operand" (i32.const 0)) (i32.const 1)) 342 (assert_return (invoke "as-compare-left" (i32.const 0)) (i32.const 0)) 343 (assert_return (invoke "as-compare-right" (i32.const 0)) (i32.const 1)) 344 (assert_return (invoke "as-convert-operand" (i64.const 0)) (i32.const 41)) 345 (assert_return (invoke "as-memory.grow-size" (i32.const 0)) (i32.const 1)) 346 347 (assert_return 348 (invoke "type-mixed" 349 (i64.const 1) (f32.const 2.2) (f64.const 3.3) (i32.const 4) (i32.const 5) 350 ) 351 ) 352 353 (assert_return 354 (invoke "write" 355 (i64.const 1) (f32.const 2) (f64.const 3.3) (i32.const 4) (i32.const 5) 356 ) 357 (i64.const 56) 358 ) 359 360 (assert_return 361 (invoke "result" 362 (i64.const -1) (f32.const -2) (f64.const -3.3) (i32.const -4) (i32.const -5) 363 ) 364 (f64.const 34.8) 365 ) 366 367 368 ;; Invalid typing of access to locals 369 370 (assert_invalid 371 (module (func $type-local-num-vs-num (result i64) (local i32) (local.tee 0 (i32.const 0)))) 372 "type mismatch" 373 ) 374 (assert_invalid 375 (module (func $type-local-num-vs-num (local f32) (i32.eqz (local.tee 0 (f32.const 0))))) 376 "type mismatch" 377 ) 378 (assert_invalid 379 (module (func $type-local-num-vs-num (local f64 i64) (f64.neg (local.tee 1 (i64.const 0))))) 380 "type mismatch" 381 ) 382 383 (assert_invalid 384 (module (func $type-local-arg-void-vs-num (local i32) (local.tee 0 (nop)))) 385 "type mismatch" 386 ) 387 (assert_invalid 388 (module (func $type-local-arg-num-vs-num (local i32) (local.tee 0 (f32.const 0)))) 389 "type mismatch" 390 ) 391 (assert_invalid 392 (module (func $type-local-arg-num-vs-num (local f32) (local.tee 0 (f64.const 0)))) 393 "type mismatch" 394 ) 395 (assert_invalid 396 (module (func $type-local-arg-num-vs-num (local f64 i64) (local.tee 1 (f64.const 0)))) 397 "type mismatch" 398 ) 399 400 401 ;; Invalid typing of access to parameters 402 403 (assert_invalid 404 (module (func $type-param-num-vs-num (param i32) (result i64) (local.get 0))) 405 "type mismatch" 406 ) 407 (assert_invalid 408 (module (func $type-param-num-vs-num (param f32) (i32.eqz (local.get 0)))) 409 "type mismatch" 410 ) 411 (assert_invalid 412 (module (func $type-param-num-vs-num (param f64 i64) (f64.neg (local.get 1)))) 413 "type mismatch" 414 ) 415 416 (assert_invalid 417 (module (func $type-param-arg-void-vs-num (param i32) (local.tee 0 (nop)))) 418 "type mismatch" 419 ) 420 (assert_invalid 421 (module (func $type-param-arg-num-vs-num (param i32) (local.tee 0 (f32.const 0)))) 422 "type mismatch" 423 ) 424 (assert_invalid 425 (module (func $type-param-arg-num-vs-num (param f32) (local.tee 0 (f64.const 0)))) 426 "type mismatch" 427 ) 428 (assert_invalid 429 (module (func $type-param-arg-num-vs-num (param f64 i64) (local.tee 1 (f64.const 0)))) 430 "type mismatch" 431 ) 432 433 (assert_invalid 434 (module 435 (func $type-param-arg-empty-vs-num (param i32) 436 (local.tee 0) (drop) 437 ) 438 ) 439 "type mismatch" 440 ) 441 (assert_invalid 442 (module 443 (func $type-param-arg-empty-vs-num-in-block (param i32) 444 (i32.const 0) 445 (block (local.tee 0) (drop)) 446 ) 447 ) 448 "type mismatch" 449 ) 450 (assert_invalid 451 (module 452 (func $type-param-arg-empty-vs-num-in-loop (param i32) 453 (i32.const 0) 454 (loop (local.tee 0) (drop)) 455 ) 456 ) 457 "type mismatch" 458 ) 459 (assert_invalid 460 (module 461 (func $type-param-arg-empty-vs-num-in-then (param i32) 462 (i32.const 0) (i32.const 0) 463 (if (then (local.tee 0) (drop))) 464 ) 465 ) 466 "type mismatch" 467 ) 468 (assert_invalid 469 (module 470 (func $type-param-arg-empty-vs-num-in-else (param i32) 471 (i32.const 0) (i32.const 0) 472 (if (result i32) (then (i32.const 0)) (else (local.tee 0))) (drop) 473 ) 474 ) 475 "type mismatch" 476 ) 477 (assert_invalid 478 (module 479 (func $type-param-arg-empty-vs-num-in-br (param i32) 480 (i32.const 0) 481 (block (br 0 (local.tee 0)) (drop)) 482 ) 483 ) 484 "type mismatch" 485 ) 486 (assert_invalid 487 (module 488 (func $type-param-arg-empty-vs-num-in-br_if (param i32) 489 (i32.const 0) 490 (block (br_if 0 (local.tee 0) (i32.const 1)) (drop)) 491 ) 492 ) 493 "type mismatch" 494 ) 495 (assert_invalid 496 (module 497 (func $type-param-arg-empty-vs-num-in-br_table (param i32) 498 (i32.const 0) 499 (block (br_table 0 (local.tee 0)) (drop)) 500 ) 501 ) 502 "type mismatch" 503 ) 504 (assert_invalid 505 (module 506 (func $type-param-arg-empty-vs-num-in-return (param i32) 507 (return (local.tee 0)) (drop) 508 ) 509 ) 510 "type mismatch" 511 ) 512 (assert_invalid 513 (module 514 (func $type-param-arg-empty-vs-num-in-select (param i32) 515 (select (local.tee 0) (i32.const 1) (i32.const 2)) (drop) 516 ) 517 ) 518 "type mismatch" 519 ) 520 (assert_invalid 521 (module 522 (func $type-param-arg-empty-vs-num-in-call (param i32) 523 (call 1 (local.tee 0)) (drop) 524 ) 525 (func (param i32) (result i32) (local.get 0)) 526 ) 527 "type mismatch" 528 ) 529 (assert_invalid 530 (module 531 (func $f (param i32) (result i32) (local.get 0)) 532 (type $sig (func (param i32) (result i32))) 533 (table funcref (elem $f)) 534 (func $type-param-arg-empty-vs-num-in-call_indirect (param i32) 535 (block (result i32) 536 (call_indirect (type $sig) 537 (local.tee 0) (i32.const 0) 538 ) 539 (drop) 540 ) 541 ) 542 ) 543 "type mismatch" 544 ) 545 (assert_invalid 546 (module 547 (func $type-param-arg-empty-vs-num-in-local.set (param i32) 548 (local.set 0 (local.tee 0)) (local.get 0) (drop) 549 ) 550 ) 551 "type mismatch" 552 ) 553 (assert_invalid 554 (module 555 (func $type-param-arg-empty-vs-num-in-local.tee (param i32) 556 (local.tee 0 (local.tee 0)) (drop) 557 ) 558 ) 559 "type mismatch" 560 ) 561 (assert_invalid 562 (module 563 (global $x (mut i32) (i32.const 0)) 564 (func $type-param-arg-empty-vs-num-in-global.set (param i32) 565 (global.set $x (local.tee 0)) (global.get $x) (drop) 566 ) 567 ) 568 "type mismatch" 569 ) 570 (assert_invalid 571 (module 572 (memory 0) 573 (func $type-param-arg-empty-vs-num-in-memory.grow (param i32) 574 (memory.grow (local.tee 0)) (drop) 575 ) 576 ) 577 "type mismatch" 578 ) 579 (assert_invalid 580 (module 581 (memory 0) 582 (func $type-param-arg-empty-vs-num-in-load (param i32) 583 (i32.load (local.tee 0)) (drop) 584 ) 585 ) 586 "type mismatch" 587 ) 588 (assert_invalid 589 (module 590 (memory 1) 591 (func $type-param-arg-empty-vs-num-in-store (param i32) 592 (i32.store (local.tee 0) (i32.const 1)) 593 ) 594 ) 595 "type mismatch" 596 ) 597 598 (assert_invalid 599 (module (func $type-mixed-arg-num-vs-num (param f32) (local i32) (local.tee 1 (f32.const 0)))) 600 "type mismatch" 601 ) 602 (assert_invalid 603 (module (func $type-mixed-arg-num-vs-num (param i64 i32) (local f32) (local.tee 1 (f32.const 0)))) 604 "type mismatch" 605 ) 606 (assert_invalid 607 (module (func $type-mixed-arg-num-vs-num (param i64) (local f64 i64) (local.tee 1 (i64.const 0)))) 608 "type mismatch" 609 ) 610 611 612 ;; Invalid local index 613 614 (assert_invalid 615 (module (func $unbound-local (local i32 i64) (local.tee 3 (i32.const 0)) drop)) 616 "unknown local" 617 ) 618 (assert_invalid 619 (module (func $large-local (local i32 i64) (local.tee 14324343 (i32.const 0)) drop)) 620 "unknown local" 621 ) 622 623 (assert_invalid 624 (module (func $unbound-param (param i32 i64) (local.tee 2 (i32.const 0)) drop)) 625 "unknown local" 626 ) 627 (assert_invalid 628 (module (func $large-param (param i32 i64) (local.tee 714324343 (i32.const 0)) drop)) 629 "unknown local" 630 ) 631 632 (assert_invalid 633 (module (func $unbound-mixed (param i32) (local i32 i64) (local.tee 3 (i32.const 0)) drop)) 634 "unknown local" 635 ) 636 (assert_invalid 637 (module (func $large-mixed (param i64) (local i32 i64) (local.tee 214324343 (i32.const 0)) drop)) 638 "unknown local" 639 )