diff options
Diffstat (limited to 'test/lit')
-rw-r--r-- | test/lit/passes/inlining-optimizing_optimize-level=3.wast | 108 | ||||
-rw-r--r-- | test/lit/passes/merge-blocks.wast | 38 |
2 files changed, 91 insertions, 55 deletions
diff --git a/test/lit/passes/inlining-optimizing_optimize-level=3.wast b/test/lit/passes/inlining-optimizing_optimize-level=3.wast index 4a4f21f94..1ae11b22a 100644 --- a/test/lit/passes/inlining-optimizing_optimize-level=3.wast +++ b/test/lit/passes/inlining-optimizing_optimize-level=3.wast @@ -2584,79 +2584,77 @@ ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (local.set $3 + ;; CHECK-NEXT: (i32.load8_s + ;; CHECK-NEXT: (local.tee $4 + ;; CHECK-NEXT: (i32.add + ;; CHECK-NEXT: (local.get $2) + ;; CHECK-NEXT: (i32.const 74) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: (i32.store8 + ;; CHECK-NEXT: (local.get $4) + ;; CHECK-NEXT: (i32.or + ;; CHECK-NEXT: (i32.add + ;; CHECK-NEXT: (local.get $3) + ;; CHECK-NEXT: (i32.const 255) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: (local.get $3) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: (local.set $3 ;; CHECK-NEXT: (if (result i32) - ;; CHECK-NEXT: (block (result i32) - ;; CHECK-NEXT: (local.set $3 - ;; CHECK-NEXT: (i32.load8_s - ;; CHECK-NEXT: (local.tee $4 - ;; CHECK-NEXT: (i32.add - ;; CHECK-NEXT: (local.get $2) - ;; CHECK-NEXT: (i32.const 74) - ;; CHECK-NEXT: ) + ;; CHECK-NEXT: (if (result i32) + ;; CHECK-NEXT: (i32.and + ;; CHECK-NEXT: (local.tee $3 + ;; CHECK-NEXT: (i32.load + ;; CHECK-NEXT: (local.get $2) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) + ;; CHECK-NEXT: (i32.const 8) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (i32.store8 - ;; CHECK-NEXT: (local.get $4) - ;; CHECK-NEXT: (i32.or - ;; CHECK-NEXT: (i32.add + ;; CHECK-NEXT: (block (result i32) + ;; CHECK-NEXT: (i32.store + ;; CHECK-NEXT: (local.get $2) + ;; CHECK-NEXT: (i32.or ;; CHECK-NEXT: (local.get $3) - ;; CHECK-NEXT: (i32.const 255) + ;; CHECK-NEXT: (i32.const 32) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (local.get $3) ;; CHECK-NEXT: ) + ;; CHECK-NEXT: (i32.const -1) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (if (result i32) - ;; CHECK-NEXT: (i32.and + ;; CHECK-NEXT: (block (result i32) + ;; CHECK-NEXT: (i32.store offset=8 + ;; CHECK-NEXT: (local.get $2) + ;; CHECK-NEXT: (i32.const 0) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: (i32.store offset=4 + ;; CHECK-NEXT: (local.get $2) + ;; CHECK-NEXT: (i32.const 0) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: (i32.store offset=28 + ;; CHECK-NEXT: (local.get $2) ;; CHECK-NEXT: (local.tee $3 - ;; CHECK-NEXT: (i32.load + ;; CHECK-NEXT: (i32.load offset=44 ;; CHECK-NEXT: (local.get $2) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (i32.const 8) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (block (result i32) - ;; CHECK-NEXT: (i32.store - ;; CHECK-NEXT: (local.get $2) - ;; CHECK-NEXT: (i32.or - ;; CHECK-NEXT: (local.get $3) - ;; CHECK-NEXT: (i32.const 32) - ;; CHECK-NEXT: ) - ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (i32.const -1) + ;; CHECK-NEXT: (i32.store offset=20 + ;; CHECK-NEXT: (local.get $2) + ;; CHECK-NEXT: (local.get $3) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (block (result i32) - ;; CHECK-NEXT: (i32.store offset=8 - ;; CHECK-NEXT: (local.get $2) - ;; CHECK-NEXT: (i32.const 0) - ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (i32.store offset=4 - ;; CHECK-NEXT: (local.get $2) - ;; CHECK-NEXT: (i32.const 0) - ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (i32.store offset=28 - ;; CHECK-NEXT: (local.get $2) - ;; CHECK-NEXT: (local.tee $3 - ;; CHECK-NEXT: (i32.load offset=44 - ;; CHECK-NEXT: (local.get $2) - ;; CHECK-NEXT: ) - ;; CHECK-NEXT: ) - ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (i32.store offset=20 - ;; CHECK-NEXT: (local.get $2) + ;; CHECK-NEXT: (i32.store offset=16 + ;; CHECK-NEXT: (local.get $2) + ;; CHECK-NEXT: (i32.add ;; CHECK-NEXT: (local.get $3) - ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (i32.store offset=16 - ;; CHECK-NEXT: (local.get $2) - ;; CHECK-NEXT: (i32.add - ;; CHECK-NEXT: (local.get $3) - ;; CHECK-NEXT: (i32.load offset=48 - ;; CHECK-NEXT: (local.get $2) - ;; CHECK-NEXT: ) + ;; CHECK-NEXT: (i32.load offset=48 + ;; CHECK-NEXT: (local.get $2) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) - ;; CHECK-NEXT: (i32.const 0) ;; CHECK-NEXT: ) + ;; CHECK-NEXT: (i32.const 0) ;; CHECK-NEXT: ) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (i32.const 0) diff --git a/test/lit/passes/merge-blocks.wast b/test/lit/passes/merge-blocks.wast index e6136d4da..3d931690b 100644 --- a/test/lit/passes/merge-blocks.wast +++ b/test/lit/passes/merge-blocks.wast @@ -188,4 +188,42 @@ ) ) ) + + ;; CHECK: (func $if-condition (result i32) + ;; CHECK-NEXT: (drop + ;; CHECK-NEXT: (i32.const 0) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: (if (result i32) + ;; CHECK-NEXT: (i32.const 1) + ;; CHECK-NEXT: (block (result i32) + ;; CHECK-NEXT: (drop + ;; CHECK-NEXT: (i32.const 2) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: (i32.const 3) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: (block (result i32) + ;; CHECK-NEXT: (drop + ;; CHECK-NEXT: (i32.const 4) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: (i32.const 5) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: ) + ;; CHECK-NEXT: ) + (func $if-condition (result i32) + ;; Content can be moved out of an if condition, but not anywhere else. + (if (result i32) + (block (result i32) + (drop (i32.const 0)) + (i32.const 1) + ) + (block (result i32) + (drop (i32.const 2)) + (i32.const 3) + ) + (block (result i32) + (drop (i32.const 4)) + (i32.const 5) + ) + ) + ) ) |