diff options
Diffstat (limited to 'test')
-rw-r--r-- | test/passes/optimize-instructions.txt | 25 | ||||
-rw-r--r-- | test/passes/optimize-instructions.wast | 28 |
2 files changed, 53 insertions, 0 deletions
diff --git a/test/passes/optimize-instructions.txt b/test/passes/optimize-instructions.txt index 5a0a45e3d..51a5113b1 100644 --- a/test/passes/optimize-instructions.txt +++ b/test/passes/optimize-instructions.txt @@ -2997,6 +2997,31 @@ ) ) ) + (func $add-sub-zero-reorder-1 (; 73 ;) (type $3) (param $temp i32) (result i32) + (i32.add + (i32.add + (i32.sub + (i32.const 0) + (get_local $temp) + ) + (tee_local $temp + (i32.const 1) + ) + ) + (i32.const 2) + ) + ) + (func $add-sub-zero-reorder-2 (; 74 ;) (type $3) (param $temp i32) (result i32) + (i32.add + (i32.sub + (tee_local $temp + (i32.const 1) + ) + (get_local $temp) + ) + (i32.const 2) + ) + ) ) (module (type $0 (func)) diff --git a/test/passes/optimize-instructions.wast b/test/passes/optimize-instructions.wast index aa979c62a..53ed761d8 100644 --- a/test/passes/optimize-instructions.wast +++ b/test/passes/optimize-instructions.wast @@ -3526,6 +3526,34 @@ ) ) ) + (func $add-sub-zero-reorder-1 (param $temp i32) (result i32) + (i32.add + (i32.add + (i32.sub + (i32.const 0) ;; this zero looks like we could remove it by subtracting the get of $temp from the parent, but that would reorder it *after* the tee :( + (get_local $temp) + ) + (tee_local $temp ;; cannot move this tee before the get + (i32.const 1) + ) + ) + (i32.const 2) + ) + ) + (func $add-sub-zero-reorder-2 (param $temp i32) (result i32) + (i32.add + (i32.add + (tee_local $temp ;; in this order, the tee already comes first, so all is good for the optimization + (i32.const 1) + ) + (i32.sub + (i32.const 0) + (get_local $temp) + ) + ) + (i32.const 2) + ) + ) ) (module (import "env" "memory" (memory $0 (shared 256 256))) |