# 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

--- |
  target triple = "wasm32-unknown-unknown"

  declare i32 @__gxx_wasm_personality_v0(...)
  declare void @foo()
  define void @function_property_test() {
    ret void
  }
  define void @wasm_eh_info_test() personality ptr @__gxx_wasm_personality_v0 {
    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
...

---
# CHECK-LABEL: name: wasm_eh_info_test
# CHECK: machineFunctionInfo:
name: wasm_eh_info_test
liveins:
  - { reg: '$arguments' }
# CHECK:  wasmEHFuncInfo:
# bb.2 becomes bb.1 and bb.3 becomes bb.2 after CFGSort.
# CHECK-NEXT:    1:               2
machineFunctionInfo:
  wasmEHFuncInfo:
    2:               3
body:             |
  bb.0:
    successors: %bb.1, %bb.2
    CALL @foo, implicit-def dead $arguments, implicit $sp32, implicit $sp64, implicit-def dead $arguments, implicit $sp32, implicit $sp64

  bb.1:
    RETURN implicit-def dead $arguments

  bb.2 (landing-pad):
    successors: %bb.1, %bb.3
    %0:i32 = CATCH &__cpp_exception, implicit-def dead $arguments
    CALL @foo, implicit-def dead $arguments, implicit $sp32, implicit $sp64, implicit-def dead $arguments, implicit $sp32, implicit $sp64
    BR %bb.1, implicit-def $arguments

  bb.3 (landing-pad):
    CATCH_ALL implicit-def $arguments
    RETHROW 0, implicit-def $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
...
