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 "as-select-first") (param i32) (result i32) 21 (select (select (i32.const 0) (i32.const 1) (local.get 0)) (i32.const 2) (i32.const 3)) 22 ) 23 (func (export "as-select-mid") (param i32) (result i32) 24 (select (i32.const 2) (select (i32.const 0) (i32.const 1) (local.get 0)) (i32.const 3)) 25 ) 26 (func (export "as-select-last") (param i32) (result i32) 27 (select (i32.const 2) (i32.const 3) (select (i32.const 0) (i32.const 1) (local.get 0))) 28 ) 29 30 (func (export "as-loop-first") (param i32) (result i32) 31 (loop (result i32) (select (i32.const 2) (i32.const 3) (local.get 0)) (call $dummy) (call $dummy)) 32 ) 33 (func (export "as-loop-mid") (param i32) (result i32) 34 (loop (result i32) (call $dummy) (select (i32.const 2) (i32.const 3) (local.get 0)) (call $dummy)) 35 ) 36 (func (export "as-loop-last") (param i32) (result i32) 37 (loop (result i32) (call $dummy) (call $dummy) (select (i32.const 2) (i32.const 3) (local.get 0))) 38 ) 39 40 (func (export "as-br_table-first") (param i32) (result i32) 41 (block (result i32) (select (i32.const 2) (i32.const 3) (local.get 0)) (i32.const 2) (br_table 0 0)) 42 ) 43 (func (export "as-br_table-last") (param i32) (result i32) 44 (block (result i32) (i32.const 2) (select (i32.const 2) (i32.const 3) (local.get 0)) (br_table 0 0)) 45 ) 46 47 (func (export "as-if-condition") (param i32) 48 (select (i32.const 2) (i32.const 3) (local.get 0)) (if (then (call $dummy))) 49 ) 50 (func (export "as-if-then") (param i32) (result i32) 51 (if (result i32) (i32.const 1) (then (select (i32.const 2) (i32.const 3) (local.get 0))) (else (i32.const 4))) 52 ) 53 (func (export "as-if-else") (param i32) (result i32) 54 (if (result i32) (i32.const 0) (then (i32.const 2)) (else (select (i32.const 2) (i32.const 3) (local.get 0)))) 55 ) 56 57 (func (export "as-br_if-first") (param i32) (result i32) 58 (block (result i32) (br_if 0 (select (i32.const 2) (i32.const 3) (local.get 0)) (i32.const 4))) 59 ) 60 (func (export "as-br_if-last") (param i32) (result i32) 61 (block (result i32) (br_if 0 (i32.const 2) (select (i32.const 2) (i32.const 3) (local.get 0)))) 62 ) 63 64 (func $f (param i32) (result i32) (local.get 0)) 65 66 (func (export "as-call-value") (param i32) (result i32) 67 (call $f (select (i32.const 1) (i32.const 2) (local.get 0))) 68 ) 69 (func (export "as-return-value") (param i32) (result i32) 70 (select (i32.const 1) (i32.const 2) (local.get 0)) (return) 71 ) 72 (func (export "as-drop-operand") (param i32) 73 (drop (select (i32.const 1) (i32.const 2) (local.get 0))) 74 ) 75 (func (export "as-br-value") (param i32) (result i32) 76 (block (result i32) (br 0 (select (i32.const 1) (i32.const 2) (local.get 0)))) 77 ) 78 (func (export "as-local.set-value") (param i32) (result i32) 79 (local i32) (local.set 0 (select (i32.const 1) (i32.const 2) (local.get 0))) (local.get 0) 80 ) 81 (func (export "as-local.tee-value") (param i32) (result i32) 82 (local.tee 0 (select (i32.const 1) (i32.const 2) (local.get 0))) 83 ) 84 (global $a (mut i32) (i32.const 10)) 85 (func (export "as-global.set-value") (param i32) (result i32) 86 (global.set $a (select (i32.const 1) (i32.const 2) (local.get 0))) 87 (global.get $a) 88 ) 89 90 (func (export "as-unary-operand") (param i32) (result i32) 91 (i32.eqz (select (i32.const 0) (i32.const 1) (local.get 0))) 92 ) 93 (func (export "as-binary-operand") (param i32) (result i32) 94 (i32.mul 95 (select (i32.const 1) (i32.const 2) (local.get 0)) 96 (select (i32.const 1) (i32.const 2) (local.get 0)) 97 ) 98 ) 99 (func (export "as-test-operand") (param i32) (result i32) 100 (block (result i32) 101 (i32.eqz (select (i32.const 0) (i32.const 1) (local.get 0))) 102 ) 103 ) 104 105 (func (export "as-compare-left") (param i32) (result i32) 106 (block (result i32) 107 (i32.le_s (select (i32.const 1) (i32.const 2) (local.get 0)) (i32.const 1)) 108 ) 109 ) 110 (func (export "as-compare-right") (param i32) (result i32) 111 (block (result i32) 112 (i32.ne (i32.const 1) (select (i32.const 0) (i32.const 1) (local.get 0))) 113 ) 114 ) 115 (func (export "as-load-operand") (param i32) (result i32) 116 (i32.load (select (i32.const 0) (i32.const 4) (local.get 0))) 117 ) 118 (func (export "as-store-first") (param i32) 119 (select (i32.const 0) (i32.const 4) (local.get 0)) (i32.const 1) (i32.store) 120 ) 121 (func (export "as-store-last") (param i32) 122 (i32.const 8) (select (i32.const 1) (i32.const 2) (local.get 0)) (i32.store) 123 ) 124) 125 126(assert_return (invoke "select-i32" (i32.const 1) (i32.const 2) (i32.const 1)) (i32.const 1)) 127(assert_return (invoke "select-i64" (i64.const 2) (i64.const 1) (i32.const 1)) (i64.const 2)) 128(assert_return (invoke "select-f32" (f32.const 1) (f32.const 2) (i32.const 1)) (f32.const 1)) 129(assert_return (invoke "select-f64" (f64.const 1) (f64.const 2) (i32.const 1)) (f64.const 1)) 130 131(assert_return (invoke "select-i32" (i32.const 1) (i32.const 2) (i32.const 0)) (i32.const 2)) 132(assert_return (invoke "select-i32" (i32.const 2) (i32.const 1) (i32.const 0)) (i32.const 1)) 133(assert_return (invoke "select-i64" (i64.const 2) (i64.const 1) (i32.const -1)) (i64.const 2)) 134(assert_return (invoke "select-i64" (i64.const 2) (i64.const 1) (i32.const 0xf0f0f0f0)) (i64.const 2)) 135 136(assert_return (invoke "select-f32" (f32.const nan) (f32.const 1) (i32.const 1)) (f32.const nan)) 137(assert_return (invoke "select-f32" (f32.const nan:0x20304) (f32.const 1) (i32.const 1)) (f32.const nan:0x20304)) 138(assert_return (invoke "select-f32" (f32.const nan) (f32.const 1) (i32.const 0)) (f32.const 1)) 139(assert_return (invoke "select-f32" (f32.const nan:0x20304) (f32.const 1) (i32.const 0)) (f32.const 1)) 140(assert_return (invoke "select-f32" (f32.const 2) (f32.const nan) (i32.const 1)) (f32.const 2)) 141(assert_return (invoke "select-f32" (f32.const 2) (f32.const nan:0x20304) (i32.const 1)) (f32.const 2)) 142(assert_return (invoke "select-f32" (f32.const 2) (f32.const nan) (i32.const 0)) (f32.const nan)) 143(assert_return (invoke "select-f32" (f32.const 2) (f32.const nan:0x20304) (i32.const 0)) (f32.const nan:0x20304)) 144 145(assert_return (invoke "select-f64" (f64.const nan) (f64.const 1) (i32.const 1)) (f64.const nan)) 146(assert_return (invoke "select-f64" (f64.const nan:0x20304) (f64.const 1) (i32.const 1)) (f64.const nan:0x20304)) 147(assert_return (invoke "select-f64" (f64.const nan) (f64.const 1) (i32.const 0)) (f64.const 1)) 148(assert_return (invoke "select-f64" (f64.const nan:0x20304) (f64.const 1) (i32.const 0)) (f64.const 1)) 149(assert_return (invoke "select-f64" (f64.const 2) (f64.const nan) (i32.const 1)) (f64.const 2)) 150(assert_return (invoke "select-f64" (f64.const 2) (f64.const nan:0x20304) (i32.const 1)) (f64.const 2)) 151(assert_return (invoke "select-f64" (f64.const 2) (f64.const nan) (i32.const 0)) (f64.const nan)) 152(assert_return (invoke "select-f64" (f64.const 2) (f64.const nan:0x20304) (i32.const 0)) (f64.const nan:0x20304)) 153 154(assert_return (invoke "as-select-first" (i32.const 0)) (i32.const 1)) 155(assert_return (invoke "as-select-first" (i32.const 1)) (i32.const 0)) 156(assert_return (invoke "as-select-mid" (i32.const 0)) (i32.const 2)) 157(assert_return (invoke "as-select-mid" (i32.const 1)) (i32.const 2)) 158(assert_return (invoke "as-select-last" (i32.const 0)) (i32.const 2)) 159(assert_return (invoke "as-select-last" (i32.const 1)) (i32.const 3)) 160 161(assert_return (invoke "as-loop-first" (i32.const 0)) (i32.const 3)) 162(assert_return (invoke "as-loop-first" (i32.const 1)) (i32.const 2)) 163(assert_return (invoke "as-loop-mid" (i32.const 0)) (i32.const 3)) 164(assert_return (invoke "as-loop-mid" (i32.const 1)) (i32.const 2)) 165(assert_return (invoke "as-loop-last" (i32.const 0)) (i32.const 3)) 166(assert_return (invoke "as-loop-last" (i32.const 1)) (i32.const 2)) 167 168(assert_return (invoke "as-if-condition" (i32.const 0))) 169(assert_return (invoke "as-if-condition" (i32.const 1))) 170(assert_return (invoke "as-if-then" (i32.const 0)) (i32.const 3)) 171(assert_return (invoke "as-if-then" (i32.const 1)) (i32.const 2)) 172(assert_return (invoke "as-if-else" (i32.const 0)) (i32.const 3)) 173(assert_return (invoke "as-if-else" (i32.const 1)) (i32.const 2)) 174 175(assert_return (invoke "as-br_if-first" (i32.const 0)) (i32.const 3)) 176(assert_return (invoke "as-br_if-first" (i32.const 1)) (i32.const 2)) 177(assert_return (invoke "as-br_if-last" (i32.const 0)) (i32.const 2)) 178(assert_return (invoke "as-br_if-last" (i32.const 1)) (i32.const 2)) 179 180(assert_return (invoke "as-call-value" (i32.const 0)) (i32.const 2)) 181(assert_return (invoke "as-call-value" (i32.const 1)) (i32.const 1)) 182(assert_return (invoke "as-return-value" (i32.const 0)) (i32.const 2)) 183(assert_return (invoke "as-return-value" (i32.const 1)) (i32.const 1)) 184(assert_return (invoke "as-drop-operand" (i32.const 0))) 185(assert_return (invoke "as-drop-operand" (i32.const 1))) 186(assert_return (invoke "as-br-value" (i32.const 0)) (i32.const 2)) 187(assert_return (invoke "as-br-value" (i32.const 1)) (i32.const 1)) 188(assert_return (invoke "as-local.set-value" (i32.const 0)) (i32.const 2)) 189(assert_return (invoke "as-local.set-value" (i32.const 1)) (i32.const 1)) 190(assert_return (invoke "as-local.tee-value" (i32.const 0)) (i32.const 2)) 191(assert_return (invoke "as-local.tee-value" (i32.const 1)) (i32.const 1)) 192(assert_return (invoke "as-global.set-value" (i32.const 0)) (i32.const 2)) 193(assert_return (invoke "as-global.set-value" (i32.const 1)) (i32.const 1)) 194 195(assert_return (invoke "as-unary-operand" (i32.const 0)) (i32.const 0)) 196(assert_return (invoke "as-unary-operand" (i32.const 1)) (i32.const 1)) 197(assert_return (invoke "as-binary-operand" (i32.const 0)) (i32.const 4)) 198(assert_return (invoke "as-binary-operand" (i32.const 1)) (i32.const 1)) 199(assert_return (invoke "as-test-operand" (i32.const 0)) (i32.const 0)) 200(assert_return (invoke "as-test-operand" (i32.const 1)) (i32.const 1)) 201(assert_return (invoke "as-compare-left" (i32.const 0)) (i32.const 0)) 202(assert_return (invoke "as-compare-left" (i32.const 1)) (i32.const 1)) 203(assert_return (invoke "as-compare-right" (i32.const 0)) (i32.const 0)) 204(assert_return (invoke "as-compare-right" (i32.const 1)) (i32.const 1)) 205 206(assert_return (invoke "as-br_table-first" (i32.const 0)) (i32.const 3)) 207(assert_return (invoke "as-br_table-first" (i32.const 1)) (i32.const 2)) 208(assert_return (invoke "as-br_table-last" (i32.const 0)) (i32.const 2)) 209(assert_return (invoke "as-br_table-last" (i32.const 1)) (i32.const 2)) 210 211(assert_return (invoke "as-store-first" (i32.const 0))) 212(assert_return (invoke "as-store-first" (i32.const 1))) 213(assert_return (invoke "as-store-last" (i32.const 0))) 214(assert_return (invoke "as-store-last" (i32.const 1))) 215(assert_return (invoke "as-load-operand" (i32.const 0)) (i32.const 1)) 216(assert_return (invoke "as-load-operand" (i32.const 1)) (i32.const 1)) 217 218