@@ -11,23 +11,40 @@ fn square(x: &f64) -> f64 {
1111 x * x
1212}
1313
14- // CHECK:define internal fastcc double @diffesquare(double %x.0.val, ptr nocapture align 8 %"x'"
14+ // CHECK:define internal fastcc void @diffe4square([4 x ptr] %"x'"
1515// CHECK-NEXT:invertstart:
16- // CHECK-NEXT: %_0 = fmul double %x.0.val, %x.0.val
17- // CHECK-NEXT: %0 = fadd fast double %x.0.val, %x.0.val
18- // CHECK-NEXT: %1 = load double, ptr %"x'", align 8
19- // CHECK-NEXT: %2 = fadd fast double %1, %0
20- // CHECK-NEXT: store double %2, ptr %"x'", align 8
21- // CHECK-NEXT: ret double %_0
16+ // CHECK-NEXT: %0 = extractvalue [4 x ptr] %"x'", 0
17+ // CHECK-NEXT: %1 = load double, ptr %0, align 8, !alias.scope !15950, !noalias !15953
18+ // CHECK-NEXT: %2 = fadd fast double %1, 6.000000e+00
19+ // CHECK-NEXT: store double %2, ptr %0, align 8, !alias.scope !15950, !noalias !15953
20+ // CHECK-NEXT: %3 = extractvalue [4 x ptr] %"x'", 1
21+ // CHECK-NEXT: %4 = load double, ptr %3, align 8, !alias.scope !15958, !noalias !15959
22+ // CHECK-NEXT: %5 = fadd fast double %4, 6.000000e+00
23+ // CHECK-NEXT: store double %5, ptr %3, align 8, !alias.scope !15958, !noalias !15959
24+ // CHECK-NEXT: %6 = extractvalue [4 x ptr] %"x'", 2
25+ // CHECK-NEXT: %7 = load double, ptr %6, align 8, !alias.scope !15960, !noalias !15961
26+ // CHECK-NEXT: %8 = fadd fast double %7, 6.000000e+00
27+ // CHECK-NEXT: store double %8, ptr %6, align 8, !alias.scope !15960, !noalias !15961
28+ // CHECK-NEXT: %9 = extractvalue [4 x ptr] %"x'", 3
29+ // CHECK-NEXT: %10 = load double, ptr %9, align 8, !alias.scope !15962, !noalias !15963
30+ // CHECK-NEXT: %11 = fadd fast double %10, 6.000000e+00
31+ // CHECK-NEXT: store double %11, ptr %9, align 8, !alias.scope !15962, !noalias !15963
32+ // CHECK-NEXT: ret void
2233// CHECK-NEXT:}
2334
2435fn main ( ) {
2536 let x = 3.0 ;
2637 let output = square ( & x) ;
2738 assert_eq ! ( 9.0 , output) ;
2839
29- let mut df_dx = 0.0 ;
30- let output_ = d_square ( & x, & mut df_dx, 1.0 ) ;
40+ let mut df_dx1 = 0.0 ;
41+ let mut df_dx2 = 0.0 ;
42+ let mut df_dx3 = 0.0 ;
43+ let mut df_dx4 = 0.0 ;
44+ let output_ = d_square ( & x, & mut df_dx1, & mut df_dx2, & mut df_dx3, & mut df_dx4, 1.0 ) ;
3145 assert_eq ! ( output, output_) ;
32- assert_eq ! ( 6.0 , df_dx) ;
46+ assert_eq ! ( 6.0 , df_dx1) ;
47+ assert_eq ! ( 6.0 , df_dx2) ;
48+ assert_eq ! ( 6.0 , df_dx3) ;
49+ assert_eq ! ( 6.0 , df_dx4) ;
3350}
0 commit comments