...

Text file src/github.com/tetratelabs/wazero/internal/integration_test/spectest/v1/testdata/labels.wast

Documentation: github.com/tetratelabs/wazero/internal/integration_test/spectest/v1/testdata

     1(module
     2  (func (export "block") (result i32)
     3    (block $exit (result i32)
     4      (br $exit (i32.const 1))
     5      (i32.const 0)
     6    )
     7  )
     8
     9  (func (export "loop1") (result i32)
    10    (local $i i32)
    11    (local.set $i (i32.const 0))
    12    (block $exit (result i32)
    13      (loop $cont (result i32)
    14        (local.set $i (i32.add (local.get $i) (i32.const 1)))
    15        (if (i32.eq (local.get $i) (i32.const 5))
    16          (then (br $exit (local.get $i)))
    17        )
    18        (br $cont)
    19      )
    20    )
    21  )
    22
    23  (func (export "loop2") (result i32)
    24    (local $i i32)
    25    (local.set $i (i32.const 0))
    26    (block $exit (result i32)
    27      (loop $cont (result i32)
    28        (local.set $i (i32.add (local.get $i) (i32.const 1)))
    29        (if (i32.eq (local.get $i) (i32.const 5))
    30          (then (br $cont))
    31        )
    32        (if (i32.eq (local.get $i) (i32.const 8))
    33          (then (br $exit (local.get $i)))
    34        )
    35        (local.set $i (i32.add (local.get $i) (i32.const 1)))
    36        (br $cont)
    37      )
    38    )
    39  )
    40
    41  (func (export "loop3") (result i32)
    42    (local $i i32)
    43    (local.set $i (i32.const 0))
    44    (block $exit (result i32)
    45      (loop $cont (result i32)
    46        (local.set $i (i32.add (local.get $i) (i32.const 1)))
    47        (if (i32.eq (local.get $i) (i32.const 5))
    48          (then (br $exit (local.get $i)))
    49        )
    50        (local.get $i)
    51      )
    52    )
    53  )
    54
    55  (func (export "loop4") (param $max i32) (result i32)
    56    (local $i i32)
    57    (local.set $i (i32.const 1))
    58    (block $exit (result i32)
    59      (loop $cont (result i32)
    60        (local.set $i (i32.add (local.get $i) (local.get $i)))
    61        (if (i32.gt_u (local.get $i) (local.get $max))
    62          (then (br $exit (local.get $i)))
    63        )
    64        (br $cont)
    65      )
    66    )
    67  )
    68
    69  (func (export "loop5") (result i32)
    70    (i32.add
    71      (loop $l (result i32) (i32.const 1))
    72      (i32.const 1)
    73    )
    74  )
    75
    76  (func (export "loop6") (result i32)
    77    (loop (result i32)
    78      (br_if 0 (i32.const 0))
    79      (i32.const 3)
    80    )
    81  )
    82
    83  (func (export "if") (result i32)
    84    (local $i i32)
    85    (local.set $i (i32.const 0))
    86    (block
    87      (if $l
    88        (i32.const 1)
    89        (then (br $l) (local.set $i (i32.const 666)))
    90      )
    91      (local.set $i (i32.add (local.get $i) (i32.const 1)))
    92      (if $l
    93        (i32.const 1)
    94        (then (br $l) (local.set $i (i32.const 666)))
    95        (else (local.set $i (i32.const 888)))
    96      )
    97      (local.set $i (i32.add (local.get $i) (i32.const 1)))
    98      (if $l
    99        (i32.const 1)
   100        (then (br $l) (local.set $i (i32.const 666)))
   101        (else (local.set $i (i32.const 888)))
   102      )
   103      (local.set $i (i32.add (local.get $i) (i32.const 1)))
   104      (if $l
   105        (i32.const 0)
   106        (then (local.set $i (i32.const 888)))
   107        (else (br $l) (local.set $i (i32.const 666)))
   108      )
   109      (local.set $i (i32.add (local.get $i) (i32.const 1)))
   110      (if $l
   111        (i32.const 0)
   112        (then (local.set $i (i32.const 888)))
   113        (else (br $l) (local.set $i (i32.const 666)))
   114      )
   115      (local.set $i (i32.add (local.get $i) (i32.const 1)))
   116    )
   117    (local.get $i)
   118  )
   119
   120  (func (export "if2") (result i32)
   121    (local $i i32)
   122    (local.set $i (i32.const 0))
   123    (block
   124      (if
   125        (i32.const 1)
   126        (then (br 0) (local.set $i (i32.const 666)))
   127      )
   128      (local.set $i (i32.add (local.get $i) (i32.const 1)))
   129      (if
   130        (i32.const 1)
   131        (then (br 0) (local.set $i (i32.const 666)))
   132        (else (local.set $i (i32.const 888)))
   133      )
   134      (local.set $i (i32.add (local.get $i) (i32.const 1)))
   135      (if
   136        (i32.const 1)
   137        (then (br 0) (local.set $i (i32.const 666)))
   138        (else (local.set $i (i32.const 888)))
   139      )
   140      (local.set $i (i32.add (local.get $i) (i32.const 1)))
   141      (if
   142        (i32.const 0)
   143        (then (local.set $i (i32.const 888)))
   144        (else (br 0) (local.set $i (i32.const 666)))
   145      )
   146      (local.set $i (i32.add (local.get $i) (i32.const 1)))
   147      (if
   148        (i32.const 0)
   149        (then (local.set $i (i32.const 888)))
   150        (else (br 0) (local.set $i (i32.const 666)))
   151      )
   152      (local.set $i (i32.add (local.get $i) (i32.const 1)))
   153    )
   154    (local.get $i)
   155  )
   156
   157  (func (export "switch") (param i32) (result i32)
   158    (block $ret (result i32)
   159      (i32.mul (i32.const 10)
   160        (block $exit (result i32)
   161          (block $0
   162            (block $default
   163              (block $3
   164                (block $2
   165                  (block $1
   166                    (br_table $0 $1 $2 $3 $default (local.get 0))
   167                  ) ;; 1
   168                ) ;; 2
   169                (br $exit (i32.const 2))
   170              ) ;; 3
   171              (br $ret (i32.const 3))
   172            ) ;; default
   173          ) ;; 0
   174          (i32.const 5)
   175        )
   176      )
   177    )
   178  )
   179
   180  (func (export "return") (param i32) (result i32)
   181    (block $default
   182      (block $1
   183        (block $0
   184          (br_table $0 $1 (local.get 0))
   185          (br $default)
   186        ) ;; 0
   187        (return (i32.const 0))
   188      ) ;; 1
   189    ) ;; default
   190    (i32.const 2)
   191  )
   192
   193  (func (export "br_if0") (result i32)
   194    (local $i i32)
   195    (local.set $i (i32.const 0))
   196    (block $outer (result i32)
   197      (block $inner
   198        (br_if $inner (i32.const 0))
   199        (local.set $i (i32.or (local.get $i) (i32.const 0x1)))
   200        (br_if $inner (i32.const 1))
   201        (local.set $i (i32.or (local.get $i) (i32.const 0x2)))
   202      )
   203      (drop (br_if $outer
   204        (block (result i32)
   205          (local.set $i (i32.or (local.get $i) (i32.const 0x4)))
   206          (local.get $i)
   207        )
   208        (i32.const 0)
   209      ))
   210      (local.set $i (i32.or (local.get $i) (i32.const 0x8)))
   211      (drop (br_if $outer
   212        (block (result i32)
   213          (local.set $i (i32.or (local.get $i) (i32.const 0x10)))
   214          (local.get $i)
   215        )
   216        (i32.const 1)
   217      ))
   218      (local.set $i (i32.or (local.get $i) (i32.const 0x20))) (local.get $i)
   219    )
   220  )
   221
   222  (func (export "br_if1") (result i32)
   223    (block $l0 (result i32)
   224      (drop
   225        (br_if $l0
   226          (block $l1 (result i32) (br $l1 (i32.const 1)))
   227          (i32.const 1)
   228        )
   229      )
   230      (i32.const 0)
   231    )
   232  )
   233
   234  (func (export "br_if2") (result i32)
   235    (block $l0 (result i32)
   236      (if (i32.const 1)
   237        (then
   238          (drop
   239            (br_if $l0
   240              (block $l1 (result i32) (br $l1 (i32.const 1)))
   241              (i32.const 1)
   242            )
   243          )
   244        )
   245      )
   246      (i32.const 0)
   247    )
   248  )
   249
   250  (func (export "br_if3") (result i32)
   251    (local $i1 i32)
   252    (drop
   253      (i32.add
   254        (block $l0 (result i32)
   255          (drop (br_if $l0
   256            (block (result i32) (local.set $i1 (i32.const 1)) (local.get $i1))
   257            (block (result i32) (local.set $i1 (i32.const 2)) (local.get $i1))
   258          ))
   259          (i32.const 0)
   260        )
   261        (i32.const 0)
   262      )
   263    )
   264    (local.get $i1)
   265  )
   266
   267  (func (export "br") (result i32)
   268    (block $l0 (result i32)
   269      (if (i32.const 1)
   270        (then (br $l0 (block $l1 (result i32) (br $l1 (i32.const 1)))))
   271        (else (block (drop (block $l1 (result i32) (br $l1 (i32.const 1))))))
   272      )
   273      (i32.const 1)
   274    )
   275  )
   276
   277  (func (export "shadowing") (result i32)
   278    (block $l1 (result i32) (i32.xor (br $l1 (i32.const 1)) (i32.const 2)))
   279  )
   280
   281  (func (export "redefinition") (result i32)
   282    (block $l1 (result i32)
   283      (i32.add
   284        (block $l1 (result i32) (i32.const 2))
   285        (block $l1 (result i32) (br $l1 (i32.const 3)))
   286      )
   287    )
   288  )
   289)
   290
   291(assert_return (invoke "block") (i32.const 1))
   292(assert_return (invoke "loop1") (i32.const 5))
   293(assert_return (invoke "loop2") (i32.const 8))
   294(assert_return (invoke "loop3") (i32.const 1))
   295(assert_return (invoke "loop4" (i32.const 8)) (i32.const 16))
   296(assert_return (invoke "loop5") (i32.const 2))
   297(assert_return (invoke "loop6") (i32.const 3))
   298(assert_return (invoke "if") (i32.const 5))
   299(assert_return (invoke "if2") (i32.const 5))
   300(assert_return (invoke "switch" (i32.const 0)) (i32.const 50))
   301(assert_return (invoke "switch" (i32.const 1)) (i32.const 20))
   302(assert_return (invoke "switch" (i32.const 2)) (i32.const 20))
   303(assert_return (invoke "switch" (i32.const 3)) (i32.const 3))
   304(assert_return (invoke "switch" (i32.const 4)) (i32.const 50))
   305(assert_return (invoke "switch" (i32.const 5)) (i32.const 50))
   306(assert_return (invoke "return" (i32.const 0)) (i32.const 0))
   307(assert_return (invoke "return" (i32.const 1)) (i32.const 2))
   308(assert_return (invoke "return" (i32.const 2)) (i32.const 2))
   309(assert_return (invoke "br_if0") (i32.const 0x1d))
   310(assert_return (invoke "br_if1") (i32.const 1))
   311(assert_return (invoke "br_if2") (i32.const 1))
   312(assert_return (invoke "br_if3") (i32.const 2))
   313(assert_return (invoke "br") (i32.const 1))
   314(assert_return (invoke "shadowing") (i32.const 1))
   315(assert_return (invoke "redefinition") (i32.const 5))
   316
   317(assert_invalid
   318  (module (func (block $l (f32.neg (br_if $l (i32.const 1))) (nop))))
   319  "type mismatch"
   320)
   321(assert_invalid
   322  (module (func (block $l (br_if $l (f32.const 0) (i32.const 1)))))
   323  "type mismatch"
   324)
   325(assert_invalid
   326  (module (func (block $l (br_if $l (f32.const 0) (i32.const 1)))))
   327  "type mismatch"
   328)

View as plain text