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_null_test:
5# CHECK: ref.null func   # encoding: [0xd0,0x70]
6# CHECK: ref.null extern # encoding: [0xd0,0x6f]
7ref_null_test:
8  .functype ref_null_test () -> ()
9  ref.null func
10  drop
11  ref.null extern
12  drop
13  end_function
14
15# CHECK-LABEL: ref_sig_test_funcref:
16# CHECK-NEXT: .functype ref_sig_test_funcref (funcref) -> (funcref)
17ref_sig_test_funcref:
18  .functype ref_sig_test_funcref (funcref) -> (funcref)
19  local.get 0
20  end_function
21
22# CHECK-LABEL: ref_sig_test_externref:
23# CHECK-NEXT: .functype ref_sig_test_externref (externref) -> (externref)
24ref_sig_test_externref:
25  .functype ref_sig_test_externref (externref) -> (externref)
26  local.get 0
27  end_function
28
29# CHECK-LABEL: ref_select_test:
30# CHECK: funcref.select   # encoding: [0x1b]
31# CHECK: externref.select # encoding: [0x1b]
32ref_select_test:
33  .functype ref_select_test () -> ()
34  ref.null func
35  ref.null func
36  i32.const 0
37  funcref.select
38  drop
39  ref.null extern
40  ref.null extern
41  i32.const 0
42  externref.select
43  drop
44  end_function
45
46# CHECK-LABEL: ref_block_test:
47# CHECK: block funcref
48# CHECK: block externref
49ref_block_test:
50  .functype ref_block_test () -> (externref, funcref)
51  block funcref
52  block externref
53  ref.null extern
54  end_block
55  ref.null func
56  end_block
57  end_function
58