summaryrefslogtreecommitdiff
path: root/test/lit/passes/optimize-instructions-bulk-memory.wast
diff options
context:
space:
mode:
Diffstat (limited to 'test/lit/passes/optimize-instructions-bulk-memory.wast')
-rw-r--r--test/lit/passes/optimize-instructions-bulk-memory.wast212
1 files changed, 211 insertions, 1 deletions
diff --git a/test/lit/passes/optimize-instructions-bulk-memory.wast b/test/lit/passes/optimize-instructions-bulk-memory.wast
index 5c9efc893..4f30e3e9a 100644
--- a/test/lit/passes/optimize-instructions-bulk-memory.wast
+++ b/test/lit/passes/optimize-instructions-bulk-memory.wast
@@ -1,5 +1,6 @@
;; NOTE: Assertions have been generated by update_lit_checks.py and should not be edited.
-;; RUN: wasm-opt %s --all-features --optimize-instructions --enable-bulk-memory -S -o - | filecheck %s
+;; RUN: wasm-opt %s --optimize-instructions --enable-bulk-memory --enable-simd -S -o - | filecheck %s
+;; RUN: wasm-opt %s --optimize-instructions --enable-bulk-memory -S -o - | filecheck %s --check-prefix NOSIMD
(module
(memory 0)
@@ -77,6 +78,79 @@
;; CHECK-NEXT: )
;; CHECK-NEXT: )
;; CHECK-NEXT: )
+ ;; NOSIMD: (func $optimize-bulk-memory-copy (param $dst i32) (param $src i32) (param $sz i32)
+ ;; NOSIMD-NEXT: (memory.copy
+ ;; NOSIMD-NEXT: (local.get $dst)
+ ;; NOSIMD-NEXT: (local.get $dst)
+ ;; NOSIMD-NEXT: (local.get $sz)
+ ;; NOSIMD-NEXT: )
+ ;; NOSIMD-NEXT: (memory.copy
+ ;; NOSIMD-NEXT: (local.get $dst)
+ ;; NOSIMD-NEXT: (local.get $src)
+ ;; NOSIMD-NEXT: (i32.const 0)
+ ;; NOSIMD-NEXT: )
+ ;; NOSIMD-NEXT: (i32.store8
+ ;; NOSIMD-NEXT: (local.get $dst)
+ ;; NOSIMD-NEXT: (i32.load8_u
+ ;; NOSIMD-NEXT: (local.get $src)
+ ;; NOSIMD-NEXT: )
+ ;; NOSIMD-NEXT: )
+ ;; NOSIMD-NEXT: (i32.store16 align=1
+ ;; NOSIMD-NEXT: (local.get $dst)
+ ;; NOSIMD-NEXT: (i32.load16_u align=1
+ ;; NOSIMD-NEXT: (local.get $src)
+ ;; NOSIMD-NEXT: )
+ ;; NOSIMD-NEXT: )
+ ;; NOSIMD-NEXT: (memory.copy
+ ;; NOSIMD-NEXT: (local.get $dst)
+ ;; NOSIMD-NEXT: (local.get $src)
+ ;; NOSIMD-NEXT: (i32.const 3)
+ ;; NOSIMD-NEXT: )
+ ;; NOSIMD-NEXT: (i32.store align=1
+ ;; NOSIMD-NEXT: (local.get $dst)
+ ;; NOSIMD-NEXT: (i32.load align=1
+ ;; NOSIMD-NEXT: (local.get $src)
+ ;; NOSIMD-NEXT: )
+ ;; NOSIMD-NEXT: )
+ ;; NOSIMD-NEXT: (memory.copy
+ ;; NOSIMD-NEXT: (local.get $dst)
+ ;; NOSIMD-NEXT: (local.get $src)
+ ;; NOSIMD-NEXT: (i32.const 5)
+ ;; NOSIMD-NEXT: )
+ ;; NOSIMD-NEXT: (memory.copy
+ ;; NOSIMD-NEXT: (local.get $dst)
+ ;; NOSIMD-NEXT: (local.get $src)
+ ;; NOSIMD-NEXT: (i32.const 6)
+ ;; NOSIMD-NEXT: )
+ ;; NOSIMD-NEXT: (memory.copy
+ ;; NOSIMD-NEXT: (local.get $dst)
+ ;; NOSIMD-NEXT: (local.get $src)
+ ;; NOSIMD-NEXT: (i32.const 7)
+ ;; NOSIMD-NEXT: )
+ ;; NOSIMD-NEXT: (i64.store align=1
+ ;; NOSIMD-NEXT: (local.get $dst)
+ ;; NOSIMD-NEXT: (i64.load align=1
+ ;; NOSIMD-NEXT: (local.get $src)
+ ;; NOSIMD-NEXT: )
+ ;; NOSIMD-NEXT: )
+ ;; NOSIMD-NEXT: (memory.copy
+ ;; NOSIMD-NEXT: (local.get $dst)
+ ;; NOSIMD-NEXT: (local.get $src)
+ ;; NOSIMD-NEXT: (i32.const 16)
+ ;; NOSIMD-NEXT: )
+ ;; NOSIMD-NEXT: (memory.copy
+ ;; NOSIMD-NEXT: (local.get $dst)
+ ;; NOSIMD-NEXT: (local.get $src)
+ ;; NOSIMD-NEXT: (local.get $sz)
+ ;; NOSIMD-NEXT: )
+ ;; NOSIMD-NEXT: (memory.copy
+ ;; NOSIMD-NEXT: (i32.const 0)
+ ;; NOSIMD-NEXT: (i32.const 0)
+ ;; NOSIMD-NEXT: (i32.load
+ ;; NOSIMD-NEXT: (i32.const 3)
+ ;; NOSIMD-NEXT: )
+ ;; NOSIMD-NEXT: )
+ ;; NOSIMD-NEXT: )
(func $optimize-bulk-memory-copy (param $dst i32) (param $src i32) (param $sz i32)
(memory.copy ;; skip
(local.get $dst)
@@ -251,7 +325,137 @@
;; CHECK-NEXT: (i32.const 0)
;; CHECK-NEXT: (i32.const 17)
;; CHECK-NEXT: )
+ ;; CHECK-NEXT: (memory.fill
+ ;; CHECK-NEXT: (unreachable)
+ ;; CHECK-NEXT: (i32.const 1)
+ ;; CHECK-NEXT: (i32.const 16)
+ ;; CHECK-NEXT: )
;; CHECK-NEXT: )
+ ;; NOSIMD: (func $optimize-bulk-memory-fill (param $dst i32) (param $val i32) (param $sz i32)
+ ;; NOSIMD-NEXT: (local $3 i32)
+ ;; NOSIMD-NEXT: (local $4 i32)
+ ;; NOSIMD-NEXT: (local $5 i32)
+ ;; NOSIMD-NEXT: (memory.fill
+ ;; NOSIMD-NEXT: (local.get $dst)
+ ;; NOSIMD-NEXT: (i32.const 0)
+ ;; NOSIMD-NEXT: (i32.const 0)
+ ;; NOSIMD-NEXT: )
+ ;; NOSIMD-NEXT: (i32.store8
+ ;; NOSIMD-NEXT: (local.get $dst)
+ ;; NOSIMD-NEXT: (i32.const 0)
+ ;; NOSIMD-NEXT: )
+ ;; NOSIMD-NEXT: (i32.store8
+ ;; NOSIMD-NEXT: (local.get $dst)
+ ;; NOSIMD-NEXT: (local.get $val)
+ ;; NOSIMD-NEXT: )
+ ;; NOSIMD-NEXT: (i32.store8
+ ;; NOSIMD-NEXT: (local.get $dst)
+ ;; NOSIMD-NEXT: (i32.const 1)
+ ;; NOSIMD-NEXT: )
+ ;; NOSIMD-NEXT: (i32.store8
+ ;; NOSIMD-NEXT: (local.get $dst)
+ ;; NOSIMD-NEXT: (i32.const 255)
+ ;; NOSIMD-NEXT: )
+ ;; NOSIMD-NEXT: (i32.store16 align=1
+ ;; NOSIMD-NEXT: (local.get $dst)
+ ;; NOSIMD-NEXT: (i32.const 0)
+ ;; NOSIMD-NEXT: )
+ ;; NOSIMD-NEXT: (i32.store16 align=1
+ ;; NOSIMD-NEXT: (local.get $dst)
+ ;; NOSIMD-NEXT: (i32.const 257)
+ ;; NOSIMD-NEXT: )
+ ;; NOSIMD-NEXT: (i32.store16 align=1
+ ;; NOSIMD-NEXT: (local.get $dst)
+ ;; NOSIMD-NEXT: (i32.const 65535)
+ ;; NOSIMD-NEXT: )
+ ;; NOSIMD-NEXT: (i32.store align=1
+ ;; NOSIMD-NEXT: (local.get $dst)
+ ;; NOSIMD-NEXT: (i32.const 0)
+ ;; NOSIMD-NEXT: )
+ ;; NOSIMD-NEXT: (i64.store align=1
+ ;; NOSIMD-NEXT: (local.get $dst)
+ ;; NOSIMD-NEXT: (i64.const 0)
+ ;; NOSIMD-NEXT: )
+ ;; NOSIMD-NEXT: (block
+ ;; NOSIMD-NEXT: (i64.store align=1
+ ;; NOSIMD-NEXT: (local.tee $3
+ ;; NOSIMD-NEXT: (local.get $dst)
+ ;; NOSIMD-NEXT: )
+ ;; NOSIMD-NEXT: (i64.const 0)
+ ;; NOSIMD-NEXT: )
+ ;; NOSIMD-NEXT: (i64.store offset=8 align=1
+ ;; NOSIMD-NEXT: (local.get $3)
+ ;; NOSIMD-NEXT: (i64.const 0)
+ ;; NOSIMD-NEXT: )
+ ;; NOSIMD-NEXT: )
+ ;; NOSIMD-NEXT: (i32.store align=1
+ ;; NOSIMD-NEXT: (local.get $dst)
+ ;; NOSIMD-NEXT: (i32.const 16843009)
+ ;; NOSIMD-NEXT: )
+ ;; NOSIMD-NEXT: (i64.store align=1
+ ;; NOSIMD-NEXT: (local.get $dst)
+ ;; NOSIMD-NEXT: (i64.const 72340172838076673)
+ ;; NOSIMD-NEXT: )
+ ;; NOSIMD-NEXT: (block
+ ;; NOSIMD-NEXT: (i64.store align=1
+ ;; NOSIMD-NEXT: (local.tee $4
+ ;; NOSIMD-NEXT: (local.get $dst)
+ ;; NOSIMD-NEXT: )
+ ;; NOSIMD-NEXT: (i64.const 72340172838076673)
+ ;; NOSIMD-NEXT: )
+ ;; NOSIMD-NEXT: (i64.store offset=8 align=1
+ ;; NOSIMD-NEXT: (local.get $4)
+ ;; NOSIMD-NEXT: (i64.const 72340172838076673)
+ ;; NOSIMD-NEXT: )
+ ;; NOSIMD-NEXT: )
+ ;; NOSIMD-NEXT: (block
+ ;; NOSIMD-NEXT: (i64.store align=1
+ ;; NOSIMD-NEXT: (local.tee $5
+ ;; NOSIMD-NEXT: (local.get $dst)
+ ;; NOSIMD-NEXT: )
+ ;; NOSIMD-NEXT: (i64.const -1)
+ ;; NOSIMD-NEXT: )
+ ;; NOSIMD-NEXT: (i64.store offset=8 align=1
+ ;; NOSIMD-NEXT: (local.get $5)
+ ;; NOSIMD-NEXT: (i64.const -1)
+ ;; NOSIMD-NEXT: )
+ ;; NOSIMD-NEXT: )
+ ;; NOSIMD-NEXT: (memory.fill
+ ;; NOSIMD-NEXT: (local.get $dst)
+ ;; NOSIMD-NEXT: (local.get $val)
+ ;; NOSIMD-NEXT: (i32.const 0)
+ ;; NOSIMD-NEXT: )
+ ;; NOSIMD-NEXT: (memory.fill
+ ;; NOSIMD-NEXT: (local.get $dst)
+ ;; NOSIMD-NEXT: (i32.const 0)
+ ;; NOSIMD-NEXT: (local.get $sz)
+ ;; NOSIMD-NEXT: )
+ ;; NOSIMD-NEXT: (memory.fill
+ ;; NOSIMD-NEXT: (local.get $dst)
+ ;; NOSIMD-NEXT: (local.get $val)
+ ;; NOSIMD-NEXT: (local.get $sz)
+ ;; NOSIMD-NEXT: )
+ ;; NOSIMD-NEXT: (memory.fill
+ ;; NOSIMD-NEXT: (local.get $dst)
+ ;; NOSIMD-NEXT: (i32.const 0)
+ ;; NOSIMD-NEXT: (i32.const 3)
+ ;; NOSIMD-NEXT: )
+ ;; NOSIMD-NEXT: (memory.fill
+ ;; NOSIMD-NEXT: (local.get $dst)
+ ;; NOSIMD-NEXT: (i32.const 1)
+ ;; NOSIMD-NEXT: (i32.const 3)
+ ;; NOSIMD-NEXT: )
+ ;; NOSIMD-NEXT: (memory.fill
+ ;; NOSIMD-NEXT: (local.get $dst)
+ ;; NOSIMD-NEXT: (i32.const 0)
+ ;; NOSIMD-NEXT: (i32.const 17)
+ ;; NOSIMD-NEXT: )
+ ;; NOSIMD-NEXT: (memory.fill
+ ;; NOSIMD-NEXT: (unreachable)
+ ;; NOSIMD-NEXT: (i32.const 1)
+ ;; NOSIMD-NEXT: (i32.const 16)
+ ;; NOSIMD-NEXT: )
+ ;; NOSIMD-NEXT: )
(func $optimize-bulk-memory-fill (param $dst i32) (param $val i32) (param $sz i32)
(memory.fill
(local.get $dst)
@@ -378,5 +582,11 @@
(i32.const 0)
(i32.const 17)
)
+
+ (memory.fill ;; skip
+ (unreachable)
+ (i32.const 1)
+ (i32.const 16)
+ )
)
)