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