1# RUN: llvm-mc -show-encoding -triple=wasm32-unknown-unknown -mattr=+reference-types < %s | FileCheck %s
2# RUN: llvm-mc -show-encoding -triple=wasm64-unknown-unknown -mattr=+reference-types < %s | FileCheck %s
3
4# CHECK-LABEL:ref_is_null:
5# CHECK: ref.is_null     # encoding: [0xd1]
6ref_is_null:
7  .functype ref_is_null () -> (i32, i32)
8  ref.null_extern
9  ref.is_null
10  ref.null_func
11  ref.is_null
12  end_function
13
14# CHECK-LABEL: ref_null_test:
15# CHECK: ref.null_func   # encoding: [0xd0,0x70]
16# CHECK: ref.null_extern # encoding: [0xd0,0x6f]
17ref_null_test:
18  .functype ref_null_test () -> ()
19  ref.null_func
20  drop
21  ref.null_extern
22  drop
23  end_function
24
25# CHECK-LABEL: ref_sig_test_funcref:
26# CHECK-NEXT: .functype ref_sig_test_funcref (funcref) -> (funcref)
27ref_sig_test_funcref:
28  .functype ref_sig_test_funcref (funcref) -> (funcref)
29  local.get 0
30  end_function
31
32# CHECK-LABEL: ref_sig_test_externref:
33# CHECK-NEXT: .functype ref_sig_test_externref (externref) -> (externref)
34ref_sig_test_externref:
35  .functype ref_sig_test_externref (externref) -> (externref)
36  local.get 0
37  end_function
38
39# CHECK-LABEL: ref_select_test:
40# CHECK: funcref.select   # encoding: [0x1b]
41# CHECK: externref.select # encoding: [0x1b]
42ref_select_test:
43  .functype ref_select_test () -> ()
44  ref.null_func
45  ref.null_func
46  i32.const 0
47  funcref.select
48  drop
49  ref.null_extern
50  ref.null_extern
51  i32.const 0
52  externref.select
53  drop
54  end_function
55
56# CHECK-LABEL: ref_block_test:
57# CHECK: block funcref
58# CHECK: block externref
59ref_block_test:
60  .functype ref_block_test () -> (externref, funcref)
61  block funcref
62  block externref
63  ref.null_extern
64  end_block
65  ref.null_func
66  end_block
67  end_function
68