Skip to content

Commit 5fbd5a7

Browse files
committed
proper 16 byte alignment test
1 parent a45e5b1 commit 5fbd5a7

File tree

3 files changed

+82
-28
lines changed

3 files changed

+82
-28
lines changed

Diff for: tests/compiler/memory.optimized.wat

+32-10
Original file line numberDiff line numberDiff line change
@@ -127,40 +127,62 @@
127127
call $~lib/builtins/abort
128128
unreachable
129129
end
130-
i32.const 1120
131-
global.set $memory/ptr
130+
global.get $memory/ptr
131+
i32.const 1119
132+
i32.ne
133+
if
134+
i32.const 0
135+
i32.const 1056
136+
i32.const 24
137+
i32.const 1
138+
call $~lib/builtins/abort
139+
unreachable
140+
end
132141
i32.const 1136
133142
global.set $memory/ptr
134-
i32.const 1144
143+
i32.const 1152
144+
global.set $memory/ptr
145+
i32.const 1160
135146
global.set $memory/ptr
136-
i32.const 1148
147+
i32.const 1164
137148
global.set $memory/ptr
138149
global.get $memory/ptr
139150
i32.const 2
140151
i32.add
141-
i32.const 1150
152+
i32.const 1166
142153
global.set $memory/ptr
143-
i32.const 1150
154+
i32.const 1166
144155
i32.ne
145156
if
146157
i32.const 0
147158
i32.const 1056
148-
i32.const 36
159+
i32.const 37
149160
i32.const 1
150161
call $~lib/builtins/abort
151162
unreachable
152163
end
153164
global.get $memory/ptr
154165
i32.const 1
155166
i32.add
156-
i32.const 1151
167+
i32.const 1167
157168
global.set $memory/ptr
158-
i32.const 1151
169+
i32.const 1167
159170
i32.ne
160171
if
161172
i32.const 0
162173
i32.const 1056
163-
i32.const 37
174+
i32.const 38
175+
i32.const 1
176+
call $~lib/builtins/abort
177+
unreachable
178+
end
179+
global.get $memory/ptr
180+
i32.const 1167
181+
i32.ne
182+
if
183+
i32.const 0
184+
i32.const 1056
185+
i32.const 39
164186
i32.const 1
165187
call $~lib/builtins/abort
166188
unreachable

Diff for: tests/compiler/memory.ts

+4-2
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,13 @@ assert(test() == 2);
1515

1616
// Should be properly aligned
1717

18-
var ptr = memory.data(16, 16);
18+
var ptr = memory.data(1);
1919
assert(ptr + 16 == (ptr = memory.data(1, 16)));
2020
assert(ptr + 8 == (ptr = memory.data(1, 8)));
2121
assert(ptr + 4 == (ptr = memory.data(1, 4)));
2222
assert(ptr + 2 == (ptr = memory.data(1, 2)));
2323
assert(ptr + 1 == (ptr = memory.data(1, 1)));
24+
assert(ptr + 1 == memory.data(1, 16));
2425

2526
// Should be static and properly aligned per generic instance
2627

@@ -29,9 +30,10 @@ function testGeneric<T>(): usize {
2930
return ptr;
3031
}
3132

32-
ptr = memory.data(16, 16);
33+
ptr = memory.data(1);
3334
assert(ptr + 16 == (ptr = testGeneric<v128>()));
3435
assert(ptr + 8 == (ptr = testGeneric<i64>()));
3536
assert(ptr + 4 == (ptr = testGeneric<i32>()));
3637
assert(ptr + 2 == (ptr = testGeneric<i16>()));
3738
assert(ptr + 1 == (ptr = testGeneric<i8>()));
39+
assert(ptr + 1 == memory.data(1, 16));

Diff for: tests/compiler/memory.untouched.wat

+46-16
Original file line numberDiff line numberDiff line change
@@ -6,18 +6,20 @@
66
(memory $0 1)
77
(data (i32.const 16) "\00\00\00\00")
88
(data (i32.const 32) "\12\00\00\00\01\00\00\00\01\00\00\00\12\00\00\00m\00e\00m\00o\00r\00y\00.\00t\00s\00")
9-
(data (i32.const 80) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00")
9+
(data (i32.const 80) "\00")
1010
(data (i32.const 96) "\00")
1111
(data (i32.const 104) "\00")
1212
(data (i32.const 108) "\00")
1313
(data (i32.const 110) "\00")
1414
(data (i32.const 111) "\00")
15-
(data (i32.const 112) "\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00")
15+
(data (i32.const 112) "\00")
1616
(data (i32.const 128) "\00")
17-
(data (i32.const 136) "\00")
18-
(data (i32.const 140) "\00")
19-
(data (i32.const 142) "\00")
20-
(data (i32.const 143) "\00")
17+
(data (i32.const 144) "\00")
18+
(data (i32.const 152) "\00")
19+
(data (i32.const 156) "\00")
20+
(data (i32.const 158) "\00")
21+
(data (i32.const 159) "\00")
22+
(data (i32.const 160) "\00")
2123
(table $0 1 funcref)
2224
(global $memory/ptr (mut i32) (i32.const 80))
2325
(export "memory" (memory $0))
@@ -35,19 +37,19 @@
3537
local.get $0
3638
)
3739
(func $memory/testGeneric<v128> (result i32)
38-
i32.const 128
40+
i32.const 144
3941
)
4042
(func $memory/testGeneric<i64> (result i32)
41-
i32.const 136
43+
i32.const 152
4244
)
4345
(func $memory/testGeneric<i32> (result i32)
44-
i32.const 140
46+
i32.const 156
4547
)
4648
(func $memory/testGeneric<i16> (result i32)
47-
i32.const 142
49+
i32.const 158
4850
)
4951
(func $memory/testGeneric<i8> (result i32)
50-
i32.const 143
52+
i32.const 159
5153
)
5254
(func $start:memory
5355
call $memory/test
@@ -166,7 +168,21 @@
166168
call $~lib/builtins/abort
167169
unreachable
168170
end
171+
global.get $memory/ptr
172+
i32.const 1
173+
i32.add
169174
i32.const 112
175+
i32.eq
176+
i32.eqz
177+
if
178+
i32.const 0
179+
i32.const 48
180+
i32.const 24
181+
i32.const 1
182+
call $~lib/builtins/abort
183+
unreachable
184+
end
185+
i32.const 128
170186
global.set $memory/ptr
171187
global.get $memory/ptr
172188
i32.const 16
@@ -179,7 +195,7 @@
179195
if
180196
i32.const 0
181197
i32.const 48
182-
i32.const 33
198+
i32.const 34
183199
i32.const 1
184200
call $~lib/builtins/abort
185201
unreachable
@@ -195,7 +211,7 @@
195211
if
196212
i32.const 0
197213
i32.const 48
198-
i32.const 34
214+
i32.const 35
199215
i32.const 1
200216
call $~lib/builtins/abort
201217
unreachable
@@ -211,7 +227,7 @@
211227
if
212228
i32.const 0
213229
i32.const 48
214-
i32.const 35
230+
i32.const 36
215231
i32.const 1
216232
call $~lib/builtins/abort
217233
unreachable
@@ -227,7 +243,7 @@
227243
if
228244
i32.const 0
229245
i32.const 48
230-
i32.const 36
246+
i32.const 37
231247
i32.const 1
232248
call $~lib/builtins/abort
233249
unreachable
@@ -243,7 +259,21 @@
243259
if
244260
i32.const 0
245261
i32.const 48
246-
i32.const 37
262+
i32.const 38
263+
i32.const 1
264+
call $~lib/builtins/abort
265+
unreachable
266+
end
267+
global.get $memory/ptr
268+
i32.const 1
269+
i32.add
270+
i32.const 160
271+
i32.eq
272+
i32.eqz
273+
if
274+
i32.const 0
275+
i32.const 48
276+
i32.const 39
247277
i32.const 1
248278
call $~lib/builtins/abort
249279
unreachable

0 commit comments

Comments
 (0)