diff options
Diffstat (limited to 'test/passes/simplify-locals.wast')
-rw-r--r-- | test/passes/simplify-locals.wast | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/test/passes/simplify-locals.wast b/test/passes/simplify-locals.wast index 534bd8883..344e0934e 100644 --- a/test/passes/simplify-locals.wast +++ b/test/passes/simplify-locals.wast @@ -872,3 +872,61 @@ ) ) ) +(module + (memory 256 256 shared) + (type $FUNCSIG$v (func)) + (type $FUNCSIG$i (func (result i32))) + (type $FUNCSIG$iiiii (func (param i32 i32 i32 i32) (result i32))) + (type $FUNCSIG$iiiiii (func (param i32 i32 i32 i32 i32) (result i32))) + (type $4 (func (param i32))) + (type $5 (func (param i32) (result i32))) + (type $6 (func (param i32 i32 i32 i32 i32 i32))) + (func $nonatomics (result i32) ;; loads are reordered + (local $x i32) + (set_local $x (i32.load (i32.const 1024))) + (drop (i32.load (i32.const 1028))) + (get_local $x) + ) + (func $nonatomic-growmem (result i32) ;; grow_memory is modeled as modifying memory + (local $x i32) + (set_local $x (i32.load (grow_memory (i32.const 1)))) + (drop (i32.load (i32.const 1028))) + (get_local $x) + ) + (func $atomics ;; atomic loads don't pass each other + (local $x i32) + (set_local $x (i32.atomic.load (i32.const 1024))) + (drop (i32.atomic.load (i32.const 1028))) + (drop (get_local $x)) + ) + (func $one-atomic ;; atomic loads don't pass other loads + (local $x i32) + (set_local $x (i32.load (i32.const 1024))) + (drop (i32.atomic.load (i32.const 1028))) + (drop (get_local $x)) + ) + (func $other-atomic ;; atomic loads don't pass other loads + (local $x i32) + (set_local $x (i32.atomic.load (i32.const 1024))) + (drop (i32.load (i32.const 1028))) + (drop (get_local $x)) + ) + (func $atomic-growmem (result i32) ;; grow_memory is modeled as modifying memory + (local $x i32) + (set_local $x (i32.load (grow_memory (i32.const 1)))) + (drop (i32.atomic.load (i32.const 1028))) + (get_local $x) + ) + (func $atomicrmw ;; atomic rmw don't pass loads + (local $x i32) + (set_local $x (i32.atomic.rmw.add (i32.const 1024) (i32.const 1))) + (drop (i32.atomic.load (i32.const 1028))) + (drop (get_local $x)) + ) + (func $atomic-cmpxchg ;; cmpxchg don't pass loads + (local $x i32) + (set_local $x (i32.atomic.rmw.cmpxchg (i32.const 1024) (i32.const 1) (i32.const 2))) + (drop (i32.atomic.load (i32.const 1028))) + (drop (get_local $x)) + ) +)
\ No newline at end of file |