Skip to content

Commit 65a14e0

Browse files
committed
Add Atomic load/store tests
Move generated spec test to `chakra_generated`
1 parent 01df540 commit 65a14e0

15 files changed

+267
-16
lines changed
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
13/13 tests passed.
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
13/13 tests passed.
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
18/18 tests passed.
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
18/18 tests passed.
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
(module
2+
;; todo make this a shared memory
3+
(memory 1)
4+
(data (i32.const 16) "\ff\ff\ff\ff\ff\ff\ff\ff")
5+
(data (i32.const 24) "\12\34\56\78\00\00\ce\41")
6+
7+
(func (export "load") (param i32) (result i64)
8+
(i64.atomic.load32_u offset=15 (get_local 0))
9+
)
10+
)
11+
12+
(assert_return (invoke "load" (i32.const 1)) (i64.const 0xffffffff))
13+
(assert_return (invoke "load" (i32.const 5)) (i64.const 0xffffffff))
14+
(assert_return (invoke "load" (i32.const 9)) (i64.const 0x78563412))
15+
(assert_return (invoke "load" (i32.const 13)) (i64.const 0x41ce0000))
16+
(assert_trap (invoke "load" (i32.const 0)) "atomic memory access is unaligned")
17+
(assert_trap (invoke "load" (i32.const 2)) "atomic memory access is unaligned")
18+
(assert_trap (invoke "load" (i32.const 3)) "atomic memory access is unaligned")
19+
(assert_trap (invoke "load" (i32.const 4)) "atomic memory access is unaligned")
20+
(assert_trap (invoke "load" (i32.const 6)) "atomic memory access is unaligned")
21+
(assert_trap (invoke "load" (i32.const 7)) "atomic memory access is unaligned")
22+
(assert_trap (invoke "load" (i32.const 8)) "atomic memory access is unaligned")
23+
(assert_trap (invoke "load" (i32.const 10)) "atomic memory access is unaligned")
24+
(assert_trap (invoke "load" (i32.const 11)) "atomic memory access is unaligned")
25+
(assert_trap (invoke "load" (i32.const 12)) "atomic memory access is unaligned")
26+
(assert_trap (invoke "load" (i32.const 14)) "atomic memory access is unaligned")
27+
28+
(assert_return (invoke "load" (i32.const 65517)) (i64.const 0))
29+
(assert_trap (invoke "load" (i32.const 65521)) "out of bounds memory access")
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
(module
2+
;; todo make this a shared memory
3+
(memory 1)
4+
5+
(func (export "store") (param i32 i64) (result i32)
6+
(i64.atomic.store offset=15 (get_local 0) (get_local 1))
7+
(i32.atomic.load offset=19 (get_local 0))
8+
)
9+
)
10+
11+
(assert_return (invoke "store" (i32.const 1) (i64.const 0xffffffff41ce0000)) (i32.const 0xffffffff))
12+
(assert_return (invoke "store" (i32.const 9) (i64.const 0x78563412ffffffff)) (i32.const 0x78563412))
13+
(assert_trap (invoke "store" (i32.const 0) (i64.const 0)) "atomic memory access is unaligned")
14+
(assert_trap (invoke "store" (i32.const 2) (i64.const 0)) "atomic memory access is unaligned")
15+
(assert_trap (invoke "store" (i32.const 3) (i64.const 0)) "atomic memory access is unaligned")
16+
(assert_trap (invoke "store" (i32.const 4) (i64.const 0)) "atomic memory access is unaligned")
17+
(assert_trap (invoke "store" (i32.const 5) (i64.const 0)) "atomic memory access is unaligned")
18+
(assert_trap (invoke "store" (i32.const 6) (i64.const 0)) "atomic memory access is unaligned")
19+
(assert_trap (invoke "store" (i32.const 7) (i64.const 0)) "atomic memory access is unaligned")
20+
(assert_trap (invoke "store" (i32.const 8) (i64.const 0)) "atomic memory access is unaligned")
21+
(assert_trap (invoke "store" (i32.const 10) (i64.const 0)) "atomic memory access is unaligned")
22+
(assert_trap (invoke "store" (i32.const 11) (i64.const 0)) "atomic memory access is unaligned")
23+
(assert_trap (invoke "store" (i32.const 12) (i64.const 0)) "atomic memory access is unaligned")
24+
(assert_trap (invoke "store" (i32.const 13) (i64.const 0)) "atomic memory access is unaligned")
25+
(assert_trap (invoke "store" (i32.const 14) (i64.const 0)) "atomic memory access is unaligned")
26+
27+
(assert_return (invoke "store" (i32.const 65513) (i64.const 0x78563412ffffffff)) (i32.const 0x78563412))
28+
(assert_trap (invoke "store" (i32.const 65521) (i64.const 0)) "out of bounds memory access")

0 commit comments

Comments
 (0)