1;;! multi_memory = true 2 3(module 4 (memory $m1 1) 5 (memory $m2 1) 6 7 (func (export "store1") (param i32 i64) 8 local.get 0 9 local.get 1 10 i64.store $m1) 11 12 (func (export "store2") (param i32 i64) 13 local.get 0 14 local.get 1 15 i64.store $m2) 16 17 (func (export "load1") (param i32) (result i64) 18 local.get 0 19 i64.load $m1) 20 21 (func (export "load2") (param i32) (result i64) 22 local.get 0 23 i64.load $m2) 24) 25 26(invoke "store1" (i32.const 0) (i64.const 1)) 27(invoke "store2" (i32.const 0) (i64.const 2)) 28(assert_return (invoke "load1" (i32.const 0)) (i64.const 1)) 29(assert_return (invoke "load2" (i32.const 0)) (i64.const 2)) 30 31(module $a 32 (memory (export "mem") 1) 33 34 (func (export "store") (param i32 i64) 35 local.get 0 36 local.get 1 37 i64.store) 38 39 (func (export "load") (param i32) (result i64) 40 local.get 0 41 i64.load) 42) 43 44(module $b 45 (memory (export "mem") 1) 46 47 (func (export "store") (param i32 i64) 48 local.get 0 49 local.get 1 50 i64.store) 51 52 (func (export "load") (param i32) (result i64) 53 local.get 0 54 i64.load) 55) 56 57(invoke $a "store" (i32.const 0) (i64.const 1)) 58(invoke $b "store" (i32.const 0) (i64.const 2)) 59(assert_return (invoke $a "load" (i32.const 0)) (i64.const 1)) 60(assert_return (invoke $b "load" (i32.const 0)) (i64.const 2)) 61 62(module $c 63 (import "a" "mem" (memory $m1 1)) 64 (import "b" "mem" (memory $m2 1)) 65 66 (func (export "store1") (param i32 i64) 67 local.get 0 68 local.get 1 69 i64.store $m1) 70 71 (func (export "store2") (param i32 i64) 72 local.get 0 73 local.get 1 74 i64.store $m2) 75 76 (func (export "load1") (param i32) (result i64) 77 local.get 0 78 i64.load $m1) 79 80 (func (export "load2") (param i32) (result i64) 81 local.get 0 82 i64.load $m2) 83) 84 85(invoke "store1" (i32.const 0) (i64.const 1)) 86(invoke "store2" (i32.const 0) (i64.const 2)) 87(assert_return (invoke "load1" (i32.const 0)) (i64.const 1)) 88 89(assert_return (invoke "load2" (i32.const 0)) (i64.const 2)) 90 91(module 92 (memory $m1 1) 93 (memory $m2 2) 94 95 (func (export "grow1") (param i32) (result i32) 96 local.get 0 97 memory.grow $m1) 98 99 (func (export "grow2") (param i32) (result i32) 100 local.get 0 101 memory.grow $m2) 102 103 (func (export "size1") (result i32) memory.size $m1) 104 (func (export "size2") (result i32) memory.size $m2) 105) 106 107(assert_return (invoke "size1") (i32.const 1)) 108(assert_return (invoke "size2") (i32.const 2)) 109(assert_return (invoke "grow1" (i32.const 3)) (i32.const 1)) 110(assert_return (invoke "grow1" (i32.const 4)) (i32.const 4)) 111(assert_return (invoke "grow1" (i32.const 1)) (i32.const 8)) 112(assert_return (invoke "grow2" (i32.const 1)) (i32.const 2)) 113(assert_return (invoke "grow2" (i32.const 1)) (i32.const 3)) 114 115(module 116 (memory $m1 1) 117 (memory $m2 1) 118 119 (func (export "init1") (result i32) 120 i32.const 1 121 i32.const 0 122 i32.const 4 123 memory.init $m1 $d 124 i32.const 1 125 i32.load) 126 127 (func (export "init2") (result i32) 128 i32.const 1 129 i32.const 4 130 i32.const 4 131 memory.init $m2 $d 132 i32.const 1 133 i32.load $m2) 134 135 (data $d "\01\00\00\00" "\02\00\00\00") 136) 137 138(assert_return (invoke "init1") (i32.const 1)) 139(assert_return (invoke "init2") (i32.const 2)) 140 141(module 142 (memory $m1 1) 143 (memory $m2 1) 144 145 (func (export "fill1") (result i32) 146 i32.const 1 147 i32.const 0x01 148 i32.const 4 149 memory.fill $m1 150 i32.const 1 151 i32.load) 152 153 (func (export "fill2") (result i32) 154 i32.const 1 155 i32.const 0x02 156 i32.const 2 157 memory.fill $m2 158 i32.const 1 159 i32.load $m2) 160) 161 162(assert_return (invoke "fill1") (i32.const 0x01010101)) 163(assert_return (invoke "fill2") (i32.const 0x0202)) 164