summaryrefslogtreecommitdiff
path: root/test/passes/flatten_simplify-locals-nonesting_souperify-single-use_enable-threads.wast
diff options
context:
space:
mode:
Diffstat (limited to 'test/passes/flatten_simplify-locals-nonesting_souperify-single-use_enable-threads.wast')
-rw-r--r--test/passes/flatten_simplify-locals-nonesting_souperify-single-use_enable-threads.wast1246
1 files changed, 0 insertions, 1246 deletions
diff --git a/test/passes/flatten_simplify-locals-nonesting_souperify-single-use_enable-threads.wast b/test/passes/flatten_simplify-locals-nonesting_souperify-single-use_enable-threads.wast
deleted file mode 100644
index 709a3645a..000000000
--- a/test/passes/flatten_simplify-locals-nonesting_souperify-single-use_enable-threads.wast
+++ /dev/null
@@ -1,1246 +0,0 @@
-(module
- (memory $0 (shared 1 1))
- ;; Figure 1a from the Souper paper https://arxiv.org/pdf/1711.04422.pdf
- (func $figure-1a (param $a i64) (param $x i64) (param $y i64) (result i32)
- (local $i i32)
- (local $j i32)
- (local $r i32)
- (local.set $i
- (i64.eq
- (local.get $a)
- (local.get $x)
- )
- )
- (local.set $j
- (i64.ne
- (local.get $a)
- (local.get $y)
- )
- )
- (local.set $r
- (i32.and
- (local.get $i)
- (local.get $j)
- )
- )
- (return (local.get $r))
- )
- ;; Figure 1b, with a potential path condition
- (func $figure-1b (param $a i64) (param $x i64) (param $y i64) (result i32)
- (local $i i32)
- (local $j i32)
- (local $r i32)
- (if
- (i64.lt_s
- (local.get $x)
- (local.get $y)
- )
- (block
- (local.set $i
- (i64.eq
- (local.get $a)
- (local.get $x)
- )
- )
- (local.set $j
- (i64.ne
- (local.get $a)
- (local.get $y)
- )
- )
- (local.set $r
- (i32.and
- (local.get $i)
- (local.get $j)
- )
- )
- (return (local.get $r))
- )
- (unreachable)
- )
- )
- ;; Figure 3, simplified to an if
- (func $figure-3-if (param $x i32) (result i32)
- (if
- (i32.and
- (local.get $x)
- (i32.const 1)
- )
- (local.set $x
- (i32.add
- (local.get $x)
- (i32.const 1)
- )
- )
- (local.set $x
- (i32.add
- (local.get $x)
- (i32.const 2)
- )
- )
- )
- (return
- (i32.and
- (local.get $x)
- (i32.const 1)
- )
- )
- )
- ;; flipping of greater than/or equals ops, which are not in Souper IR
- (func $flips
- (local $x i32)
- (local $y i32)
- (local.set $x (i32.ge_s (local.get $x) (local.get $y)))
- (local.set $x (i32.ge_u (local.get $x) (local.get $y)))
- (local.set $x (i32.gt_s (local.get $x) (local.get $y)))
- (local.set $x (i32.gt_u (local.get $x) (local.get $y)))
- )
- (func $various-conditions-1 (param $x i32)
- (if
- (local.get $x)
- (local.set $x
- (i32.add
- (local.get $x)
- (i32.const 1)
- )
- )
- )
- )
- (func $various-conditions-2 (param $x i32)
- (if
- (i32.lt_s
- (local.get $x)
- (i32.const 0)
- )
- (local.set $x
- (i32.sub
- (local.get $x)
- (i32.const 2)
- )
- )
- )
- )
- (func $various-conditions-3 (param $x i32)
- (if
- (i32.reinterpret_f32 (f32.const 0))
- (local.set $x
- (i32.sub
- (local.get $x)
- (i32.const 4)
- )
- )
- )
- )
- (func $various-conditions-4 (param $x i32)
- (if
- (unreachable)
- (local.set $x
- (i32.add
- (local.get $x)
- (i32.const 3)
- )
- )
- )
- )
- (func $unaries (param $x i32) (param $y i32)
- (if
- (i32.eqz
- (local.get $x)
- )
- (local.set $x
- (i32.add
- (i32.ctz
- (local.get $y)
- )
- (i32.sub
- (i32.clz
- (local.get $x)
- )
- (i32.popcnt
- (local.get $y)
- )
- )
- )
- )
- )
- )
- (func $unary-condition (param $x i32)
- (if
- (i32.ctz
- (i32.gt_u
- (local.get $x)
- (i32.const 1)
- )
- )
- (local.set $x
- (i32.add
- (local.get $x)
- (i32.const 2)
- )
- )
- )
- )
- (func $unary-condition-2 (param $x i32)
- (if
- (i32.eqz
- (i32.gt_u
- (local.get $x)
- (i32.const 1)
- )
- )
- (local.set $x
- (i32.add
- (local.get $x)
- (i32.const 2)
- )
- )
- )
- )
- (func $if-else-cond (param $x i32) (result i32)
- (if
- (i32.lt_s
- (local.get $x)
- (i32.const 1)
- )
- (local.set $x
- (i32.add
- (local.get $x)
- (i32.const 1)
- )
- )
- (local.set $x
- (i32.add
- (local.get $x)
- (i32.const 2)
- )
- )
- )
- (return
- (i32.and
- (local.get $x)
- (i32.const 1)
- )
- )
- )
- (func $trivial-ret (result i32)
- (i32.add
- (i32.const 0)
- (i32.const 1)
- )
- )
- (func $trivial-const (result i32)
- (i32.const 0)
- )
- (func $trivial-const-block (result i32)
- (nop)
- (i32.const 0)
- )
- (func $bad-phi-value (result i32)
- (if (result i32)
- (if (result i32)
- (i32.const 1)
- (i32.load
- (i32.const 0)
- )
- (i32.const 0)
- )
- (i32.const 0)
- (i32.const 1)
- )
- )
- (func $bad-phi-value-2 (param $x i32) (result i32)
- (if
- (if (result i32)
- (i32.const 1)
- (i32.load
- (i32.const 0)
- )
- (i32.const 0)
- )
- (local.set $x (i32.const 1))
- (local.set $x (i32.const 2))
- )
- (local.get $x)
- )
- (func $select (param $x i32) (result i32)
- (return
- (select
- (i32.const 1)
- (i32.const 2)
- (i32.const 3)
- )
- )
- )
- (func $select-2 (param $x i32) (param $y i32) (result i32)
- (return
- (select
- (i32.add
- (local.get $x)
- (local.get $y)
- )
- (i32.add
- (local.get $x)
- (i32.const 1)
- )
- (i32.add
- (i32.const 2)
- (local.get $y)
- )
- )
- )
- )
- (func $block-phi-1 (param $x i32) (param $y i32) (result i32)
- (block $out
- (local.set $x
- (i32.add
- (local.get $x)
- (i32.const 1)
- )
- )
- (br_if $out (local.get $y))
- (local.set $x
- (i32.add
- (local.get $x)
- (i32.const 2)
- )
- )
- )
- (i32.add
- (local.get $x)
- (i32.const 3)
- )
- )
- (func $block-phi-2 (param $x i32) (param $y i32) (result i32)
- (block $out
- (local.set $x
- (i32.const 1)
- )
- (br_if $out (local.get $y))
- (local.set $x
- (i32.const 2)
- )
- )
- (i32.add
- (local.get $x)
- (i32.const 3)
- )
- )
- (func $zero_init-phi-bad_type (result f64)
- (local $x f64)
- (if
- (i32.const 0)
- (local.set $x
- (f64.const 1)
- )
- )
- (local.get $x)
- )
- (func $phi-bad-type (result f64)
- (block $label$1 (result f64)
- (if (result f64)
- (i32.const 0)
- (f64.const 0)
- (f64.const 1)
- )
- )
- )
- (func $phi-one-side-i1 (param $x i32) (param $y i32) (result i32)
- (local $i i32)
- (if
- (i32.le_s
- (local.get $x)
- (local.get $y)
- )
- (local.set $i
- (i32.eq
- (local.get $x)
- (local.get $y)
- )
- )
- (local.set $i
- (i32.add
- (local.get $x)
- (local.get $y)
- )
- )
- )
- (local.get $i)
- )
- (func $call (result i32)
- (return
- (i32.mul
- (i32.add
- (call $call)
- (call $call)
- )
- (i32.add
- (i32.const 10)
- (call $call)
- )
- )
- )
- )
- (func $in-unreachable-1 (param $x i32) (param $y i32) (result i32)
- (if
- (local.get $x)
- (block
- (local.set $x
- (i32.const 1)
- )
- (return (local.get $x))
- )
- (local.set $x
- (i32.const 2)
- )
- )
- ;; no phi here!
- (return
- (local.get $x)
- )
- )
- (func $in-unreachable-2 (param $x i32) (param $y i32) (result i32)
- (if
- (local.get $x)
- (block
- (local.set $x
- (i32.const 1)
- )
- (unreachable)
- )
- (local.set $x
- (i32.const 2)
- )
- )
- ;; no phi here!
- (return
- (local.get $x)
- )
- )
- (func $in-unreachable-3 (param $x i32) (param $y i32) (result i32)
- (block $out
- (if
- (local.get $x)
- (block
- (local.set $x
- (i32.const 1)
- )
- (br $out)
- )
- (local.set $x
- (i32.const 2)
- )
- )
- ;; no phi here!
- (return
- (local.get $x)
- )
- )
- (return
- (local.get $x)
- )
- )
- (func $in-unreachable-4 (param $x i32) (param $y i32) (result i32)
- (block $out
- (if
- (local.get $x)
- (block
- (local.set $x
- (i32.const 1)
- )
- (br_table $out $out $out (i32.const 1))
- )
- (local.set $x
- (i32.const 2)
- )
- )
- ;; no phi here!
- (return
- (local.get $x)
- )
- )
- (return
- (local.get $x)
- )
- )
- (func $in-unreachable-br_if (param $x i32) (param $y i32) (result i32)
- (block $out
- (if
- (local.get $x)
- (block
- (local.set $x
- (i32.const 1)
- )
- (br_if $out
- (local.get $x)
- )
- )
- (local.set $x
- (i32.const 2)
- )
- )
- ;; there *IS* a phi here since it was a br_if
- (return
- (local.get $x)
- )
- )
- (return
- (local.get $x)
- )
- )
- (func $in-unreachable-big (param $0 i32) (param $1 i32) (param $2 i32) (param $3 i32)
- (block $label$1
- (block $label$2
- (block $label$3
- (if
- (local.get $2)
- (if
- (local.get $0)
- (block
- (local.set $1
- (i32.const -8531)
- )
- (br $label$3)
- )
- (block
- (local.set $1
- (i32.const -8531)
- )
- (br $label$1)
- )
- )
- )
- (br $label$2)
- )
- (drop
- (i32.load
- (i32.const 0)
- )
- )
- (br $label$1)
- )
- (i32.store16
- (i32.const 1)
- (local.get $1)
- )
- (unreachable)
- )
- (i32.store16
- (i32.const 0)
- (i32.const -8531)
- )
- )
- (func $in-unreachable-operations (param $x i32) (param $y i32) (result i32)
- (block
- (unreachable)
- (if
- (local.get $x)
- (local.set $x
- (i32.const 1)
- )
- (local.set $x
- (i32.const 2)
- )
- )
- (return
- (local.get $x)
- )
- )
- )
- (func $merge-with-one-less (param $var$0 i32) (result i32)
- (block $label$1
- (block $label$2
- (block $label$3
- (block $label$4
- (block $label$5
- (br_table $label$5 $label$4 $label$3 $label$2
- (i32.load
- (i32.const 1)
- )
- )
- )
- (unreachable)
- )
- (br $label$1)
- )
- (f64.store
- (i32.load
- (local.tee $var$0
- (i32.const 8)
- )
- )
- (f64.const 0)
- )
- (br $label$1)
- )
- (unreachable)
- )
- (i32.store
- (local.get $var$0)
- (i32.const 16)
- )
- (i32.const 1)
- )
- (func $deep (param $x i32) (result i32)
- (local.set $x (i32.xor (local.get $x) (i32.const 1234)))
- (local.set $x (i32.mul (local.get $x) (i32.const 1234)))
- (local.set $x (i32.xor (local.get $x) (i32.const 1234)))
- (local.set $x (i32.mul (local.get $x) (i32.const 1234)))
- (local.set $x (i32.xor (local.get $x) (i32.const 1234)))
- (local.set $x (i32.mul (local.get $x) (i32.const 1234)))
- (local.set $x (i32.xor (local.get $x) (i32.const 1234)))
- (local.set $x (i32.mul (local.get $x) (i32.const 1234)))
- (local.set $x (i32.xor (local.get $x) (i32.const 1234)))
- (local.set $x (i32.mul (local.get $x) (i32.const 1234)))
- (local.set $x (i32.xor (local.get $x) (i32.const 1234)))
- (local.set $x (i32.mul (local.get $x) (i32.const 1234)))
- (local.set $x (i32.xor (local.get $x) (i32.const 1234)))
- (local.set $x (i32.mul (local.get $x) (i32.const 1234)))
- (local.set $x (i32.xor (local.get $x) (i32.const 1234)))
- (local.set $x (i32.mul (local.get $x) (i32.const 1234)))
- (local.set $x (i32.xor (local.get $x) (i32.const 1234)))
- (local.set $x (i32.mul (local.get $x) (i32.const 1234)))
- (local.set $x (i32.xor (local.get $x) (i32.const 1234)))
- (local.set $x (i32.mul (local.get $x) (i32.const 1234)))
- (local.set $x (i32.xor (local.get $x) (i32.const 1234)))
- (local.set $x (i32.mul (local.get $x) (i32.const 1234)))
- (local.set $x (i32.xor (local.get $x) (i32.const 1234)))
- (local.set $x (i32.mul (local.get $x) (i32.const 1234)))
- (local.set $x (i32.xor (local.get $x) (i32.const 1234)))
- (local.set $x (i32.mul (local.get $x) (i32.const 1234)))
- (local.get $x)
- )
- (func $two-pcs (param $x i64) (param $y i64) (param $t i64) (result i64)
- (if
- (i64.lt_s
- (local.get $x)
- (local.get $y)
- )
- (if
- (i64.eqz
- (local.get $x)
- )
- (local.set $t
- (i64.add
- (local.get $x)
- (local.get $y)
- )
- )
- (local.set $t
- (i64.sub
- (local.get $x)
- (local.get $y)
- )
- )
- )
- (if
- (i64.eqz
- (local.get $y)
- )
- (local.set $t
- (i64.mul
- (local.get $x)
- (local.get $y)
- )
- )
- (local.set $t
- (i64.div_s
- (local.get $x)
- (local.get $y)
- )
- )
- )
- )
- (return (local.get $t))
- )
- (func $loop-1 (param $x i32) (param $y i32) (result i32)
- (local.set $x (i32.const 1))
- (local.set $y (i32.const 2))
- (loop $loopy
- )
- ;; neither needed a phi
- (return (i32.add (local.get $x) (local.get $y)))
- )
- (func $loop-2 (param $x i32) (param $y i32) (result i32)
- (local.set $x (i32.const 1))
- (local.set $y (i32.const 2))
- (loop $loopy
- (local.set $x (i32.add (local.get $x) (i32.const 3)))
- (local.set $y (i32.add (local.get $y) (i32.const 4)))
- )
- ;; neither needed a phi
- (return (i32.add (local.get $x) (local.get $y)))
- )
- (func $loop-3 (param $x i32) (param $y i32) (result i32)
- (local.set $x (i32.const 1))
- (local.set $y (i32.const 2))
- (loop $loopy
- (local.set $x (i32.add (local.get $x) (i32.const 3)))
- (local.set $y (i32.add (local.get $y) (i32.const 4)))
- (br_if $loopy (local.get $y))
- )
- ;; both needed
- (return (i32.add (local.get $x) (local.get $y)))
- )
- (func $loop-4 (param $x i32) (param $y i32) (result i32)
- (local.set $x (i32.const 1))
- (local.set $y (i32.const 2))
- (loop $loopy
- (local.set $x (i32.add (local.get $x) (i32.const 3)))
- (br_if $loopy (local.get $y))
- )
- ;; only x needed a phi
- (return (i32.add (local.get $x) (local.get $y)))
- )
- (func $loop-5 (param $x i32) (param $y i32) (result i32)
- (local.set $x (i32.const 1))
- (local.set $y (i32.const 2))
- (loop $loopy
- (local.set $x (i32.add (local.get $x) (i32.const 3)))
- (local.set $y (i32.const 2)) ;; same value
- (br_if $loopy (local.get $y))
- )
- ;; only x needed a phi
- (return (i32.add (local.get $x) (local.get $y)))
- )
- (func $loop-6 (param $x i32) (param $y i32) (result i32)
- (local.set $x (i32.const 1))
- (local.set $y (i32.const 2))
- (loop $loopy
- (local.set $x (i32.add (local.get $x) (i32.const 3)))
- (local.set $y (local.get $y)) ;; same value
- (br_if $loopy (local.get $y))
- )
- ;; only x needed a phi
- (return (i32.add (local.get $x) (local.get $y)))
- )
- (func $loop-7 (param $x i32) (param $y i32) (result i32)
- (local.set $x (i32.const 1))
- (local.set $y (i32.const 2))
- (loop $loopy
- (local.set $x (i32.add (local.get $x) (i32.const 3)))
- (local.set $y (i32.const 5)) ;; different!
- (br_if $loopy (local.get $y))
- )
- ;; y changed but we don't need a phi for it
- (return (i32.add (local.get $x) (local.get $y)))
- )
- (func $loop-8 (param $x i32) (param $y i32) (result i32)
- (local $z i32)
- (local $w i32)
- (local.set $x (i32.const 1))
- (local.set $y (i32.const 2))
- (loop $loopy
- (local.set $z (local.get $x))
- (local.set $w (local.get $y))
- (local.set $x (i32.const 1)) ;; same!
- (local.set $y (i32.const 4)) ;; different!
- (br_if $loopy (local.get $y))
- )
- ;; x is always 3, and y needs a phi.
- ;; each is also copied to another local, which we need
- ;; to handle properly
- (return
- (i32.mul
- (i32.add
- (local.get $x)
- (local.get $y)
- )
- (i32.sub
- (local.get $z)
- (local.get $w)
- )
- )
- )
- )
- (func $loop-9 (param $x i32) (param $y i32) (result i32)
- (local $t i32)
- (local.set $x (i32.const 1))
- (local.set $y (i32.const 2))
- (loop $loopy
- (local.set $t (local.get $x))
- (local.set $x (local.get $y))
- (local.set $y (local.get $t))
- (br_if $loopy (local.get $t))
- )
- ;; x and y swapped, so both need phis
- (return (i32.add (local.get $x) (local.get $y)))
- )
- (func $loop-10 (param $x i32) (param $y i32) (result i32)
- (local $t i32)
- (local.set $x (i32.const 1))
- (local.set $y (i32.const 1))
- (loop $loopy ;; we swap the values. but we need a deeper analysis to figure that out...
- (local.set $t (local.get $x))
- (local.set $x (local.get $y))
- (local.set $y (local.get $t))
- (br_if $loopy (local.get $t))
- )
- ;; x and y swapped, but the same constant was swapped
- (return (i32.add (local.get $x) (local.get $y)))
- )
- (func $loop-multicond-1 (param $x i32) (param $y i32) (param $z i32) (result i32)
- (local $t i32)
- (local.set $x (i32.const 1))
- (local.set $y (i32.const 2))
- (local.set $z (i32.const 3))
- (loop $loopy
- (local.set $x (i32.const 4))
- (br_if $loopy (local.get $t))
- (local.set $y (i32.const 5))
- (br_if $loopy (local.get $t))
- (local.set $z (i32.const 6))
- )
- (return (select (local.get $x) (local.get $y) (local.get $z)))
- )
- (func $loop-multicond-2 (param $x i32) (param $y i32) (param $z i32) (result i32)
- (local $t i32)
- (local.set $x (i32.const 1))
- (local.set $y (i32.const 2))
- (local.set $z (i32.const 3))
- (loop $loopy
- (local.set $x (i32.add (local.get $x) (i32.const 4)))
- (br_if $loopy (local.get $t))
- (local.set $y (i32.add (local.get $y) (i32.const 5)))
- (br_if $loopy (local.get $t))
- (local.set $z (i32.add (local.get $z) (i32.const 6)))
- )
- (return (select (local.get $x) (local.get $y) (local.get $z)))
- )
- (func $loop-block-1 (param $x i32) (param $y i32) (param $z i32) (result i32)
- (local $t i32)
- (local.set $x (i32.const 1))
- (local.set $y (i32.const 2))
- (local.set $z (i32.const 3))
- (loop $loopy
- (block $out
- (local.set $x (i32.add (local.get $x) (i32.const 4)))
- (br_if $out (local.get $t))
- (local.set $y (i32.add (local.get $y) (i32.const 5)))
- (br_if $out (local.get $t))
- (local.set $z (i32.add (local.get $z) (i32.const 6)))
- (br $loopy)
- )
- )
- (return (select (local.get $x) (local.get $y) (local.get $z)))
- )
- (func $loop-block-2 (param $x i32) (param $y i32) (param $z i32) (result i32)
- (local $t i32)
- (local.set $x (i32.const 1))
- (local.set $y (i32.const 2))
- (local.set $z (i32.const 3))
- (block $out
- (loop $loopy
- (local.set $x (i32.add (local.get $x) (i32.const 4)))
- (br_if $out (local.get $t))
- (local.set $y (i32.add (local.get $y) (i32.const 5)))
- (br_if $out (local.get $t))
- (local.set $z (i32.add (local.get $z) (i32.const 6)))
- (br $loopy)
- )
- )
- (return (select (local.get $x) (local.get $y) (local.get $z)))
- )
- (func $bad-phi-type (param $var$0 i64) (param $var$1 i64) (param $var$2 i32) (param $var$3 f32)
- (if
- (local.get $var$2)
- (drop
- (loop $label$2 (result f64)
- (if
- (block $label$3 (result i32)
- (if
- (i32.const 0)
- (unreachable)
- )
- (nop)
- (i32.const 0)
- )
- (unreachable)
- )
- (br_if $label$2
- (local.get $var$2)
- )
- (f64.const 0)
- )
- )
- )
- )
- (func $loop-unreachable
- (local $var$0 i32)
- (local $var$1 f64)
- (loop $label$1
- (local.set $var$1
- (block $label$2 (result f64)
- (block $label$3
- (local.set $var$0
- (block $label$4 (result i32)
- (if
- (i32.const 1337)
- (unreachable)
- )
- (local.get $var$0)
- )
- )
- (loop $label$6
- (br_if $label$6
- (block $label$7 (result i32)
- (drop
- (br_if $label$7
- (local.get $var$0)
- (i32.const 65535)
- )
- )
- (drop
- (br_if $label$7
- (local.get $var$0)
- (i32.const 0)
- )
- )
- (unreachable)
- )
- )
- )
- )
- (local.get $var$1)
- )
- )
- (br $label$1)
- )
- )
- (func $phi-value-turns-bad (result f64)
- (local $var$0 i32)
- (local $var$1 i32)
- (local $var$2 f32)
- (local.set $var$2
- (if (result f32)
- (local.tee $var$0
- (i32.atomic.rmw16.sub_u offset=22
- (i32.const 0)
- (i32.const 0)
- )
- )
- (unreachable)
- (block (result f32)
- (if
- (loop $label$3 (result i32)
- (block $label$4 (result i32)
- (i32.clz
- (br_if $label$4
- (local.get $var$0)
- (i32.const 1)
- )
- )
- )
- )
- (nop)
- )
- (f32.const 1)
- )
- )
- )
- (unreachable)
- )
- (func $multi-use (param $x i32) (result i32)
- (local $temp i32)
- (local.set $temp (i32.add (local.get $x) (i32.const 1)))
- (i32.add (local.get $temp) (local.get $temp))
- )
- (func $multi-use-2 (param $x i32) (result i32)
- (local $temp i32)
- (local.set $temp (i32.add (local.get $x) (i32.const 1)))
- (local.set $x (i32.mul (local.get $temp) (i32.const 2)))
- (i32.sub (local.get $x) (local.get $temp))
- )
- (func $many-single-uses-with-param (param $x i32) (result i32)
- (return
- (i32.eqz
- (i32.add
- (i32.mul
- (i32.const 10)
- (local.get $x)
- )
- (i32.sub
- (i32.ctz
- (local.get $x)
- )
- (i32.const 20)
- )
- )
- )
- )
- )
- (func "replaced-print-internal" (param $var$0 i32)
- (local $var$1 i32)
- (local $var$2 i32)
- (local $var$3 i32)
- (if
- (local.tee $var$0
- (i32.add
- (local.get $var$0)
- (i32.const -7)
- )
- )
- (block $label$2
- (block $label$3
- (local.set $var$1
- (local.get $var$0)
- )
- (br_if $label$3
- (local.tee $var$3
- (i32.const 12)
- )
- )
- (unreachable)
- )
- (br_if $label$2
- (i32.eqz
- (local.get $var$1)
- )
- )
- (if
- (i32.ne
- (i32.load
- (i32.const 0)
- )
- (local.get $var$0)
- )
- (unreachable)
- )
- (unreachable)
- )
- )
- )
- (func $multiple-uses-to-non-expression (param $x i32)
- (local $temp i32)
- (local.set $x
- (i32.add
- (local.get $x)
- (i32.const 10)
- )
- )
- (i32.store
- (i32.const 1)
- (local.get $x) ;; x+10 has two uses!
- )
- (i32.store
- (i32.const 2)
- (i32.add
- (local.get $x)
- (i32.const 20)
- )
- )
- )
- (func $nested-phi-forwarding (param $var$0 i32) (result i32)
- (local $var$1 i32)
- (local $var$2 i32)
- (block $label$1
- (block $label$2
- (loop $label$3
- (block $label$4
- (block $label$5
- (block $label$6
- (block $label$7
- (block $label$8
- (br_table $label$2 $label$2 $label$2 $label$2 $label$2 $label$2 $label$2 $label$2 $label$2 $label$2 $label$2 $label$2 $label$2 $label$2 $label$2 $label$2 $label$2 $label$2 $label$2 $label$2 $label$2 $label$2 $label$2 $label$2 $label$2 $label$2 $label$2 $label$2 $label$2 $label$2 $label$2 $label$8 $label$2 $label$2 $label$2 $label$6 $label$2 $label$2 $label$7 $label$2 $label$2 $label$2 $label$2 $label$2 $label$2 $label$2 $label$2 $label$2 $label$5 $label$4
- (local.get $var$0)
- )
- )
- (local.set $var$1
- (i32.const 1)
- )
- )
- (br $label$4)
- )
- (unreachable)
- )
- (br $label$1)
- )
- (br_if $label$3
- (local.tee $var$2
- (i32.const 1)
- )
- )
- )
- )
- (block $label$9
- (br_if $label$9
- (i32.or
- (i32.const 1)
- (local.get $var$1)
- )
- )
- )
- (unreachable)
- )
- (i32.store offset=176
- (i32.const 0)
- (local.get $var$2)
- )
- (i32.const 0)
- )
- (func $zext-numGets (param $var$0 i32) (param $var$1 i32)
- (if
- (i32.ctz
- (block $label$1 (result i32)
- (drop
- (br_if $label$1
- (i32.const 1)
- (i32.load
- (i32.const -8)
- )
- )
- )
- (i32.eqz
- (i32.load
- (i32.const -16)
- )
- )
- )
- )
- (unreachable)
- )
- )
- (func $zext-numGets-hasAnotherUse (param $var$0 i32) (param $var$1 i32)
- (local $temp i32)
- (if
- (i32.ctz
- (block $label$1 (result i32)
- (drop
- (br_if $label$1
- (i32.const 1)
- (i32.load
- (i32.const -8)
- )
- )
- )
- (local.set $temp
- (i32.eqz
- (i32.load
- (i32.const -16)
- )
- )
- )
- (drop
- (local.get $temp)
- )
- (local.get $temp)
- )
- )
- (unreachable)
- )
- )
- (func $flipped-needs-right-origin (param $var$0 i32) (result i32)
- (local $var$1 i32)
- (block $label$1
- (br_if $label$1
- (i32.load
- (i32.const 1)
- )
- )
- (local.set $var$1
- (i32.const 2)
- )
- )
- (if
- (i32.gt_s
- (i32.const 3)
- (i32.add
- (local.get $var$1)
- (i32.const 4)
- )
- )
- (unreachable)
- )
- (i32.const 5)
- )
- (func $non-expr-nodes-may-have-multiple-uses-too-its-the-ORIGIN (param $var$0 i32) (param $var$1 i32) (param $var$2 i32) (result i32)
- (i32.store
- (local.tee $var$1
- (i32.gt_u
- (local.get $var$1)
- (i32.const 1)
- )
- )
- (i32.const 2)
- )
- (i32.store offset=8
- (i32.const 3)
- (i32.sub
- (i32.const 4)
- (local.get $var$1)
- )
- )
- (unreachable)
- )
- (func $loop-of-set-connections (param $var$0 i32) (param $var$1 i32) (param $var$2 i32) (param $var$3 i32) (param $var$4 i32) (result i32)
- (loop $label$1
- (if
- (i32.const 0)
- (block
- (local.set $var$2
- (i32.add
- (i32.const 0)
- (i32.const 1)
- )
- )
- (br $label$1)
- )
- )
- (local.set $var$3
- (local.get $var$2)
- )
- (local.set $var$2
- (local.get $var$3)
- )
- (br $label$1)
- )
- )
- (func $conditions-in-conditions (param $var$0 i32) (param $var$1 i32) (param $var$2 i32) (result i32)
- (local $var$3 i32)
- (local $var$4 i32)
- (local $var$5 i32)
- (local $var$6 i32)
- (local $var$7 i32)
- (local $var$8 i32)
- (local.set $var$1
- (i32.const 1)
- )
- (if
- (i32.const 0)
- (loop $label$2
- (if
- (local.get $var$1)
- (nop)
- )
- (local.set $var$1
- (i32.sub
- (i32.const 0)
- (local.tee $var$3
- (i32.const 1)
- )
- )
- )
- (br_if $label$2
- (i32.const 0)
- )
- )
- )
- (if
- (local.get $var$1)
- (local.set $var$3
- (i32.const 1)
- )
- )
- (i32.store
- (i32.const 8)
- (i32.add
- (local.get $var$3)
- (i32.const 16)
- )
- )
- (i32.store
- (i32.const 8)
- (i32.const 64)
- )
- (unreachable)
- )
-)