diff options
Diffstat (limited to 'test/lit/passes/optimize-instructions-bulk-memory.wast')
-rw-r--r-- | test/lit/passes/optimize-instructions-bulk-memory.wast | 212 |
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) + ) ) ) |