blob: 0731eb61a22da12772ded5cd6870e0bd9d947d81 [file] [edit]
;;; TOOL: run-interp
(module
;; basic br test
(func (export "br0") (result i32)
(local i32 i32)
block $exit
i32.const 1
if
br 1 ;; if branches introduce blocks
end
i32.const 1
set_local 0 ;; not executed
end
i32.const 1
set_local 1
get_local 0
i32.const 0
i32.eq
get_local 1
i32.const 1
i32.eq
i32.add
return)
;; test br-ing with a depth > 0
(func (export "br1") (result i32)
(local i32 i32 i32)
block $outer
block $inner
i32.const 1
if
br 2
end ;; if branches introduce blocks
i32.const 1
set_local 0 ;; not executed
end
i32.const 1
set_local 1 ;; not executed
end
i32.const 1
set_local 2
get_local 0
i32.const 0
i32.eq
get_local 1
i32.const 0
i32.eq
i32.add
get_local 2
i32.const 1
i32.eq
i32.add
return)
;; test br-ing to a label
(func (export "br2") (result i32)
block $exit
block
i32.const 1
if
br $exit
end
i32.const 1
return ;; not executed
end
end
i32.const 2
return)
;; test br-ing in a loop with an exit and continue continuation
(func (export "br3") (result i32)
(local i32 i32)
block $exit
loop $cont
get_local 0
i32.const 1
i32.add
set_local 0
get_local 0
i32.const 5
i32.ge_s
if
br $exit
end
get_local 0
i32.const 4
i32.eq
if
(br $cont)
end
get_local 0
set_local 1
br $cont
end
end
get_local 1
return)
)
(;; STDOUT ;;;
br0() => i32:2
br1() => i32:3
br2() => i32:2
br3() => i32:3
;;; STDOUT ;;)