| # 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 %s | |
| --- | | |
| target triple = "wasm32-unknown-unknown" | |
| declare i32 @__gxx_wasm_personality_v0(ptr) | |
| declare void @foo() | |
| define void @function_property_test() { | |
| ret void | |
| } | |
| ;; Param / results tests | |
| define i32 @i32__i64(i64) { | |
| ret i32 0 | |
| } | |
| define void @void__i32_i64_f32_f64() { | |
| ret void | |
| } | |
| define void @void__v16i8_v8i16_v4i32_v2i64(<16 x i8>, <8 x i16>, <4 x i32>, <2 x i64>) { | |
| ret void | |
| } | |
| %pair = type { i32, i64 } | |
| define %pair @i32_i64__i32_i64(%pair %p) { | |
| ret %pair %p | |
| } | |
| ... | |
| # CHECK-LABEL: name: function_property_test | |
| # CHECK: machineFunctionInfo: | |
| # CHECK: isCFGStackified: true | |
| name: function_property_test | |
| liveins: | |
| - { reg: '$arguments' } | |
| body: | | |
| bb.0: | |
| RETURN implicit-def dead $arguments | |
| ... | |
| # Param / results tests | |
| --- | |
| # CHECK-LABEL: name: i32__i64 | |
| # CHECK: machineFunctionInfo: | |
| # CHECK: params: [ i64 ] | |
| # CHECK-NEXT: results: [ i32 ] | |
| name: i32__i64 | |
| liveins: | |
| - { reg: '$arguments' } | |
| machineFunctionInfo: | |
| params: [ i64 ] | |
| results: [ i32 ] | |
| body: | | |
| bb.0: | |
| %0:i32 = CONST_I32 3, implicit-def dead $arguments | |
| RETURN %0:i32, implicit-def dead $arguments | |
| ... | |
| --- | |
| # CHECK-LABEL: name: void__i32_i64_f32_f64 | |
| # CHECK: machineFunctionInfo: | |
| # CHECK: params: [ i32, i64, f32, f64 ] | |
| # CHECK-NEXT: results: [ ] | |
| name: void__i32_i64_f32_f64 | |
| liveins: | |
| - { reg: '$arguments' } | |
| machineFunctionInfo: | |
| params: [ i32, i64, f32, f64 ] | |
| results: [ ] | |
| body: | | |
| bb.0: | |
| RETURN implicit-def dead $arguments | |
| ... | |
| --- | |
| # CHECK-LABEL: name: void__v16i8_v8i16_v4i32_v2i64 | |
| # CHECK: machineFunctionInfo: | |
| # CHECK: params: [ v16i8, v8i16, v4i32, v2i64 ] | |
| # CHECK-NEXT: results: [ ] | |
| name: void__v16i8_v8i16_v4i32_v2i64 | |
| liveins: | |
| - { reg: '$arguments' } | |
| machineFunctionInfo: | |
| params: [ v16i8, v8i16, v4i32, v2i64 ] | |
| results: [ ] | |
| body: | | |
| bb.0: | |
| RETURN implicit-def dead $arguments | |
| ... | |
| --- | |
| # CHECK-LABEL: name: i32_i64__i32_i64 | |
| # CHECK: machineFunctionInfo: | |
| # CHECK: params: [ i32, i64 ] | |
| # CHECK-NEXT: results: [ i32, i64 ] | |
| name: i32_i64__i32_i64 | |
| liveins: | |
| - { reg: '$arguments' } | |
| machineFunctionInfo: | |
| params: [ i32, i64 ] | |
| results: [ i32, i64 ] | |
| body: | | |
| bb.0: | |
| %0:i32 = ARGUMENT_i32 0, implicit $arguments | |
| %1:i64 = ARGUMENT_i64 1, implicit $arguments | |
| RETURN %0, %1, implicit-def dead $arguments | |
| ... |