File: witness_table_differentiable_requirements.sil

package info (click to toggle)
swiftlang 6.0.3-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 2,519,992 kB
  • sloc: cpp: 9,107,863; ansic: 2,040,022; asm: 1,135,751; python: 296,500; objc: 82,456; f90: 60,502; lisp: 34,951; pascal: 19,946; sh: 18,133; perl: 7,482; ml: 4,937; javascript: 4,117; makefile: 3,840; awk: 3,535; xml: 914; fortran: 619; cs: 573; ruby: 573
file content (81 lines) | stat: -rw-r--r-- 6,573 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
// RUN: %target-swift-frontend -parse-sil %s -emit-ir | %FileCheck %s
// REQUIRES: CPU=x86_64

sil_stage canonical

import _Differentiation
import Builtin
import Swift
import SwiftShims

protocol DifferentiableRequirement {
  @differentiable(reverse, wrt: x)
  func f(_ x: Float) -> Float
}

struct DifferentiableConformance : DifferentiableRequirement {
  @differentiable(reverse, wrt: x)
  func f(_ x: Float) -> Float
  @derivative(of: f)
  func df(_ x: Float) -> (value: Float, differential: (Float) -> Float)
  @derivative(of: f)
  func pf(_ x: Float) -> (value: Float, pullback: (Float) -> Float)
}

struct AD__$s41witness_table_differentiable_requirements25DifferentiableConformanceV1fyS2fF__Type__src_0_wrt_0 {
}

// DifferentiableConformance.f(_:)
sil hidden @$s41witness_table_differentiable_requirements25DifferentiableConformanceV1fyS2fF : $@convention(method) (Float, DifferentiableConformance) -> Float {
bb0(%0 : $Float, %1 : $DifferentiableConformance):
  return undef : $Float
} // end sil function '$s41witness_table_differentiable_requirements25DifferentiableConformanceV1fyS2fF'

// DifferentiableConformance.df(_:)
sil hidden @$s41witness_table_differentiable_requirements25DifferentiableConformanceV2dfySf_S2fctSfF : $@convention(method) (Float, DifferentiableConformance) -> (Float, @owned @callee_guaranteed (Float) -> Float) {
bb0(%0 : $Float, %1 : $DifferentiableConformance):
  return undef : $(Float, @callee_guaranteed (Float) -> Float)
}

// DifferentiableConformance.pf(_:)
sil hidden @$s41witness_table_differentiable_requirements25DifferentiableConformanceV2pfySf_S2fctSfF : $@convention(method) (Float, DifferentiableConformance) -> (Float, @owned @callee_guaranteed (Float) -> Float) {
bb0(%0 : $Float, %1 : $DifferentiableConformance):
  return undef : $(Float, @callee_guaranteed (Float) -> Float)
} // end sil function '$s41witness_table_differentiable_requirements25DifferentiableConformanceV2pfySf_S2fctSfF'

// protocol witness for DifferentiableRequirement.f(_:) in conformance DifferentiableConformance
sil private [transparent] [thunk] @$s41witness_table_differentiable_requirements25DifferentiableConformanceVAA0E11RequirementA2aDP1fyS2fFTW : $@convention(witness_method: DifferentiableRequirement) (Float, @in_guaranteed DifferentiableConformance) -> Float {
bb0(%0 : $Float, %1 : $*DifferentiableConformance):
  return undef : $Float
} // end sil function '$s41witness_table_differentiable_requirements25DifferentiableConformanceVAA0E11RequirementA2aDP1fyS2fFTW'

// AD__$s41witness_table_differentiable_requirements25DifferentiableConformanceVAA0E11RequirementA2aDP1fyS2fFTW_jvp_SU
sil private [transparent] [thunk] @AD__$s41witness_table_differentiable_requirements25DifferentiableConformanceVAA0E11RequirementA2aDP1fyS2fFTW_jvp_SU : $@convention(witness_method: DifferentiableRequirement) (Float, @in_guaranteed DifferentiableConformance) -> (Float, @owned @callee_guaranteed (Float) -> Float) {
bb0(%0 : $Float, %1 : $*DifferentiableConformance):
  return undef : $(Float, @callee_guaranteed (Float) -> Float)
} // end sil function 'AD__$s41witness_table_differentiable_requirements25DifferentiableConformanceVAA0E11RequirementA2aDP1fyS2fFTW_jvp_SU'

// AD__$s41witness_table_differentiable_requirements25DifferentiableConformanceVAA0E11RequirementA2aDP1fyS2fFTW_vjp_SU
sil private [transparent] [thunk] @AD__$s41witness_table_differentiable_requirements25DifferentiableConformanceVAA0E11RequirementA2aDP1fyS2fFTW_vjp_SU : $@convention(witness_method: DifferentiableRequirement) (Float, @in_guaranteed DifferentiableConformance) -> (Float, @owned @callee_guaranteed (Float) -> Float) {
bb0(%0 : $Float, %1 : $*DifferentiableConformance):
  return undef : $(Float, @callee_guaranteed (Float) -> Float)
} // end sil function 'AD__$s41witness_table_differentiable_requirements25DifferentiableConformanceVAA0E11RequirementA2aDP1fyS2fFTW_vjp_SU'

// AD__$s41witness_table_differentiable_requirements25DifferentiableConformanceV1fyS2fF__adjoint_src_0_wrt_0
sil hidden @AD__$s41witness_table_differentiable_requirements25DifferentiableConformanceV1fyS2fF__adjoint_src_0_wrt_0 : $@convention(method) (Float, AD__$s41witness_table_differentiable_requirements25DifferentiableConformanceV1fyS2fF__Type__src_0_wrt_0, Float, Float, DifferentiableConformance) -> Float {
bb0(%0 : $Float, %1 : $AD__$s41witness_table_differentiable_requirements25DifferentiableConformanceV1fyS2fF__Type__src_0_wrt_0, %2 : $Float, %3 : $Float, %4 : $DifferentiableConformance):
  return undef : $Float
} // end sil function 'AD__$s41witness_table_differentiable_requirements25DifferentiableConformanceV1fyS2fF__adjoint_src_0_wrt_0'

sil_witness_table hidden DifferentiableConformance: DifferentiableRequirement module witness_tables_autodiff {
  method #DifferentiableRequirement.f: <Self where Self : DifferentiableRequirement> (Self) -> (Float) -> Float : @$s41witness_table_differentiable_requirements25DifferentiableConformanceVAA0E11RequirementA2aDP1fyS2fFTW	// protocol witness for DifferentiableRequirement.f(_:) in conformance DifferentiableConformance
  method #DifferentiableRequirement.f!jvp.SU.<Self where Self : DifferentiableRequirement>: <Self where Self : DifferentiableRequirement> (Self) -> (Float) -> Float : @AD__$s41witness_table_differentiable_requirements25DifferentiableConformanceVAA0E11RequirementA2aDP1fyS2fFTW_jvp_SU	// AD__$s41witness_table_differentiable_requirements25DifferentiableConformanceVAA0E11RequirementA2aDP1fyS2fFTW_jvp_SU
  method #DifferentiableRequirement.f!vjp.SU.<Self where Self : DifferentiableRequirement>: <Self where Self : DifferentiableRequirement> (Self) -> (Float) -> Float : @AD__$s41witness_table_differentiable_requirements25DifferentiableConformanceVAA0E11RequirementA2aDP1fyS2fFTW_vjp_SU	// AD__$s41witness_table_differentiable_requirements25DifferentiableConformanceVAA0E11RequirementA2aDP1fyS2fFTW_vjp_SU
}

// CHECK: @"$s41witness_table_differentiable_requirements25DifferentiableConformanceVAA0E11RequirementAAWP" = hidden constant [4 x ptr] [
// CHECK-SAME:   ptr @"$s41witness_table_differentiable_requirements25DifferentiableConformanceVAA0E11RequirementAAMc",
// CHECK-SAME:   ptr @"$s41witness_table_differentiable_requirements25DifferentiableConformanceVAA0E11RequirementA2aDP1fyS2fFTW",
// CHECK-SAME:   ptr @"AD__$s41witness_table_differentiable_requirements25DifferentiableConformanceVAA0E11RequirementA2aDP1fyS2fFTW_jvp_SU",
// CHECK-SAME:   ptr @"AD__$s41witness_table_differentiable_requirements25DifferentiableConformanceVAA0E11RequirementA2aDP1fyS2fFTW_vjp_SU"
// CHECK-SAME: ]