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