// RUN: %empty-directory(%t)
// RUN: %build-irgen-test-overlays
// RUN: %target-swift-frontend -assume-parsing-unqualified-ownership-sil -sdk %S/Inputs -I %t -emit-ir %s | %FileCheck %s

// REQUIRES: CPU=x86_64
// REQUIRES: objc_interop

sil_stage canonical

import Builtin
import Swift
import gizmo

class X {
}
sil_vtable X {}

sil @_TFC8metatype1Xd : $@convention(method) (@owned X) -> @owned Builtin.NativeObject

sil @_TFC8metatype1XD : $@convention(method) (@owned X) -> ()

// CHECK-LABEL: define{{( protected)?}} swiftcc %objc_class* @_TF8metatype22thick_to_objc_metatypeFT2xmMCS_1X_T_(%swift.type*)
sil @_TF8metatype22thick_to_objc_metatypeFT2xmMCS_1X_T_ : $@convention(thin) (@thick X.Type) -> @objc_metatype X.Type {
bb0(%0 : $@thick X.Type):
  // CHECK: [[RESULT:%[0-9a-zA-Z_-]+]] = bitcast %swift.type* %0 to %objc_class*
  %1 = thick_to_objc_metatype %0 : $@thick X.Type to $@objc_metatype X.Type
  // CHECK-NEXT: ret %objc_class* [[RESULT]]
  return %1 : $@objc_metatype X.Type
}

// CHECK-LABEL: define{{( protected)?}} swiftcc %objc_class* @foreign_thick_to_objc(%swift.type*)
sil @foreign_thick_to_objc : $@convention(thin) (@thick Gizmo.Type) -> @objc_metatype Gizmo.Type {
bb0(%0 : $@thick Gizmo.Type):
  // CHECK: [[KIND_GEP:%[0-9A-Za-z_.]+]] = getelementptr inbounds %swift.type, %swift.type* %0, i32 0, i32 0
  // CHECK-NEXT: [[KIND:%[0-9A-Za-z_.]+]] = load i64, i64* [[KIND_GEP]], align 8
  // CHECK-NEXT: [[IS_WRAPPER:%[0-9A-Za-z_.]+]] = icmp eq i64 [[KIND]], 14
  // CHECK-NEXT: br i1
  %1 = thick_to_objc_metatype %0 : $@thick Gizmo.Type to $@objc_metatype Gizmo.Type
  // CHECK: ret %objc_class*
  return %1 : $@objc_metatype Gizmo.Type
}

// CHECK-LABEL: define{{( protected)?}} swiftcc %swift.type* @_TF8metatype22objc_to_thick_metatypeFT2xmMCS_1X_T_(%objc_class*)
sil @_TF8metatype22objc_to_thick_metatypeFT2xmMCS_1X_T_ : $@convention(thin) (@objc_metatype X.Type) -> @thick X.Type {
bb0(%0 : $@objc_metatype X.Type):
  // CHECK: [[RESULT:%[0-9a-zA-Z_-]+]] = call %swift.type* @swift_getObjCClassMetadata(%objc_class* %0)
  %1 = objc_to_thick_metatype %0 : $@objc_metatype X.Type to $@thick X.Type
  // CHECK-NEXT: ret %swift.type* [[RESULT]]
  return %1 : $@thick X.Type
}

// CHECK-LABEL: define{{( protected)?}} swiftcc %swift.type* @foreign_objc_to_thick(%objc_class*)
sil @foreign_objc_to_thick : $@convention(thin) (@objc_metatype Gizmo.Type) -> @thick Gizmo.Type {
bb0(%0 : $@objc_metatype Gizmo.Type):
  // CHECK: [[RESULT:%[0-9a-zA-Z_-]+]] = call %swift.type* @swift_getObjCClassMetadata(%objc_class* %0)
  %1 = objc_to_thick_metatype %0 : $@objc_metatype Gizmo.Type to $@thick Gizmo.Type
  // CHECK-NEXT: ret %swift.type* [[RESULT]]
  return %1 : $@thick Gizmo.Type
}

protocol CP: class {}

// CHECK-LABEL: define{{( protected)?}} swiftcc %objc_class* @archetype_objc_metatype(%swift.type* %T, i8** %T.CP)
// CHECK:         [[IS_OBJC_WRAPPER:%.*]] = icmp eq i64 {{%.*}}, 14
// CHECK:         br i1 [[IS_OBJC_WRAPPER]], label %isWrapper, label %metadataForClass.cont
// CHECK:       isWrapper:
// CHECK:         [[WRAPPED_CLASS:%.*]] = load %swift.type*, %swift.type**
// CHECK:       metadataForClass.cont:
// CHECK:         phi %swift.type* [ %T, %entry ], [ [[WRAPPED_CLASS]], %isWrapper ]
sil @archetype_objc_metatype : $@convention(thin) <T: CP> () -> @objc_metatype T.Type {
entry:
  %m = metatype $@objc_metatype T.Type
  return %m : $@objc_metatype T.Type
}

// CHECK-LABEL: define{{( protected)?}} swiftcc %objc_class* @existential_objc_metatype(%objc_object*) {{.*}} {
// CHECK: entry:
// CHECK-NEXT: [[METATYPE:%.*]] = call %objc_class* @object_getClass(%objc_object* %0) {{#[0-9]+}}
// CHECK-NEXT: ret %objc_class* [[METATYPE]]
// CHECK-NEXT: }
sil @existential_objc_metatype : $@convention(thin) (AnyObject) -> (@objc_metatype AnyObject.Type) {
bb0(%0 : $AnyObject):
  %1 = existential_metatype $@objc_metatype AnyObject.Type, %0 : $AnyObject
  return %1 : $@objc_metatype AnyObject.Type
}
