137 lines · plain
1# RUN: llc -mtriple=wasm32-unknown-unknown -exception-model=wasm -wasm-enable-sjlj -mattr=+exception-handling,+multivalue,+simd128 -run-pass wasm-cfg-sort -run-pass wasm-cfg-stackify %s -o - | FileCheck %s2 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 void10 }11 define void @wasm_eh_info_test() personality ptr @__gxx_wasm_personality_v0 {12 ret void13 }14 15 ;; Param / results tests16 define i32 @i32__i64(i64) {17 ret i32 018 }19 define void @void__i32_i64_f32_f64() {20 ret void21 }22 define void @void__v16i8_v8i16_v4i32_v2i64(<16 x i8>, <8 x i16>, <4 x i32>, <2 x i64>) {23 ret void24 }25 %pair = type { i32, i64 }26 define %pair @i32_i64__i32_i64(%pair %p) {27 ret %pair %p28 }29...30 31# CHECK-LABEL: name: function_property_test32# CHECK: machineFunctionInfo:33# CHECK: isCFGStackified: true34name: function_property_test35liveins:36 - { reg: '$arguments' }37body: |38 bb.0:39 RETURN implicit-def dead $arguments40...41 42---43# CHECK-LABEL: name: wasm_eh_info_test44# CHECK: machineFunctionInfo:45name: wasm_eh_info_test46liveins:47 - { reg: '$arguments' }48# CHECK: wasmEHFuncInfo:49# bb.2 becomes bb.1 and bb.3 becomes bb.2 after CFGSort.50# CHECK-NEXT: 1: 251machineFunctionInfo:52 wasmEHFuncInfo:53 2: 354body: |55 bb.0:56 successors: %bb.1, %bb.257 CALL @foo, implicit-def dead $arguments, implicit $sp32, implicit $sp64, implicit-def dead $arguments, implicit $sp32, implicit $sp6458 59 bb.1:60 RETURN implicit-def dead $arguments61 62 bb.2 (landing-pad):63 successors: %bb.1, %bb.364 %0:i32 = CATCH_LEGACY &__cpp_exception, implicit-def dead $arguments65 CALL @foo, implicit-def dead $arguments, implicit $sp32, implicit $sp64, implicit-def dead $arguments, implicit $sp32, implicit $sp6466 BR %bb.1, implicit-def $arguments67 68 bb.3 (landing-pad):69 CATCH_ALL_LEGACY implicit-def $arguments70 RETHROW 0, implicit-def $arguments71...72 73# Param / results tests74---75# CHECK-LABEL: name: i32__i6476# CHECK: machineFunctionInfo:77# CHECK: params: [ i64 ]78# CHECK-NEXT: results: [ i32 ]79name: i32__i6480liveins:81 - { reg: '$arguments' }82machineFunctionInfo:83 params: [ i64 ]84 results: [ i32 ]85body: |86 bb.0:87 %0:i32 = CONST_I32 3, implicit-def dead $arguments88 RETURN %0:i32, implicit-def dead $arguments89...90---91# CHECK-LABEL: name: void__i32_i64_f32_f6492# CHECK: machineFunctionInfo:93# CHECK: params: [ i32, i64, f32, f64 ]94# CHECK-NEXT: results: [ ]95name: void__i32_i64_f32_f6496liveins:97 - { reg: '$arguments' }98machineFunctionInfo:99 params: [ i32, i64, f32, f64 ]100 results: [ ]101body: |102 bb.0:103 RETURN implicit-def dead $arguments104...105---106# CHECK-LABEL: name: void__v16i8_v8i16_v4i32_v2i64107# CHECK: machineFunctionInfo:108# CHECK: params: [ v16i8, v8i16, v4i32, v2i64 ]109# CHECK-NEXT: results: [ ]110name: void__v16i8_v8i16_v4i32_v2i64111liveins:112 - { reg: '$arguments' }113machineFunctionInfo:114 params: [ v16i8, v8i16, v4i32, v2i64 ]115 results: [ ]116body: |117 bb.0:118 RETURN implicit-def dead $arguments119...120---121# CHECK-LABEL: name: i32_i64__i32_i64122# CHECK: machineFunctionInfo:123# CHECK: params: [ i32, i64 ]124# CHECK-NEXT: results: [ i32, i64 ]125name: i32_i64__i32_i64126liveins:127 - { reg: '$arguments' }128machineFunctionInfo:129 params: [ i32, i64 ]130 results: [ i32, i64 ]131body: |132 bb.0:133 %0:i32 = ARGUMENT_i32 0, implicit $arguments134 %1:i64 = ARGUMENT_i64 1, implicit $arguments135 RETURN %0, %1, implicit-def dead $arguments136...137