diff options
Diffstat (limited to 'test/lit/passes/optimize-instructions-bulk-memory.wast')
-rw-r--r-- | test/lit/passes/optimize-instructions-bulk-memory.wast | 230 |
1 files changed, 226 insertions, 4 deletions
diff --git a/test/lit/passes/optimize-instructions-bulk-memory.wast b/test/lit/passes/optimize-instructions-bulk-memory.wast index 37d17dba8..5c9efc893 100644 --- a/test/lit/passes/optimize-instructions-bulk-memory.wast +++ b/test/lit/passes/optimize-instructions-bulk-memory.wast @@ -1,5 +1,5 @@ ;; NOTE: Assertions have been generated by update_lit_checks.py and should not be edited. -;; RUN: wasm-opt %s --optimize-instructions --enable-bulk-memory -S -o - | filecheck %s +;; RUN: wasm-opt %s --all-features --optimize-instructions --enable-bulk-memory -S -o - | filecheck %s (module (memory 0) @@ -58,10 +58,11 @@ ;; CHECK-NEXT: (local.get $src) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (memory.copy + ;; CHECK-NEXT: (v128.store align=1 ;; CHECK-NEXT: (local.get $dst) - ;; CHECK-NEXT: (local.get $src) - ;; CHECK-NEXT: (i32.const 16) + ;; CHECK-NEXT: (v128.load align=1 + ;; CHECK-NEXT: (local.get $src) + ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (memory.copy ;; CHECK-NEXT: (local.get $dst) @@ -157,4 +158,225 @@ ) ) ) + + ;; CHECK: (func $optimize-bulk-memory-fill (param $dst i32) (param $val i32) (param $sz i32) + ;; CHECK-NEXT: (memory.fill + ;; CHECK-NEXT: (local.get $dst) + ;; CHECK-NEXT: (i32.const 0) + ;; CHECK-NEXT: (i32.const 0) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: (i32.store8 + ;; CHECK-NEXT: (local.get $dst) + ;; CHECK-NEXT: (i32.const 0) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: (i32.store8 + ;; CHECK-NEXT: (local.get $dst) + ;; CHECK-NEXT: (local.get $val) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: (i32.store8 + ;; CHECK-NEXT: (local.get $dst) + ;; CHECK-NEXT: (i32.const 1) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: (i32.store8 + ;; CHECK-NEXT: (local.get $dst) + ;; CHECK-NEXT: (i32.const 255) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: (i32.store16 align=1 + ;; CHECK-NEXT: (local.get $dst) + ;; CHECK-NEXT: (i32.const 0) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: (i32.store16 align=1 + ;; CHECK-NEXT: (local.get $dst) + ;; CHECK-NEXT: (i32.const 257) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: (i32.store16 align=1 + ;; CHECK-NEXT: (local.get $dst) + ;; CHECK-NEXT: (i32.const 65535) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: (i32.store align=1 + ;; CHECK-NEXT: (local.get $dst) + ;; CHECK-NEXT: (i32.const 0) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: (i64.store align=1 + ;; CHECK-NEXT: (local.get $dst) + ;; CHECK-NEXT: (i64.const 0) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: (v128.store align=1 + ;; CHECK-NEXT: (local.get $dst) + ;; CHECK-NEXT: (v128.const i32x4 0x00000000 0x00000000 0x00000000 0x00000000) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: (i32.store align=1 + ;; CHECK-NEXT: (local.get $dst) + ;; CHECK-NEXT: (i32.const 16843009) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: (i64.store align=1 + ;; CHECK-NEXT: (local.get $dst) + ;; CHECK-NEXT: (i64.const 72340172838076673) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: (v128.store align=1 + ;; CHECK-NEXT: (local.get $dst) + ;; CHECK-NEXT: (v128.const i32x4 0x01010101 0x01010101 0x01010101 0x01010101) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: (v128.store align=1 + ;; CHECK-NEXT: (local.get $dst) + ;; CHECK-NEXT: (v128.const i32x4 0xffffffff 0xffffffff 0xffffffff 0xffffffff) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: (memory.fill + ;; CHECK-NEXT: (local.get $dst) + ;; CHECK-NEXT: (local.get $val) + ;; CHECK-NEXT: (i32.const 0) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: (memory.fill + ;; CHECK-NEXT: (local.get $dst) + ;; CHECK-NEXT: (i32.const 0) + ;; CHECK-NEXT: (local.get $sz) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: (memory.fill + ;; CHECK-NEXT: (local.get $dst) + ;; CHECK-NEXT: (local.get $val) + ;; CHECK-NEXT: (local.get $sz) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: (memory.fill + ;; CHECK-NEXT: (local.get $dst) + ;; CHECK-NEXT: (i32.const 0) + ;; CHECK-NEXT: (i32.const 3) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: (memory.fill + ;; CHECK-NEXT: (local.get $dst) + ;; CHECK-NEXT: (i32.const 1) + ;; CHECK-NEXT: (i32.const 3) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: (memory.fill + ;; CHECK-NEXT: (local.get $dst) + ;; CHECK-NEXT: (i32.const 0) + ;; CHECK-NEXT: (i32.const 17) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: ) + (func $optimize-bulk-memory-fill (param $dst i32) (param $val i32) (param $sz i32) + (memory.fill + (local.get $dst) + (i32.const 0) + (i32.const 0) + ) + + (memory.fill + (local.get $dst) + (i32.const 0) + (i32.const 1) + ) + + (memory.fill + (local.get $dst) + (local.get $val) + (i32.const 1) + ) + + (memory.fill + (local.get $dst) + (i32.const 1) + (i32.const 1) + ) + + (memory.fill + (local.get $dst) + (i32.const 1023) + (i32.const 1) + ) + + (memory.fill + (local.get $dst) + (i32.const 0) + (i32.const 2) + ) + + (memory.fill + (local.get $dst) + (i32.const 1) + (i32.const 2) + ) + + (memory.fill + (local.get $dst) + (i32.const 255) + (i32.const 2) + ) + + (memory.fill + (local.get $dst) + (i32.const 0) + (i32.const 4) + ) + + (memory.fill + (local.get $dst) + (i32.const 0) + (i32.const 8) + ) + + (memory.fill + (local.get $dst) + (i32.const 0) + (i32.const 16) + ) + + (memory.fill + (local.get $dst) + (i32.const 1) + (i32.const 4) + ) + + (memory.fill + (local.get $dst) + (i32.const 1) + (i32.const 8) + ) + + (memory.fill + (local.get $dst) + (i32.const 1) + (i32.const 16) + ) + + (memory.fill + (local.get $dst) + (i32.const 1023) + (i32.const 16) + ) + + (memory.fill ;; skip + (local.get $dst) + (local.get $val) + (i32.const 0) + ) + + (memory.fill ;; skip + (local.get $dst) + (i32.const 0) + (local.get $sz) + ) + + (memory.fill ;; skip + (local.get $dst) + (local.get $val) + (local.get $sz) + ) + + (memory.fill ;; skip + (local.get $dst) + (i32.const 0) + (i32.const 3) + ) + + (memory.fill ;; skip + (local.get $dst) + (i32.const 1) + (i32.const 3) + ) + + (memory.fill ;; skip + (local.get $dst) + (i32.const 0) + (i32.const 17) + ) + ) ) |