xref: /llvm-project/llvm/test/CodeGen/WebAssembly/function-info.mir (revision aecbc924102ee57ea639cd76ed32b37eb2d257fc)
1# RUN: llc -mtriple=wasm32-unknown-unknown -exception-model=wasm -mattr=+exception-handling,+multivalue,+simd128 -run-pass wasm-cfg-sort -run-pass wasm-cfg-stackify %s -o - | FileCheck %s
2
3--- |
4  target triple = "wasm32-unknown-unknown"
5
6  declare i32 @__gxx_wasm_personality_v0(...)
7  declare void @foo()
8  define void @function_property_test() {
9    ret void
10  }
11  define void @wasm_eh_info_test() personality ptr @__gxx_wasm_personality_v0 {
12    ret void
13  }
14
15  ;; Param / results tests
16  define i32 @i32__i64(i64) {
17    ret i32 0
18  }
19  define void @void__i32_i64_f32_f64() {
20    ret void
21  }
22  define void @void__v16i8_v8i16_v4i32_v2i64(<16 x i8>, <8 x i16>, <4 x i32>, <2 x i64>) {
23    ret void
24  }
25  %pair = type { i32, i64 }
26  define %pair @i32_i64__i32_i64(%pair %p) {
27    ret %pair %p
28  }
29...
30
31# CHECK-LABEL: name: function_property_test
32# CHECK: machineFunctionInfo:
33# CHECK:   isCFGStackified:   true
34name: function_property_test
35liveins:
36  - { reg: '$arguments' }
37body: |
38  bb.0:
39    RETURN implicit-def dead $arguments
40...
41
42---
43# CHECK-LABEL: name: wasm_eh_info_test
44# CHECK: machineFunctionInfo:
45name: wasm_eh_info_test
46liveins:
47  - { reg: '$arguments' }
48# CHECK:  wasmEHFuncInfo:
49# bb.2 becomes bb.1 and bb.3 becomes bb.2 after CFGSort.
50# CHECK-NEXT:    1:               2
51machineFunctionInfo:
52  wasmEHFuncInfo:
53    2:               3
54body:             |
55  bb.0:
56    successors: %bb.1, %bb.2
57    CALL @foo, implicit-def dead $arguments, implicit $sp32, implicit $sp64, implicit-def dead $arguments, implicit $sp32, implicit $sp64
58
59  bb.1:
60    RETURN implicit-def dead $arguments
61
62  bb.2 (landing-pad):
63    successors: %bb.1, %bb.3
64    %0:i32 = CATCH_LEGACY &__cpp_exception, implicit-def dead $arguments
65    CALL @foo, implicit-def dead $arguments, implicit $sp32, implicit $sp64, implicit-def dead $arguments, implicit $sp32, implicit $sp64
66    BR %bb.1, implicit-def $arguments
67
68  bb.3 (landing-pad):
69    CATCH_ALL_LEGACY implicit-def $arguments
70    RETHROW 0, implicit-def $arguments
71...
72
73# Param / results tests
74---
75# CHECK-LABEL: name: i32__i64
76# CHECK:    machineFunctionInfo:
77# CHECK:      params:          [ i64 ]
78# CHECK-NEXT: results:         [ i32 ]
79name: i32__i64
80liveins:
81  - { reg: '$arguments' }
82machineFunctionInfo:
83  params:          [ i64 ]
84  results:         [ i32 ]
85body: |
86  bb.0:
87    %0:i32 = CONST_I32 3, implicit-def dead $arguments
88    RETURN %0:i32, implicit-def dead $arguments
89...
90---
91# CHECK-LABEL: name: void__i32_i64_f32_f64
92# CHECK:    machineFunctionInfo:
93# CHECK:      params:          [ i32, i64, f32, f64 ]
94# CHECK-NEXT: results:         [  ]
95name: void__i32_i64_f32_f64
96liveins:
97  - { reg: '$arguments' }
98machineFunctionInfo:
99  params:          [ i32, i64, f32, f64 ]
100  results:         [  ]
101body: |
102  bb.0:
103    RETURN implicit-def dead $arguments
104...
105---
106# CHECK-LABEL: name: void__v16i8_v8i16_v4i32_v2i64
107# CHECK:    machineFunctionInfo:
108# CHECK:      params:          [ v16i8, v8i16, v4i32, v2i64 ]
109# CHECK-NEXT: results:         [  ]
110name: void__v16i8_v8i16_v4i32_v2i64
111liveins:
112  - { reg: '$arguments' }
113machineFunctionInfo:
114  params:          [ v16i8, v8i16, v4i32, v2i64 ]
115  results:         [  ]
116body: |
117  bb.0:
118    RETURN implicit-def dead $arguments
119...
120---
121# CHECK-LABEL: name: i32_i64__i32_i64
122# CHECK:    machineFunctionInfo:
123# CHECK:      params:          [ i32, i64 ]
124# CHECK-NEXT: results:         [ i32, i64 ]
125name: i32_i64__i32_i64
126liveins:
127  - { reg: '$arguments' }
128machineFunctionInfo:
129  params:          [ i32, i64 ]
130  results:         [ i32, i64 ]
131body: |
132  bb.0:
133    %0:i32 = ARGUMENT_i32 0, implicit $arguments
134    %1:i64 = ARGUMENT_i64 1, implicit $arguments
135    RETURN %0, %1, implicit-def dead $arguments
136...
137