blob: 323e6f3b303d00eec17254a456a1116b85bb20bd [file] [log] [blame]
// RUN: %target-swift-frontend -emit-sil -emit-sorted-sil %s | %FileCheck %s
// MARK: - Public functions
@differentiable
@_silgen_name("f000_invokedDirectlyByDifferentiableAttrPublic")
public func f000_invokedDirectlyByDifferentiableAttrPublic(_ x: Float) -> Float {
return f001_invokedIndirectlyByDifferentiableAttrPublic(x)
}
// CHECK-LABEL: sil_differentiability_witness [serialized] [parameters 0] [results 0] @f000_invokedDirectlyByDifferentiableAttrPublic
// CHECK-NEXT: jvp
// CHECK-NEXT: vjp
@_silgen_name("f001_invokedIndirectlyByDifferentiableAttrPublic")
public func f001_invokedIndirectlyByDifferentiableAttrPublic(_ x: Float) -> Float {
return x
}
// CHECK-LABEL: sil_differentiability_witness private [parameters 0] [results 0] @f001_invokedIndirectlyByDifferentiableAttrPublic
// CHECK-NEXT: jvp
// CHECK-NEXT: vjp
@_silgen_name("f002_invokedDirectlyByConversionPublic")
public func f002_invokedDirectlyByConversionPublic(_ x: Float) -> Float {
return f003_invokedIndirectlyByConversionPublic(x)
}
// CHECK-LABEL: sil_differentiability_witness private [parameters 0] [results 0] @f002_invokedDirectlyByConversionPublic
// CHECK-NEXT: jvp
// CHECK-NEXT: vjp
@_silgen_name("f003_invokedIndirectlyByConversionPublic")
public func f003_invokedIndirectlyByConversionPublic(_ x: Float) -> Float {
return x
}
// CHECK-LABEL: sil_differentiability_witness private [parameters 0] [results 0] @f003_invokedIndirectlyByConversionPublic
// CHECK-NEXT: jvp
// CHECK-NEXT: vjp
// MARK: - Internal functions
@differentiable
@_silgen_name("f004_invokedDirectlyByDifferentiableAttrInternal")
internal func f004_invokedDirectlyByDifferentiableAttrInternal(_ x: Float) -> Float {
return f005_invokedIndirectlyByDifferentiableAttrInternal(x)
}
// CHECK-LABEL: sil_differentiability_witness hidden [parameters 0] [results 0] @f004_invokedDirectlyByDifferentiableAttrInternal
// CHECK-NEXT: jvp
// CHECK-NEXT: vjp
@_silgen_name("f005_invokedIndirectlyByDifferentiableAttrInternal")
internal func f005_invokedIndirectlyByDifferentiableAttrInternal(_ x: Float) -> Float {
return x
}
// CHECK-LABEL: sil_differentiability_witness private [parameters 0] [results 0] @f005_invokedIndirectlyByDifferentiableAttrInternal
// CHECK-NEXT: jvp
// CHECK-NEXT: vjp
@_silgen_name("f006_invokedDirectlyByConversionInternal")
internal func f006_invokedDirectlyByConversionInternal(_ x: Float) -> Float {
return f007_invokedIndirectlyByConversionInternal(x)
}
// CHECK-LABEL: sil_differentiability_witness private [parameters 0] [results 0] @f006_invokedDirectlyByConversionInternal
// CHECK-NEXT: jvp
// CHECK-NEXT: vjp
@_silgen_name("f007_invokedIndirectlyByConversionInternal")
internal func f007_invokedIndirectlyByConversionInternal(_ x: Float) -> Float {
return x
}
// CHECK-LABEL: sil_differentiability_witness private [parameters 0] [results 0] @f007_invokedIndirectlyByConversionInternal
// CHECK-NEXT: jvp
// CHECK-NEXT: vjp
func invokesByConversion() -> Float {
var result: Float = 0
result += gradient(at: 0, in: f002_invokedDirectlyByConversionPublic)
result += gradient(at: 0, in: f006_invokedDirectlyByConversionInternal)
return result
}