1(module (func)) 2 3(module 4 (func (export "if-without-result") (param i32) (param i32) (result i32) 5 (if 6 (i32.eq 7 (local.get 0) 8 (local.get 1) 9 ) 10 (then (unreachable)) 11 ) 12 13 (local.get 0) 14 ) 15) 16 17(assert_return (invoke "if-without-result" (i32.const 2) (i32.const 3)) (i32.const 2)) 18 19(module 20 (func (export "block") (param i32) (param i32) (result i32) 21 (block (result i32) 22 local.get 0 23 ) 24 ) 25) 26 27(assert_return (invoke "block" (i32.const 10) (i32.const 20)) (i32.const 10)) 28 29(module 30 (func (export "br_block") (param i32) (param i32) (result i32) 31 local.get 1 32 (block (result i32) 33 local.get 0 34 local.get 0 35 br 0 36 unreachable 37 ) 38 i32.add 39 ) 40) 41 42(assert_return (invoke "br_block" (i32.const 5) (i32.const 7)) (i32.const 12)) 43 44;; Tests discarding values on the value stack, while 45;; carrying over the result using a conditional branch. 46(module 47 (func (export "brif_block") (param i32) (param i32) (result i32) 48 local.get 1 49 (block (result i32) 50 local.get 0 51 local.get 0 52 br_if 0 53 unreachable 54 ) 55 i32.add 56 ) 57) 58 59(assert_return (invoke "brif_block" (i32.const 5) (i32.const 7)) (i32.const 12)) 60 61;; Tests that br_if keeps values in the case if the branch 62;; hasn't been taken. 63(module 64 (func (export "brif_block_passthru") (param i32) (param i32) (result i32) 65 (block (result i32) 66 local.get 1 67 local.get 0 68 br_if 0 69 local.get 1 70 i32.add 71 ) 72 ) 73) 74 75(assert_return (invoke "brif_block_passthru" (i32.const 0) (i32.const 3)) (i32.const 6)) 76 77(module 78 (func (export "i32.div_s") (param i32) (param i32) (result i32) 79 (i32.div_s (local.get 0) (local.get 1)) 80 ) 81) 82 83(module 84 (func (export "br_table") (param $i i32) (result i32) 85 (return 86 (block $2 (result i32) 87 (i32.add (i32.const 10) 88 (block $1 (result i32) 89 (i32.add (i32.const 100) 90 (block $0 (result i32) 91 (i32.add (i32.const 1000) 92 (block $default (result i32) 93 (br_table $0 $1 $2 $default 94 (i32.mul (i32.const 2) (local.get $i)) 95 (i32.and (i32.const 3) (local.get $i)) 96 ) 97 ) 98 ) 99 ) 100 ) 101 ) 102 ) 103 ) 104 ) 105 ) 106) 107 108(assert_return (invoke "br_table" (i32.const 0)) (i32.const 110)) 109(assert_return (invoke "br_table" (i32.const 1)) (i32.const 12)) 110(assert_return (invoke "br_table" (i32.const 2)) (i32.const 4)) 111(assert_return (invoke "br_table" (i32.const 3)) (i32.const 1116)) 112(assert_return (invoke "br_table" (i32.const 4)) (i32.const 118)) 113(assert_return (invoke "br_table" (i32.const 5)) (i32.const 20)) 114(assert_return (invoke "br_table" (i32.const 6)) (i32.const 12)) 115(assert_return (invoke "br_table" (i32.const 7)) (i32.const 1124)) 116(assert_return (invoke "br_table" (i32.const 8)) (i32.const 126)) 117