// RUN: %target-swift-frontend -assume-parsing-unqualified-ownership-sil %s -emit-ir | %FileCheck -check-prefix=CHECK -check-prefix=CHECK-%target-ptrsize %s
import Swift
import Builtin

struct Huge {
  var x, y, z, w, v: Builtin.Word
}

@_alignment(32)
struct HugeAlignment {
  var x, y, z, w, v: Builtin.Word
}

// TODO: could be the context param
// CHECK-LABEL: define{{( protected)?}} swiftcc void @huge_method(%T17indirect_argument4HugeV* noalias nocapture dereferenceable({{.*}}))
// CHECK:         [[TMP:%.*]] = alloca
// CHECK:         call swiftcc void @huge_method(%T17indirect_argument4HugeV* noalias nocapture dereferenceable({{.*}}) [[TMP]])
sil @huge_method : $@convention(method) Huge -> () {
entry(%x : $Huge):
  %f = function_ref @huge_method : $@convention(method) Huge -> ()
  %z = apply %f(%x) : $@convention(method) Huge -> ()
  return %z : $()
}

// CHECK-LABEL: define{{( protected)?}} swiftcc void @huge_param(%T17indirect_argument4HugeV* noalias nocapture dereferenceable({{.*}}))
// CHECK:         [[TMP:%.*]] = alloca
// CHECK:         call swiftcc void @huge_param(%T17indirect_argument4HugeV* noalias nocapture dereferenceable({{.*}}) [[TMP]])
sil @huge_param : $@convention(thin) Huge -> () {
entry(%x : $Huge):
  %f = function_ref @huge_param : $@convention(thin) Huge -> ()
  %z = apply %f(%x) : $@convention(thin) Huge -> ()
  return %z : $()
}

// CHECK-LABEL: define{{( protected)?}} swiftcc void @huge_alignment_param(%T17indirect_argument13HugeAlignmentV* noalias nocapture dereferenceable({{.*}}))
// CHECK:         [[TMP:%.*]] = alloca
// CHECK:         call swiftcc void @huge_alignment_param(%T17indirect_argument13HugeAlignmentV* noalias nocapture dereferenceable({{.*}}) [[TMP]])
sil @huge_alignment_param : $@convention(thin) HugeAlignment -> () {
entry(%x : $HugeAlignment):
  %f = function_ref @huge_alignment_param : $@convention(thin) HugeAlignment -> ()
  %z = apply %f(%x) : $@convention(thin) HugeAlignment -> ()
  return %z : $()
}

// CHECK-LABEL: define{{( protected)?}} swiftcc void @huge_param_and_return(%T17indirect_argument4HugeV* noalias nocapture sret, %T17indirect_argument4HugeV* noalias nocapture dereferenceable({{.*}}))
// CHECK:         [[TMP_ARG:%.*]] = alloca
// CHECK:         [[TMP_RET:%.*]] = alloca
// CHECK:         call swiftcc void @huge_param_and_return(%T17indirect_argument4HugeV* noalias nocapture sret [[TMP_RET]], %T17indirect_argument4HugeV* noalias nocapture dereferenceable({{.*}}) [[TMP_ARG]])
sil @huge_param_and_return : $@convention(thin) Huge -> Huge {
entry(%x : $Huge):
  %f = function_ref @huge_param_and_return : $@convention(thin) Huge -> Huge
  %z = apply %f(%x) : $@convention(thin) Huge -> Huge
  return %z : $Huge
}

// CHECK-LABEL: define{{( protected)?}} swiftcc void @huge_param_and_indirect_return(%T17indirect_argument4HugeV* noalias nocapture sret, %T17indirect_argument4HugeV* noalias nocapture dereferenceable({{.*}}))
// CHECK:         [[TMP_ARG:%.*]] = alloca
// CHECK:         call swiftcc void @huge_param_and_indirect_return(%T17indirect_argument4HugeV* noalias nocapture sret %0, %T17indirect_argument4HugeV* noalias nocapture dereferenceable({{.*}}) [[TMP_ARG]])
sil @huge_param_and_indirect_return : $@convention(thin) (Huge) -> @out Huge {
entry(%o : $*Huge, %x : $Huge):
  %f = function_ref @huge_param_and_indirect_return : $@convention(thin) (Huge) -> @out Huge
  %z = apply %f(%o, %x) : $@convention(thin) (Huge) -> @out Huge
  return %z : $()
}

// CHECK-LABEL: define{{( protected)?}} swiftcc void @huge_partial_application(%T17indirect_argument4HugeV* noalias nocapture dereferenceable({{.*}}), %T17indirect_argument4HugeV* noalias nocapture dereferenceable({{.*}}))
// CHECK:         [[TMP_ARG:%.*]] = alloca
// CHECK:         [[CLOSURE:%.*]] = call noalias %swift.refcounted* @swift_rt_swift_allocObject
// CHECK:         bitcast %swift.refcounted* [[CLOSURE]] to <{ %swift.refcounted, %T17indirect_argument4HugeV }>*
// CHECK:         call swiftcc void @_TPA_huge_partial_application(%T17indirect_argument4HugeV* noalias nocapture dereferenceable({{.*}}) [[TMP_ARG]], %swift.refcounted* swiftself [[CLOSURE]])
// CHECK:       define internal swiftcc void @_TPA_huge_partial_application(%T17indirect_argument4HugeV* noalias nocapture dereferenceable({{.*}}), %swift.refcounted* swiftself)
// CHECK:         [[TMP_ARG:%.*]] = alloca
// CHECK-NOT:     tail
// CHECK:         call swiftcc void @huge_partial_application(%T17indirect_argument4HugeV* noalias nocapture dereferenceable({{.*}}) %0, %T17indirect_argument4HugeV* noalias nocapture dereferenceable({{.*}}) [[TMP_ARG]])
sil @huge_partial_application : $@convention(thin) (Huge, Huge) -> () {
entry(%x : $Huge, %y : $Huge):
  %f = function_ref @huge_partial_application : $@convention(thin) (Huge, Huge) -> ()
  %a = partial_apply %f(%y) : $@convention(thin) (Huge, Huge) -> ()
  %z = apply %a(%x) : $@convention(thick) @callee_owned (Huge) -> ()
  return %z : $()
}

// CHECK-LABEL: define{{( protected)?}} swiftcc void @huge_partial_application_stret(%T17indirect_argument4HugeV* noalias nocapture sret, %T17indirect_argument4HugeV* noalias nocapture dereferenceable({{.*}}), %T17indirect_argument4HugeV* noalias nocapture dereferenceable({{.*}}))
// CHECK:         [[TMP_ARG:%.*]] = alloca
// CHECK:         [[TMP_RET:%.*]] = alloca
// CHECK:         [[CLOSURE:%.*]] = call noalias %swift.refcounted* @swift_rt_swift_allocObject
// CHECK:         bitcast %swift.refcounted* [[CLOSURE]] to <{ %swift.refcounted, %T17indirect_argument4HugeV }>*
// CHECK:         call swiftcc void @_TPA_huge_partial_application_stret(%T17indirect_argument4HugeV* noalias nocapture sret [[TMP_RET]], %T17indirect_argument4HugeV* noalias nocapture dereferenceable({{.*}}) [[TMP_ARG]], %swift.refcounted* swiftself [[CLOSURE]])
// CHECK:       define internal swiftcc void @_TPA_huge_partial_application_stret(%T17indirect_argument4HugeV* noalias nocapture sret, %T17indirect_argument4HugeV* noalias nocapture dereferenceable({{.*}}), %swift.refcounted* swiftself)
// CHECK:         [[TMP_ARG:%.*]] = alloca
// CHECK-NOT:     tail
// CHECK:         call swiftcc void @huge_partial_application_stret(%T17indirect_argument4HugeV* noalias nocapture sret %0, %T17indirect_argument4HugeV* noalias nocapture dereferenceable({{.*}}) %1, %T17indirect_argument4HugeV* noalias nocapture dereferenceable({{.*}}) [[TMP_ARG]])
sil @huge_partial_application_stret : $@convention(thin) (Huge, Huge) -> Huge {
entry(%x : $Huge, %y : $Huge):
  %f = function_ref @huge_partial_application_stret : $@convention(thin) (Huge, Huge) -> Huge
  %a = partial_apply %f(%y) : $@convention(thin) (Huge, Huge) -> Huge
  %z = apply %a(%x) : $@convention(thick) @callee_owned (Huge) -> Huge
  return %z : $Huge
}
