summaryrefslogtreecommitdiff
path: root/test/lit
diff options
context:
space:
mode:
Diffstat (limited to 'test/lit')
-rw-r--r--test/lit/multi-memories-atomics64.wast704
-rw-r--r--test/lit/multi-memories-basics.wast175
-rw-r--r--test/lit/multi-memories-simd.wast635
-rw-r--r--test/lit/passes/O3_inline-functions-with-loops_flexible-inline-max-function-size=30.wast4
-rw-r--r--test/lit/passes/O4_disable-bulk-memory.wast4
-rw-r--r--test/lit/wasm-split/export-name-already-exists.wast1
-rw-r--r--test/lit/wasm-split/instrument-in-memory.wast1
-rw-r--r--test/lit/wasm-split/merge-profiles.wast1
-rw-r--r--test/lit/wasm-split/mismatched-hashes.wast1
9 files changed, 1522 insertions, 4 deletions
diff --git a/test/lit/multi-memories-atomics64.wast b/test/lit/multi-memories-atomics64.wast
new file mode 100644
index 000000000..15941b12a
--- /dev/null
+++ b/test/lit/multi-memories-atomics64.wast
@@ -0,0 +1,704 @@
+;; NOTE: Assertions have been generated by update_lit_checks.py and should not be edited.
+;; RUN: wasm-as %s -all -g -o %t.wasm
+;; RUN: wasm-dis %t.wasm -o - | filecheck %s
+
+(module
+ ;; CHECK: (type $0 (func))
+ (type $0 (func))
+ ;; CHECK: (memory $appMemory (shared i64 23 256))
+ (memory $appMemory (shared i64 23 256))
+ ;; CHECK: (memory $dataMemory (shared i64 23 256))
+ (memory $dataMemory (shared i64 23 256))
+ ;; CHECK: (memory $instrumentMemory (shared i64 23 256))
+ (memory $instrumentMemory (shared i64 23 256))
+ ;; CHECK: (func $atomic-loadstore
+ ;; CHECK-NEXT: (local $0 i64)
+ ;; CHECK-NEXT: (local $1 i64)
+ ;; CHECK-NEXT: (local $2 i32)
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i32.atomic.load8_u $appMemory offset=4
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i32.atomic.load8_u $appMemory offset=4
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i32.atomic.load16_u $dataMemory offset=4
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i32.atomic.load16_u $instrumentMemory offset=4
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i32.atomic.load $dataMemory offset=4
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i32.atomic.load $appMemory offset=4
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i64.atomic.load8_u $appMemory
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i64.atomic.load8_u $dataMemory
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i64.atomic.load16_u $appMemory
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i64.atomic.load16_u $appMemory
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i64.atomic.load32_u $instrumentMemory
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i64.atomic.load32_u $appMemory
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i64.atomic.load $appMemory
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i64.atomic.load $instrumentMemory
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (i32.atomic.store $appMemory offset=4
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: (local.get $2)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (i32.atomic.store $appMemory offset=4
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: (local.get $2)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (i32.atomic.store8 $instrumentMemory offset=4
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: (local.get $2)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (i32.atomic.store8 $dataMemory offset=4
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: (local.get $2)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (i32.atomic.store16 $appMemory offset=4
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: (local.get $2)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (i32.atomic.store16 $dataMemory offset=4
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: (local.get $2)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (i64.atomic.store $appMemory offset=4
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: (local.get $1)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (i64.atomic.store $appMemory offset=4
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: (local.get $1)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (i64.atomic.store8 $dataMemory offset=4
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: (local.get $1)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (i64.atomic.store8 $instrumentMemory offset=4
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: (local.get $1)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (i64.atomic.store16 $appMemory offset=4
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: (local.get $1)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (i64.atomic.store16 $appMemory offset=4
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: (local.get $1)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (i64.atomic.store32 $instrumentMemory offset=4
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: (local.get $1)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (i64.atomic.store32 $dataMemory offset=4
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: (local.get $1)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ (func $atomic-loadstore (type $0)
+ (local $0 i64)
+ (local $1 i64)
+ (local $2 i32)
+ (drop
+ (i32.atomic.load8_u 0 offset=4
+ (local.get $0)
+ )
+ )
+ (drop
+ (i32.atomic.load8_u $appMemory offset=4
+ (local.get $0)
+ )
+ )
+ (drop
+ (i32.atomic.load16_u 1 offset=4
+ (local.get $0)
+ )
+ )
+ (drop
+ (i32.atomic.load16_u $instrumentMemory offset=4
+ (local.get $0)
+ )
+ )
+ (drop
+ (i32.atomic.load 1 offset=4
+ (local.get $0)
+ )
+ )
+ (drop
+ (i32.atomic.load $appMemory offset=4
+ (local.get $0)
+ )
+ )
+ (drop
+ (i64.atomic.load8_u
+ (local.get $0)
+ )
+ )
+ (drop
+ (i64.atomic.load8_u $dataMemory
+ (local.get $0)
+ )
+ )
+ (drop
+ (i64.atomic.load16_u
+ (local.get $0)
+ )
+ )
+ (drop
+ (i64.atomic.load16_u $appMemory
+ (local.get $0)
+ )
+ )
+ (drop
+ (i64.atomic.load32_u 2
+ (local.get $0)
+ )
+ )
+ (drop
+ (i64.atomic.load32_u $appMemory
+ (local.get $0)
+ )
+ )
+ (drop
+ (i64.atomic.load
+ (local.get $0)
+ )
+ )
+ (drop
+ (i64.atomic.load $instrumentMemory
+ (local.get $0)
+ )
+ )
+ (i32.atomic.store 0 offset=4 align=4
+ (local.get $0)
+ (local.get $2)
+ )
+ (i32.atomic.store $appMemory offset=4 align=4
+ (local.get $0)
+ (local.get $2)
+ )
+ (i32.atomic.store8 2 offset=4 align=1
+ (local.get $0)
+ (local.get $2)
+ )
+ (i32.atomic.store8 $dataMemory offset=4 align=1
+ (local.get $0)
+ (local.get $2)
+ )
+ (i32.atomic.store16 0 offset=4
+ (local.get $0)
+ (local.get $2)
+ )
+ (i32.atomic.store16 $dataMemory offset=4
+ (local.get $0)
+ (local.get $2)
+ )
+ (i64.atomic.store offset=4
+ (local.get $0)
+ (local.get $1)
+ )
+ (i64.atomic.store $appMemory offset=4
+ (local.get $0)
+ (local.get $1)
+ )
+ (i64.atomic.store8 1 offset=4
+ (local.get $0)
+ (local.get $1)
+ )
+ (i64.atomic.store8 $instrumentMemory offset=4
+ (local.get $0)
+ (local.get $1)
+ )
+ (i64.atomic.store16 offset=4
+ (local.get $0)
+ (local.get $1)
+ )
+ (i64.atomic.store16 $appMemory offset=4
+ (local.get $0)
+ (local.get $1)
+ )
+ (i64.atomic.store32 2 offset=4
+ (local.get $0)
+ (local.get $1)
+ )
+ (i64.atomic.store32 $dataMemory offset=4
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ ;; CHECK: (func $atomic-rmw
+ ;; CHECK-NEXT: (local $0 i64)
+ ;; CHECK-NEXT: (local $1 i64)
+ ;; CHECK-NEXT: (local $2 i32)
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i32.atomic.rmw.add $dataMemory offset=4
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: (local.get $2)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i32.atomic.rmw.add $instrumentMemory offset=4
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: (local.get $2)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i32.atomic.rmw8.add_u $appMemory offset=4
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: (local.get $2)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i32.atomic.rmw8.add_u $appMemory offset=4
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: (local.get $2)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i32.atomic.rmw16.and_u $dataMemory
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: (local.get $2)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i32.atomic.rmw16.and_u $instrumentMemory
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: (local.get $2)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i64.atomic.rmw32.or_u $appMemory
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: (local.get $1)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i64.atomic.rmw32.or_u $appMemory
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: (local.get $1)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i32.atomic.rmw8.xchg_u $appMemory
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: (local.get $2)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i32.atomic.rmw8.xchg_u $dataMemory
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: (local.get $2)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ (func $atomic-rmw (type $0)
+ (local $0 i64)
+ (local $1 i64)
+ (local $2 i32)
+ (drop
+ (i32.atomic.rmw.add $dataMemory offset=4
+ (local.get $0)
+ (local.get $2)
+ )
+ )
+ (drop
+ (i32.atomic.rmw.add 2 offset=4
+ (local.get $0)
+ (local.get $2)
+ )
+ )
+ (drop
+ (i32.atomic.rmw8.add_u 0 offset=4
+ (local.get $0)
+ (local.get $2)
+ )
+ )
+ (drop
+ (i32.atomic.rmw8.add_u $appMemory offset=4
+ (local.get $0)
+ (local.get $2)
+ )
+ )
+ (drop
+ (i32.atomic.rmw16.and_u 1 align=2
+ (local.get $0)
+ (local.get $2)
+ )
+ )
+ (drop
+ (i32.atomic.rmw16.and_u $instrumentMemory align=2
+ (local.get $0)
+ (local.get $2)
+ )
+ )
+ (drop
+ (i64.atomic.rmw32.or_u 0
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (drop
+ (i64.atomic.rmw32.or_u $appMemory
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ (drop
+ (i32.atomic.rmw8.xchg_u 0 align=1
+ (local.get $0)
+ (local.get $2)
+ )
+ )
+ (drop
+ (i32.atomic.rmw8.xchg_u $dataMemory align=1
+ (local.get $0)
+ (local.get $2)
+ )
+ )
+ )
+ ;; CHECK: (func $atomic-cmpxchg
+ ;; CHECK-NEXT: (local $0 i64)
+ ;; CHECK-NEXT: (local $1 i64)
+ ;; CHECK-NEXT: (local $2 i32)
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i32.atomic.rmw.cmpxchg $appMemory offset=4
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: (local.get $2)
+ ;; CHECK-NEXT: (local.get $2)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i32.atomic.rmw.cmpxchg $instrumentMemory offset=4
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: (local.get $2)
+ ;; CHECK-NEXT: (local.get $2)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i32.atomic.rmw8.cmpxchg_u $appMemory
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: (local.get $2)
+ ;; CHECK-NEXT: (local.get $2)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i32.atomic.rmw8.cmpxchg_u $appMemory
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: (local.get $2)
+ ;; CHECK-NEXT: (local.get $2)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i64.atomic.rmw.cmpxchg $appMemory offset=4
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: (local.get $1)
+ ;; CHECK-NEXT: (local.get $1)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i64.atomic.rmw.cmpxchg $dataMemory offset=4
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: (local.get $1)
+ ;; CHECK-NEXT: (local.get $1)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i64.atomic.rmw32.cmpxchg_u $instrumentMemory
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: (local.get $1)
+ ;; CHECK-NEXT: (local.get $1)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i64.atomic.rmw32.cmpxchg_u $dataMemory
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: (local.get $1)
+ ;; CHECK-NEXT: (local.get $1)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ (func $atomic-cmpxchg (type $0)
+ (local $0 i64)
+ (local $1 i64)
+ (local $2 i32)
+ (drop
+ (i32.atomic.rmw.cmpxchg 0 offset=4
+ (local.get $0)
+ (local.get $2)
+ (local.get $2)
+ )
+ )
+ (drop
+ (i32.atomic.rmw.cmpxchg $instrumentMemory offset=4
+ (local.get $0)
+ (local.get $2)
+ (local.get $2)
+ )
+ )
+ (drop
+ (i32.atomic.rmw8.cmpxchg_u
+ (local.get $0)
+ (local.get $2)
+ (local.get $2)
+ )
+ )
+ (drop
+ (i32.atomic.rmw8.cmpxchg_u $appMemory
+ (local.get $0)
+ (local.get $2)
+ (local.get $2)
+ )
+ )
+ (drop
+ (i64.atomic.rmw.cmpxchg offset=4
+ (local.get $0)
+ (local.get $1)
+ (local.get $1)
+ )
+ )
+ (drop
+ (i64.atomic.rmw.cmpxchg $dataMemory offset=4
+ (local.get $0)
+ (local.get $1)
+ (local.get $1)
+ )
+ )
+ (drop
+ (i64.atomic.rmw32.cmpxchg_u 2 align=4
+ (local.get $0)
+ (local.get $1)
+ (local.get $1)
+ )
+ )
+ (drop
+ (i64.atomic.rmw32.cmpxchg_u $dataMemory align=4
+ (local.get $0)
+ (local.get $1)
+ (local.get $1)
+ )
+ )
+ )
+ ;; CHECK: (func $atomic-wait-notify
+ ;; CHECK-NEXT: (local $0 i64)
+ ;; CHECK-NEXT: (local $1 i64)
+ ;; CHECK-NEXT: (local $2 i32)
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (memory.atomic.wait32 $dataMemory
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: (local.get $2)
+ ;; CHECK-NEXT: (local.get $1)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (memory.atomic.wait32 $instrumentMemory
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: (local.get $2)
+ ;; CHECK-NEXT: (local.get $1)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (memory.atomic.wait32 $appMemory offset=4
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: (local.get $2)
+ ;; CHECK-NEXT: (local.get $1)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (memory.atomic.wait32 $instrumentMemory offset=4
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: (local.get $2)
+ ;; CHECK-NEXT: (local.get $1)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (memory.atomic.notify $dataMemory
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: (local.get $2)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (memory.atomic.notify $dataMemory
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: (local.get $2)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (memory.atomic.notify $appMemory offset=24
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: (local.get $2)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (memory.atomic.notify $dataMemory offset=24
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: (local.get $2)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (memory.atomic.wait64 $instrumentMemory
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: (local.get $1)
+ ;; CHECK-NEXT: (local.get $1)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (memory.atomic.wait64 $instrumentMemory
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: (local.get $1)
+ ;; CHECK-NEXT: (local.get $1)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (memory.atomic.wait64 $appMemory offset=16
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: (local.get $1)
+ ;; CHECK-NEXT: (local.get $1)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (memory.atomic.wait64 $appMemory offset=16
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: (local.get $1)
+ ;; CHECK-NEXT: (local.get $1)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ (func $atomic-wait-notify (type $0)
+ (local $0 i64)
+ (local $1 i64)
+ (local $2 i32)
+ (drop
+ (memory.atomic.wait32 $dataMemory
+ (local.get $0)
+ (local.get $2)
+ (local.get $1)
+ )
+ )
+ (drop
+ (memory.atomic.wait32 2
+ (local.get $0)
+ (local.get $2)
+ (local.get $1)
+ )
+ )
+ (drop
+ (memory.atomic.wait32 $appMemory offset=4 align=4
+ (local.get $0)
+ (local.get $2)
+ (local.get $1)
+ )
+ )
+ (drop
+ (memory.atomic.wait32 2 offset=4 align=4
+ (local.get $0)
+ (local.get $2)
+ (local.get $1)
+ )
+ )
+ (drop
+ (memory.atomic.notify 1
+ (local.get $0)
+ (local.get $2)
+ )
+ )
+ (drop
+ (memory.atomic.notify $dataMemory
+ (local.get $0)
+ (local.get $2)
+ )
+ )
+ (drop
+ (memory.atomic.notify $appMemory offset=24 align=4
+ (local.get $0)
+ (local.get $2)
+ )
+ )
+ (drop
+ (memory.atomic.notify 1 offset=24 align=4
+ (local.get $0)
+ (local.get $2)
+ )
+ )
+ (drop
+ (memory.atomic.wait64 $instrumentMemory
+ (local.get $0)
+ (local.get $1)
+ (local.get $1)
+ )
+ )
+ (drop
+ (memory.atomic.wait64 2
+ (local.get $0)
+ (local.get $1)
+ (local.get $1)
+ )
+ )
+ (drop
+ (memory.atomic.wait64 $appMemory align=8 offset=16
+ (local.get $0)
+ (local.get $1)
+ (local.get $1)
+ )
+ )
+ (drop
+ (memory.atomic.wait64 0 align=8 offset=16
+ (local.get $0)
+ (local.get $1)
+ (local.get $1)
+ )
+ )
+ )
+ ;; CHECK: (func $atomic-fence
+ ;; CHECK-NEXT: (atomic.fence)
+ ;; CHECK-NEXT: )
+ (func $atomic-fence (type $0)
+ (atomic.fence)
+ )
+)
diff --git a/test/lit/multi-memories-basics.wast b/test/lit/multi-memories-basics.wast
new file mode 100644
index 000000000..42b60915b
--- /dev/null
+++ b/test/lit/multi-memories-basics.wast
@@ -0,0 +1,175 @@
+;; NOTE: Assertions have been generated by update_lit_checks.py and should not be edited.
+;; RUN: wasm-as %s -all -g -o %t.wasm
+;; RUN: wasm-dis %t.wasm -o - | filecheck %s
+
+(module
+ ;; CHECK: (import "env" "memory" (memory $importedMemory 1 1))
+
+ ;; CHECK: (memory $memory1 1 500)
+ (memory $memory1 1 500)
+ ;; CHECK: (memory $memory2 1 800)
+ (memory $memory2 1 800)
+ ;; CHECK: (memory $memory3 1 400)
+ (memory $memory3 1 400)
+ (data (memory $memory1) (i32.const 0) "a" "" "bcd")
+ (import "env" "memory" (memory $importedMemory 1 1))
+ ;; CHECK: (data (i32.const 0) "abcd")
+
+ ;; CHECK: (func $memory.fill
+ ;; CHECK-NEXT: (memory.fill $memory2
+ ;; CHECK-NEXT: (i32.const 0)
+ ;; CHECK-NEXT: (i32.const 1)
+ ;; CHECK-NEXT: (i32.const 2)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ (func $memory.fill
+ (memory.fill 1
+ (i32.const 0)
+ (i32.const 1)
+ (i32.const 2)
+ )
+ )
+ ;; CHECK: (func $memory.copy
+ ;; CHECK-NEXT: (memory.copy $memory2 $memory3
+ ;; CHECK-NEXT: (i32.const 512)
+ ;; CHECK-NEXT: (i32.const 0)
+ ;; CHECK-NEXT: (i32.const 12)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ (func $memory.copy
+ (memory.copy 1 2
+ (i32.const 512)
+ (i32.const 0)
+ (i32.const 12)
+ )
+ )
+ ;; CHECK: (func $memory.init
+ ;; CHECK-NEXT: (memory.init $memory1 0
+ ;; CHECK-NEXT: (i32.const 0)
+ ;; CHECK-NEXT: (i32.const 0)
+ ;; CHECK-NEXT: (i32.const 45)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ (func $memory.init
+ (memory.init 0 0
+ (i32.const 0)
+ (i32.const 0)
+ (i32.const 45)
+ )
+ )
+ ;; CHECK: (func $memory.grow (result i32)
+ ;; CHECK-NEXT: (memory.grow $memory3
+ ;; CHECK-NEXT: (i32.const 10)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ (func $memory.grow (result i32)
+ (memory.grow 2
+ (i32.const 10)
+ )
+ )
+ ;; CHECK: (func $memory.size (result i32)
+ ;; CHECK-NEXT: (memory.size $memory3)
+ ;; CHECK-NEXT: )
+ (func $memory.size (result i32)
+ (memory.size 2)
+ )
+ ;; CHECK: (func $loads
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i32.load $memory1
+ ;; CHECK-NEXT: (i32.const 12)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i32.load $memory3
+ ;; CHECK-NEXT: (i32.const 12)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i32.load16_s $memory2
+ ;; CHECK-NEXT: (i32.const 12)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i32.load16_s $memory2
+ ;; CHECK-NEXT: (i32.const 12)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i32.load8_s $memory3
+ ;; CHECK-NEXT: (i32.const 12)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i32.load8_s $memory3
+ ;; CHECK-NEXT: (i32.const 12)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i32.load16_u $memory1
+ ;; CHECK-NEXT: (i32.const 12)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i32.load16_u $memory1
+ ;; CHECK-NEXT: (i32.const 12)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i32.load8_u $memory2
+ ;; CHECK-NEXT: (i32.const 12)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (drop
+ ;; CHECK-NEXT: (i32.load8_u $memory2
+ ;; CHECK-NEXT: (i32.const 12)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ (func $loads
+ (drop (i32.load 0 (i32.const 12)))
+ (drop (i32.load $memory3 (i32.const 12)))
+ (drop (i32.load16_s 1 (i32.const 12)))
+ (drop (i32.load16_s $memory2 (i32.const 12)))
+ (drop (i32.load8_s 2 (i32.const 12)))
+ (drop (i32.load8_s $memory3 (i32.const 12)))
+ (drop (i32.load16_u 0 (i32.const 12)))
+ (drop (i32.load16_u $memory1 (i32.const 12)))
+ (drop (i32.load8_u 1 (i32.const 12)))
+ (drop (i32.load8_u $memory2 (i32.const 12)))
+ )
+ ;; CHECK: (func $stores
+ ;; CHECK-NEXT: (i32.store $memory1
+ ;; CHECK-NEXT: (i32.const 12)
+ ;; CHECK-NEXT: (i32.const 115)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (i32.store $memory1
+ ;; CHECK-NEXT: (i32.const 12)
+ ;; CHECK-NEXT: (i32.const 115)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (i32.store16 $memory2
+ ;; CHECK-NEXT: (i32.const 20)
+ ;; CHECK-NEXT: (i32.const 31353)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (i32.store16 $importedMemory
+ ;; CHECK-NEXT: (i32.const 20)
+ ;; CHECK-NEXT: (i32.const 31353)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (i32.store8 $memory3
+ ;; CHECK-NEXT: (i32.const 23)
+ ;; CHECK-NEXT: (i32.const 120)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (i32.store8 $memory3
+ ;; CHECK-NEXT: (i32.const 23)
+ ;; CHECK-NEXT: (i32.const 120)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ (func $stores
+ (i32.store 0 (i32.const 12) (i32.const 115))
+ (i32.store $memory1 (i32.const 12) (i32.const 115))
+ (i32.store16 1 (i32.const 20) (i32.const 31353))
+ (i32.store16 $importedMemory (i32.const 20) (i32.const 31353))
+ (i32.store8 2 (i32.const 23) (i32.const 120))
+ (i32.store8 $memory3 (i32.const 23) (i32.const 120))
+ )
+)
+
diff --git a/test/lit/multi-memories-simd.wast b/test/lit/multi-memories-simd.wast
new file mode 100644
index 000000000..184d98876
--- /dev/null
+++ b/test/lit/multi-memories-simd.wast
@@ -0,0 +1,635 @@
+;; NOTE: Assertions have been generated by update_lit_checks.py and should not be edited.
+;; RUN: wasm-as %s -all -g -o %t.wasm
+;; RUN: wasm-dis %t.wasm -o - | filecheck %s
+
+(module
+ ;; CHECK: (memory $memorya 1 1)
+ (memory $memorya 1 1)
+ ;; CHECK: (memory $memoryb 1 1)
+ (memory $memoryb 1 1)
+ ;; CHECK: (memory $memoryc 1 1)
+ (memory $memoryc 1 1)
+ ;; CHECK: (memory $memoryd 1 1)
+ (memory $memoryd 1 1)
+ ;; CHECK: (func $v128.load (param $0 i32) (result v128)
+ ;; CHECK-NEXT: (v128.load $memorya
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ (func $v128.load (param $0 i32) (result v128)
+ (v128.load offset=0 align=16
+ (local.get $0)
+ )
+ )
+ ;; CHECK: (func $v128.load2 (param $0 i32) (result v128)
+ ;; CHECK-NEXT: (v128.load $memoryb
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ (func $v128.load2 (param $0 i32) (result v128)
+ (v128.load $memoryb offset=0 align=16
+ (local.get $0)
+ )
+ )
+ ;; CHECK: (func $v128.load8x8_s (param $0 i32) (result v128)
+ ;; CHECK-NEXT: (v128.load8x8_s $memoryc
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ (func $v128.load8x8_s (param $0 i32) (result v128)
+ (v128.load8x8_s 2
+ (local.get $0)
+ )
+ )
+ ;; CHECK: (func $v128.load8x8_s2 (param $0 i32) (result v128)
+ ;; CHECK-NEXT: (v128.load8x8_s $memoryb
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ (func $v128.load8x8_s2 (param $0 i32) (result v128)
+ (v128.load8x8_s 1
+ (local.get $0)
+ )
+ )
+ ;; CHECK: (func $v128.load8x8_u (param $0 i32) (result v128)
+ ;; CHECK-NEXT: (v128.load8x8_u $memoryd
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ (func $v128.load8x8_u (param $0 i32) (result v128)
+ (v128.load8x8_u 3
+ (local.get $0)
+ )
+ )
+ ;; CHECK: (func $v128.load8x8_u2 (param $0 i32) (result v128)
+ ;; CHECK-NEXT: (v128.load8x8_u $memoryd
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ (func $v128.load8x8_u2 (param $0 i32) (result v128)
+ (v128.load8x8_u $memoryd
+ (local.get $0)
+ )
+ )
+ ;; CHECK: (func $v128.load16x4_s (param $0 i32) (result v128)
+ ;; CHECK-NEXT: (v128.load16x4_s $memorya
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ (func $v128.load16x4_s (param $0 i32) (result v128)
+ (v128.load16x4_s 0
+ (local.get $0)
+ )
+ )
+ ;; CHECK: (func $v128.load16x4_s2 (param $0 i32) (result v128)
+ ;; CHECK-NEXT: (v128.load16x4_s $memoryb
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ (func $v128.load16x4_s2 (param $0 i32) (result v128)
+ (v128.load16x4_s $memoryb
+ (local.get $0)
+ )
+ )
+ ;; CHECK: (func $v128.load16x4_u (param $0 i32) (result v128)
+ ;; CHECK-NEXT: (v128.load16x4_u $memorya
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ (func $v128.load16x4_u (param $0 i32) (result v128)
+ (v128.load16x4_u 0
+ (local.get $0)
+ )
+ )
+ ;; CHECK: (func $v128.load16x4_u2 (param $0 i32) (result v128)
+ ;; CHECK-NEXT: (v128.load16x4_u $memorya
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ (func $v128.load16x4_u2 (param $0 i32) (result v128)
+ (v128.load16x4_u $memorya
+ (local.get $0)
+ )
+ )
+ ;; CHECK: (func $v128.load32x2_s (param $0 i32) (result v128)
+ ;; CHECK-NEXT: (v128.load32x2_s $memoryc
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ (func $v128.load32x2_s (param $0 i32) (result v128)
+ (v128.load32x2_s 2
+ (local.get $0)
+ )
+ )
+ ;; CHECK: (func $v128.load32x2_s2 (param $0 i32) (result v128)
+ ;; CHECK-NEXT: (v128.load32x2_s $memoryb
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ (func $v128.load32x2_s2 (param $0 i32) (result v128)
+ (v128.load32x2_s $memoryb
+ (local.get $0)
+ )
+ )
+ ;; CHECK: (func $v128.load32x2_u (param $0 i32) (result v128)
+ ;; CHECK-NEXT: (v128.load32x2_u $memoryb
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ (func $v128.load32x2_u (param $0 i32) (result v128)
+ (v128.load32x2_u 1
+ (local.get $0)
+ )
+ )
+ ;; CHECK: (func $v128.load32x2_u2 (param $0 i32) (result v128)
+ ;; CHECK-NEXT: (v128.load32x2_u $memoryc
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ (func $v128.load32x2_u2 (param $0 i32) (result v128)
+ (v128.load32x2_u $memoryc
+ (local.get $0)
+ )
+ )
+ ;; CHECK: (func $v128.load8_splat (param $0 i32) (result v128)
+ ;; CHECK-NEXT: (v128.load8_splat $memoryb
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ (func $v128.load8_splat (param $0 i32) (result v128)
+ (v128.load8_splat 1
+ (local.get $0)
+ )
+ )
+ ;; CHECK: (func $v128.load8_splat2 (param $0 i32) (result v128)
+ ;; CHECK-NEXT: (v128.load8_splat $memoryb
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ (func $v128.load8_splat2 (param $0 i32) (result v128)
+ (v128.load8_splat $memoryb
+ (local.get $0)
+ )
+ )
+ ;; CHECK: (func $v128.load16_splat (param $0 i32) (result v128)
+ ;; CHECK-NEXT: (v128.load16_splat $memorya
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ (func $v128.load16_splat (param $0 i32) (result v128)
+ (v128.load16_splat $memorya
+ (local.get $0)
+ )
+ )
+ ;; CHECK: (func $v128.load16_splat2 (param $0 i32) (result v128)
+ ;; CHECK-NEXT: (v128.load16_splat $memorya
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ (func $v128.load16_splat2 (param $0 i32) (result v128)
+ (v128.load16_splat 0
+ (local.get $0)
+ )
+ )
+ ;; CHECK: (func $v128.load32_splat (param $0 i32) (result v128)
+ ;; CHECK-NEXT: (v128.load32_splat $memoryb
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ (func $v128.load32_splat (param $0 i32) (result v128)
+ (v128.load32_splat 1
+ (local.get $0)
+ )
+ )
+ ;; CHECK: (func $v128.load32_splat2 (param $0 i32) (result v128)
+ ;; CHECK-NEXT: (v128.load32_splat $memoryd
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ (func $v128.load32_splat2 (param $0 i32) (result v128)
+ (v128.load32_splat $memoryd
+ (local.get $0)
+ )
+ )
+ ;; CHECK: (func $v128.load64_splat (param $0 i32) (result v128)
+ ;; CHECK-NEXT: (v128.load64_splat $memoryb
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ (func $v128.load64_splat (param $0 i32) (result v128)
+ (v128.load64_splat 1
+ (local.get $0)
+ )
+ )
+ ;; CHECK: (func $v128.load64_splat2 (param $0 i32) (result v128)
+ ;; CHECK-NEXT: (v128.load64_splat $memorya
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ (func $v128.load64_splat2 (param $0 i32) (result v128)
+ (v128.load64_splat $memorya
+ (local.get $0)
+ )
+ )
+ ;; CHECK: (func $v128.store (param $0 i32) (param $1 v128)
+ ;; CHECK-NEXT: (v128.store $memorya
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: (local.get $1)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ (func $v128.store (param $0 i32) (param $1 v128)
+ (v128.store 0 offset=0 align=16
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ ;; CHECK: (func $v128.store2 (param $0 i32) (param $1 v128)
+ ;; CHECK-NEXT: (v128.store $memoryb
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: (local.get $1)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ (func $v128.store2 (param $0 i32) (param $1 v128)
+ (v128.store 1 offset=0 align=16
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ ;; CHECK: (func $v128.load8_lane (param $0 i32) (param $1 v128) (result v128)
+ ;; CHECK-NEXT: (v128.load8_lane $memorya 0
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: (local.get $1)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ (func $v128.load8_lane (param $0 i32) (param $1 v128) (result v128)
+ (v128.load8_lane 0 0
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ ;; CHECK: (func $v128.load8_lane2 (param $0 i32) (param $1 v128) (result v128)
+ ;; CHECK-NEXT: (v128.load8_lane $memoryb 0
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: (local.get $1)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ (func $v128.load8_lane2 (param $0 i32) (param $1 v128) (result v128)
+ (v128.load8_lane $memoryb 0
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ ;; CHECK: (func $v128.load16_lane (param $0 i32) (param $1 v128) (result v128)
+ ;; CHECK-NEXT: (v128.load16_lane $memoryb 0
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: (local.get $1)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ (func $v128.load16_lane (param $0 i32) (param $1 v128) (result v128)
+ (v128.load16_lane 1 0
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ ;; CHECK: (func $v128.load16_lane2 (param $0 i32) (param $1 v128) (result v128)
+ ;; CHECK-NEXT: (v128.load16_lane $memoryd 0
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: (local.get $1)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ (func $v128.load16_lane2 (param $0 i32) (param $1 v128) (result v128)
+ (v128.load16_lane $memoryd 0
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ ;; CHECK: (func $v128.load32_lane (param $0 i32) (param $1 v128) (result v128)
+ ;; CHECK-NEXT: (v128.load32_lane $memorya 0
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: (local.get $1)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ (func $v128.load32_lane (param $0 i32) (param $1 v128) (result v128)
+ (v128.load32_lane $memorya 0
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ ;; CHECK: (func $v128.load32_lane2 (param $0 i32) (param $1 v128) (result v128)
+ ;; CHECK-NEXT: (v128.load32_lane $memoryb 0
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: (local.get $1)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ (func $v128.load32_lane2 (param $0 i32) (param $1 v128) (result v128)
+ (v128.load32_lane 1 0
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ ;; CHECK: (func $v128.load64_lane (param $0 i32) (param $1 v128) (result v128)
+ ;; CHECK-NEXT: (v128.load64_lane $memoryd 0
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: (local.get $1)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ (func $v128.load64_lane (param $0 i32) (param $1 v128) (result v128)
+ (v128.load64_lane $memoryd 0
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ ;; CHECK: (func $v128.load64_lane2 (param $0 i32) (param $1 v128) (result v128)
+ ;; CHECK-NEXT: (v128.load64_lane $memoryb 0
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: (local.get $1)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ (func $v128.load64_lane2 (param $0 i32) (param $1 v128) (result v128)
+ (v128.load64_lane 1 0
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ ;; CHECK: (func $v128.load64_lane_align (param $0 i32) (param $1 v128) (result v128)
+ ;; CHECK-NEXT: (v128.load64_lane $memorya align=1 0
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: (local.get $1)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ (func $v128.load64_lane_align (param $0 i32) (param $1 v128) (result v128)
+ (v128.load64_lane 0 align=1 0
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ ;; CHECK: (func $v128.load64_lane_align2 (param $0 i32) (param $1 v128) (result v128)
+ ;; CHECK-NEXT: (v128.load64_lane $memoryb align=1 0
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: (local.get $1)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ (func $v128.load64_lane_align2 (param $0 i32) (param $1 v128) (result v128)
+ (v128.load64_lane $memoryb align=1 0
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ ;; CHECK: (func $v128.load64_lane_offset (param $0 i32) (param $1 v128) (result v128)
+ ;; CHECK-NEXT: (v128.load64_lane $memoryc offset=32 0
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: (local.get $1)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ (func $v128.load64_lane_offset (param $0 i32) (param $1 v128) (result v128)
+ (v128.load64_lane 2 offset=32 0
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ ;; CHECK: (func $v128.load64_lane_offset2 (param $0 i32) (param $1 v128) (result v128)
+ ;; CHECK-NEXT: (v128.load64_lane $memoryb offset=32 0
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: (local.get $1)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ (func $v128.load64_lane_offset2 (param $0 i32) (param $1 v128) (result v128)
+ (v128.load64_lane $memoryb offset=32 0
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ ;; CHECK: (func $v128.load64_lane_align_offset (param $0 i32) (param $1 v128) (result v128)
+ ;; CHECK-NEXT: (v128.load64_lane $memorya offset=32 align=1 0
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: (local.get $1)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ (func $v128.load64_lane_align_offset (param $0 i32) (param $1 v128) (result v128)
+ (v128.load64_lane align=1 offset=32 0
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ ;; CHECK: (func $v128.load64_lane_align_offset2 (param $0 i32) (param $1 v128) (result v128)
+ ;; CHECK-NEXT: (v128.load64_lane $memoryd offset=32 align=1 0
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: (local.get $1)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ (func $v128.load64_lane_align_offset2 (param $0 i32) (param $1 v128) (result v128)
+ (v128.load64_lane $memoryd align=1 offset=32 0
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ ;; CHECK: (func $v128.store8_lane (param $0 i32) (param $1 v128)
+ ;; CHECK-NEXT: (v128.store8_lane $memorya 0
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: (local.get $1)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ (func $v128.store8_lane (param $0 i32) (param $1 v128)
+ (v128.store8_lane 0 0
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ ;; CHECK: (func $v128.store8_lane2 (param $0 i32) (param $1 v128)
+ ;; CHECK-NEXT: (v128.store8_lane $memoryd 0
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: (local.get $1)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ (func $v128.store8_lane2 (param $0 i32) (param $1 v128)
+ (v128.store8_lane $memoryd 0
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ ;; CHECK: (func $v128.store16_lane (param $0 i32) (param $1 v128)
+ ;; CHECK-NEXT: (v128.store16_lane $memorya 0
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: (local.get $1)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ (func $v128.store16_lane (param $0 i32) (param $1 v128)
+ (v128.store16_lane $memorya 0
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ ;; CHECK: (func $v128.store16_lane2 (param $0 i32) (param $1 v128)
+ ;; CHECK-NEXT: (v128.store16_lane $memoryb 0
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: (local.get $1)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ (func $v128.store16_lane2 (param $0 i32) (param $1 v128)
+ (v128.store16_lane 1 0
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ ;; CHECK: (func $v128.store32_lane (param $0 i32) (param $1 v128)
+ ;; CHECK-NEXT: (v128.store32_lane $memoryb 0
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: (local.get $1)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ (func $v128.store32_lane (param $0 i32) (param $1 v128)
+ (v128.store32_lane $memoryb 0
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ ;; CHECK: (func $v128.store32_lane2 (param $0 i32) (param $1 v128)
+ ;; CHECK-NEXT: (v128.store32_lane $memoryc 0
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: (local.get $1)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ (func $v128.store32_lane2 (param $0 i32) (param $1 v128)
+ (v128.store32_lane 2 0
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ ;; CHECK: (func $v128.store64_lane (param $0 i32) (param $1 v128)
+ ;; CHECK-NEXT: (v128.store64_lane $memoryc 0
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: (local.get $1)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ (func $v128.store64_lane (param $0 i32) (param $1 v128)
+ (v128.store64_lane $memoryc 0
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ ;; CHECK: (func $v128.store64_lane2 (param $0 i32) (param $1 v128)
+ ;; CHECK-NEXT: (v128.store64_lane $memoryb 0
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: (local.get $1)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ (func $v128.store64_lane2 (param $0 i32) (param $1 v128)
+ (v128.store64_lane 1 0
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ ;; CHECK: (func $v128.store64_lane_align (param $0 i32) (param $1 v128)
+ ;; CHECK-NEXT: (v128.store64_lane $memoryb align=1 0
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: (local.get $1)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ (func $v128.store64_lane_align (param $0 i32) (param $1 v128)
+ (v128.store64_lane $memoryb align=1 0
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ ;; CHECK: (func $v128.store64_lane_align2 (param $0 i32) (param $1 v128)
+ ;; CHECK-NEXT: (v128.store64_lane $memorya align=1 0
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: (local.get $1)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ (func $v128.store64_lane_align2 (param $0 i32) (param $1 v128)
+ (v128.store64_lane 0 align=1 0
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ ;; CHECK: (func $v128.store64_lane_offset (param $0 i32) (param $1 v128)
+ ;; CHECK-NEXT: (v128.store64_lane $memoryd offset=32 0
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: (local.get $1)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ (func $v128.store64_lane_offset (param $0 i32) (param $1 v128)
+ (v128.store64_lane 3 offset=32 0
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ ;; CHECK: (func $v128.store64_lane_offset2 (param $0 i32) (param $1 v128)
+ ;; CHECK-NEXT: (v128.store64_lane $memorya offset=32 0
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: (local.get $1)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ (func $v128.store64_lane_offset2 (param $0 i32) (param $1 v128)
+ (v128.store64_lane $memorya offset=32 0
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ ;; CHECK: (func $v128.store64_lane_align_offset (param $0 i32) (param $1 v128)
+ ;; CHECK-NEXT: (v128.store64_lane $memoryb offset=32 align=1 0
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: (local.get $1)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ (func $v128.store64_lane_align_offset (param $0 i32) (param $1 v128)
+ (v128.store64_lane 1 align=1 offset=32 0
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ ;; CHECK: (func $v128.store64_lane_align_offset2 (param $0 i32) (param $1 v128)
+ ;; CHECK-NEXT: (v128.store64_lane $memoryd offset=32 align=1 0
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: (local.get $1)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ (func $v128.store64_lane_align_offset2 (param $0 i32) (param $1 v128)
+ (v128.store64_lane $memoryd align=1 offset=32 0
+ (local.get $0)
+ (local.get $1)
+ )
+ )
+ ;; CHECK: (func $v128.load32_zero (param $0 i32) (result v128)
+ ;; CHECK-NEXT: (v128.load32_zero $memorya
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ (func $v128.load32_zero (param $0 i32) (result v128)
+ (v128.load32_zero 0
+ (local.get $0)
+ )
+ )
+ ;; CHECK: (func $v128.load32_zero2 (param $0 i32) (result v128)
+ ;; CHECK-NEXT: (v128.load32_zero $memoryb
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ (func $v128.load32_zero2 (param $0 i32) (result v128)
+ (v128.load32_zero $memoryb
+ (local.get $0)
+ )
+ )
+ ;; CHECK: (func $v128.load64_zero (param $0 i32) (result v128)
+ ;; CHECK-NEXT: (v128.load64_zero $memoryb
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ (func $v128.load64_zero (param $0 i32) (result v128)
+ (v128.load64_zero 1
+ (local.get $0)
+ )
+ )
+ ;; CHECK: (func $v128.load64_zero2 (param $0 i32) (result v128)
+ ;; CHECK-NEXT: (v128.load64_zero $memoryc
+ ;; CHECK-NEXT: (local.get $0)
+ ;; CHECK-NEXT: )
+ ;; CHECK-NEXT: )
+ (func $v128.load64_zero2 (param $0 i32) (result v128)
+ (v128.load64_zero $memoryc
+ (local.get $0)
+ )
+ )
+)
+
diff --git a/test/lit/passes/O3_inline-functions-with-loops_flexible-inline-max-function-size=30.wast b/test/lit/passes/O3_inline-functions-with-loops_flexible-inline-max-function-size=30.wast
index 6c9a598bb..e0045579d 100644
--- a/test/lit/passes/O3_inline-functions-with-loops_flexible-inline-max-function-size=30.wast
+++ b/test/lit/passes/O3_inline-functions-with-loops_flexible-inline-max-function-size=30.wast
@@ -8,6 +8,8 @@
(type $t0 (func (param i32) (result i32)))
;; CHECK: (memory $memory 0)
+ ;; CHECK: (export "memory" (memory $memory))
+
;; CHECK: (export "fib" (func $fib))
;; CHECK: (export "looped" (func $looped))
@@ -20,8 +22,6 @@
;; CHECK: (export "t3" (func $t3))
- ;; CHECK: (export "memory" (memory $memory))
-
;; CHECK: (func $fib (; has Stack IR ;) (param $0 i32) (result i32)
;; CHECK-NEXT: (if
;; CHECK-NEXT: (i32.le_s
diff --git a/test/lit/passes/O4_disable-bulk-memory.wast b/test/lit/passes/O4_disable-bulk-memory.wast
index 4a6293d65..8200df5a3 100644
--- a/test/lit/passes/O4_disable-bulk-memory.wast
+++ b/test/lit/passes/O4_disable-bulk-memory.wast
@@ -80,8 +80,8 @@
(global $global$6 i32 (i32.const 100))
;; CHECK: (elem (i32.const 0) $null)
- ;; CHECK: (export "memory" (memory $0))
- (export "memory" (memory $0))
+ ;; CHECK: (export "memory" (memory $1))
+ (export "memory" (memory $1))
;; CHECK: (export "table" (table $0))
(export "table" (table $0))
;; CHECK: (export "init" (func $assembly/index/init))
diff --git a/test/lit/wasm-split/export-name-already-exists.wast b/test/lit/wasm-split/export-name-already-exists.wast
index 708929e98..83951795a 100644
--- a/test/lit/wasm-split/export-name-already-exists.wast
+++ b/test/lit/wasm-split/export-name-already-exists.wast
@@ -4,5 +4,6 @@
;; CHECK: error: Export foo already exists.
(module
+ (memory 0 0)
(export "foo" (memory 0 0))
)
diff --git a/test/lit/wasm-split/instrument-in-memory.wast b/test/lit/wasm-split/instrument-in-memory.wast
index 568ce2207..3a3c19d7f 100644
--- a/test/lit/wasm-split/instrument-in-memory.wast
+++ b/test/lit/wasm-split/instrument-in-memory.wast
@@ -7,6 +7,7 @@
(module
(import "env" "foo" (func $foo))
(export "bar" (func $bar))
+ (memory $0 1 1)
(func $bar
(call $foo)
)
diff --git a/test/lit/wasm-split/merge-profiles.wast b/test/lit/wasm-split/merge-profiles.wast
index fdaf6678e..2d09fefaa 100644
--- a/test/lit/wasm-split/merge-profiles.wast
+++ b/test/lit/wasm-split/merge-profiles.wast
@@ -22,6 +22,7 @@
;; SPLIT-NEXT: Splitting out functions: qux{{$}}
(module
+ (memory 0 0)
(export "memory" (memory 0 0))
(export "foo" (func $foo))
(export "bar" (func $bar))
diff --git a/test/lit/wasm-split/mismatched-hashes.wast b/test/lit/wasm-split/mismatched-hashes.wast
index fd3ebb8d3..347fb1746 100644
--- a/test/lit/wasm-split/mismatched-hashes.wast
+++ b/test/lit/wasm-split/mismatched-hashes.wast
@@ -19,5 +19,6 @@
;; RUN: wasm-split %s --profile=%t.prof -o1 %t.1.wasm -o2 %t.2.wasm
(module
+ (memory 0 0)
(export "memory" (memory 0 0))
)