aboutsummaryrefslogtreecommitdiff
path: root/tests/wasm_compile_br_if/instructions.wat
blob: cac1fa0e92b015d973c56ac69eed8cc2eae6fb9f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
;;; this test is loosely based on wasm_compile_br
(module
 (memory 0 1)
 ;; this function returns -1 if its argument is 10 or 11 and 0 otherwise
 (func $eq10or11 (param $x i32) (result i32)
       (if (result i32)
	   (i32.sub
	    (get_local $x)
	    (i32.const 10))
	 (then
	  (br_if 0 (i32.add (i32.const -3) (i32.const 3))
		 (i32.sub (get_local $x) (i32.const 11)))
	  (i32.const 1)
	  (i32.sub))
	 (else
	  (i32.const -1))))
 (func $main
       ;; write 0x00000000 at MEMORY_BOTTOM_ADDR
       (i32.store offset=0x0 align=4 (i32.const 0x0)
		  (call $eq10or11 (i32.const 12)))
       ;; write 0xFFFFFFFF at MEMORY_BOTTOM_ADDR + 0x4
       (i32.store offset=0x0 align=4 (i32.const 0x4)
		  (call $eq10or11 (i32.const 10)))
       ;; write 0xFFFFFFFF at MEMORY_BOTTOM_ADDR + 0x8
       (i32.store offset=0x0 align=4 (i32.const 0x8)
		  (call $eq10or11 (i32.const 11))))
 (export "main" (func $main)))