@@ -78,13 +78,14 @@ bb0(%0 : @trivial $Float):
78
78
// CHECK-VJP: %2 = apply %1(%0) : $@convention(thin) (Float) -> (Float, @owned @callee_guaranteed (Float) -> Float)
79
79
// CHECK-VJP: %3 = tuple_extract %2 : $(Float, @callee_guaranteed (Float) -> Float), 0
80
80
// CHECK-VJP: %4 = tuple_extract %2 : $(Float, @callee_guaranteed (Float) -> Float), 1
81
- // CHECK-VJP: %5 = function_ref @nested_func_without_diffattr : $@convention(thin) (Float) -> Float
82
- // CHECK-VJP: %6 = apply %5(%3) : $@convention(thin) (Float) -> Float
83
- // CHECK-VJP: %7 = tuple (%3 : $Float, %3 : $Float)
84
- // CHECK-VJP: %8 = tuple_extract %7 : $(Float, Float), 0
85
- // CHECK-VJP: %9 = struct $AD__func_to_diff__Type__src_0_wrt_0 (%3 : $Float, %4 : $@callee_guaranteed (Float) -> Float)
86
- // CHECK-VJP: %10 = tuple (%9 : $AD__func_to_diff__Type__src_0_wrt_0, %8 : $Float)
87
- // CHECK-VJP: return %10 : $(AD__func_to_diff__Type__src_0_wrt_0, Float)
81
+ // CHECK-VJP: retain_value %3 : $Float
82
+ // CHECK-VJP: %6 = function_ref @nested_func_without_diffattr : $@convention(thin) (Float) -> Float
83
+ // CHECK-VJP: %7 = apply %6(%3) : $@convention(thin) (Float) -> Float
84
+ // CHECK-VJP: %8 = tuple (%3 : $Float, %3 : $Float)
85
+ // CHECK-VJP: %9 = tuple_extract %8 : $(Float, Float), 0
86
+ // CHECK-VJP: %10 = struct $AD__func_to_diff__Type__src_0_wrt_0 (%3 : $Float, %4 : $@callee_guaranteed (Float) -> Float)
87
+ // CHECK-VJP: %11 = tuple (%10 : $AD__func_to_diff__Type__src_0_wrt_0, %9 : $Float)
88
+ // CHECK-VJP: return %11 : $(AD__func_to_diff__Type__src_0_wrt_0, Float)
88
89
// CHECK-VJP: }
89
90
90
91
// CHECK-VJP-LABEL: @AD__func_to_diff__adjoint_src_0_wrt_0 : $@convention(thin) (Float, AD__func_to_diff__Type__src_0_wrt_0, Float, Float) -> Float {
@@ -100,9 +101,10 @@ bb0(%0 : @trivial $Float):
100
101
// CHECK-VJP: %2 = apply %1(%0) : $@convention(thin) (Float) -> (Float, @owned @callee_guaranteed (Float) -> Float)
101
102
// CHECK-VJP: %3 = tuple_extract %2 : $(Float, @callee_guaranteed (Float) -> Float), 0
102
103
// CHECK-VJP: %4 = tuple_extract %2 : $(Float, @callee_guaranteed (Float) -> Float), 1
103
- // CHECK-VJP: %5 = struct $AD__nested_func_without_diffattr__Type__src_0_wrt_0 (%3 : $Float, %4 : $@callee_guaranteed (Float) -> Float)
104
- // CHECK-VJP: %6 = tuple (%5 : $AD__nested_func_without_diffattr__Type__src_0_wrt_0, %3 : $Float)
105
- // CHECK-VJP: return %6 : $(AD__nested_func_without_diffattr__Type__src_0_wrt_0, Float)
104
+ // CHECK-VJP: retain_value %3 : $Float
105
+ // CHECK-VJP: %6 = struct $AD__nested_func_without_diffattr__Type__src_0_wrt_0 (%3 : $Float, %4 : $@callee_guaranteed (Float) -> Float)
106
+ // CHECK-VJP: %7 = tuple (%6 : $AD__nested_func_without_diffattr__Type__src_0_wrt_0, %3 : $Float)
107
+ // CHECK-VJP: return %7 : $(AD__nested_func_without_diffattr__Type__src_0_wrt_0, Float)
106
108
// CHECK-VJP: }
107
109
108
110
// CHECK-VJP-LABEL: @AD__nested_func_without_diffattr__adjoint_src_0_wrt_0 : $@convention(thin) (Float, AD__nested_func_without_diffattr__Type__src_0_wrt_0, Float, Float) -> Float {
@@ -147,14 +149,15 @@ bb0(%0 : @trivial $Float):
147
149
// CHECK-NOVJP: %2 = apply %1(%0) : $@convention(thin) (Float) -> (@owned AD__nested_func_without_diffattr__Type__src_0_wrt_0, Float)
148
150
// CHECK-NOVJP: %3 = tuple_extract %2 : $(AD__nested_func_without_diffattr__Type__src_0_wrt_0, Float), 0
149
151
// CHECK-NOVJP: %4 = tuple_extract %2 : $(AD__nested_func_without_diffattr__Type__src_0_wrt_0, Float), 1
152
+ // CHECK-NOVJP: retain_value %4 : $Float
150
153
// CHECK-NOVJP: // function_ref nested_func_without_diffattr
151
- // CHECK-NOVJP: %5 = function_ref @nested_func_without_diffattr : $@convention(thin) (Float) -> Float
152
- // CHECK-NOVJP: %6 = apply %5 (%4) : $@convention(thin) (Float) -> Float
153
- // CHECK-NOVJP: %7 = tuple (%4 : $Float, %4 : $Float)
154
- // CHECK-NOVJP: %8 = tuple_extract %7 : $(Float, Float), 0
155
- // CHECK-NOVJP: %9 = struct $AD__func_to_diff__Type__src_0_wrt_0 (%3 : $AD__nested_func_without_diffattr__Type__src_0_wrt_0, %4 : $Float)
156
- // CHECK-NOVJP: %10 = tuple (%9 : $AD__func_to_diff__Type__src_0_wrt_0, %8 : $Float)
157
- // CHECK-NOVJP: return %10 : $(AD__func_to_diff__Type__src_0_wrt_0, Float)
154
+ // CHECK-NOVJP: %6 = function_ref @nested_func_without_diffattr : $@convention(thin) (Float) -> Float
155
+ // CHECK-NOVJP: %7 = apply %6 (%4) : $@convention(thin) (Float) -> Float
156
+ // CHECK-NOVJP: %8 = tuple (%4 : $Float, %4 : $Float)
157
+ // CHECK-NOVJP: %9 = tuple_extract %8 : $(Float, Float), 0
158
+ // CHECK-NOVJP: %10 = struct $AD__func_to_diff__Type__src_0_wrt_0 (%3 : $AD__nested_func_without_diffattr__Type__src_0_wrt_0, %4 : $Float)
159
+ // CHECK-NOVJP: %11 = tuple (%10 : $AD__func_to_diff__Type__src_0_wrt_0, %9 : $Float)
160
+ // CHECK-NOVJP: return %11 : $(AD__func_to_diff__Type__src_0_wrt_0, Float)
158
161
// CHECK-NOVJP: }
159
162
160
163
// CHECK-NOVJP-LABEL: @AD__func_to_diff__adjoint_src_0_wrt_0 : $@convention(thin) (Float, AD__func_to_diff__Type__src_0_wrt_0, Float, Float) -> Float {
@@ -172,9 +175,10 @@ bb0(%0 : @trivial $Float):
172
175
// CHECK-NOVJP: %2 = apply %1(%0) : $@convention(thin) (Float) -> (Float, Float)
173
176
// CHECK-NOVJP: %3 = tuple_extract %2 : $(Float, Float), 0
174
177
// CHECK-NOVJP: %4 = tuple_extract %2 : $(Float, Float), 1
175
- // CHECK-NOVJP: %5 = struct $AD__nested_func_without_diffattr__Type__src_0_wrt_0 (%3 : $Float, %4 : $Float)
176
- // CHECK-NOVJP: %6 = tuple (%5 : $AD__nested_func_without_diffattr__Type__src_0_wrt_0, %4 : $Float)
177
- // CHECK-NOVJP: return %6 : $(AD__nested_func_without_diffattr__Type__src_0_wrt_0, Float)
178
+ // CHECK-NOVJP: retain_value %4 : $Float
179
+ // CHECK-NOVJP: %6 = struct $AD__nested_func_without_diffattr__Type__src_0_wrt_0 (%3 : $Float, %4 : $Float)
180
+ // CHECK-NOVJP: %7 = tuple (%6 : $AD__nested_func_without_diffattr__Type__src_0_wrt_0, %4 : $Float)
181
+ // CHECK-NOVJP: return %7 : $(AD__nested_func_without_diffattr__Type__src_0_wrt_0, Float)
178
182
// CHECK-NOVJP: }
179
183
180
184
// CHECK-NOVJP-LABEL: @AD__nested_func_without_diffattr__adjoint_src_0_wrt_0 : $@convention(thin) (Float, AD__nested_func_without_diffattr__Type__src_0_wrt_0, Float, Float) -> Float {
0 commit comments