Skip to content

Commit 1d7b872

Browse files
committed
test: update llvm ir expectations for autodiff tests
1 parent 8fe7d28 commit 1d7b872

File tree

3 files changed

+39
-52
lines changed

3 files changed

+39
-52
lines changed

tests/codegen-llvm/autodiff/abi_handling.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ fn f1(x: &[f32; 2]) -> f32 {
5858
// CHECK-NEXT: Function Attrs
5959
// debug-NEXT: define internal { float, float }
6060
// debug-SAME: (ptr %f, float %x, float %dret)
61-
// release-NEXT: define internal fastcc float
61+
// release-NEXT: define internal fastcc{{( noundef)?}} float
6262
// release-SAME: (float noundef %x)
6363

6464
// CHECK-LABEL: ; abi_handling::f2
@@ -77,7 +77,7 @@ fn f2(f: fn(f32) -> f32, x: f32) -> f32 {
7777
// CHECK-NEXT: Function Attrs
7878
// debug-NEXT: define internal { float, float }
7979
// debug-SAME: (ptr align 4 %x, ptr align 4 %bx_0, ptr align 4 %y, ptr align 4 %by_0)
80-
// release-NEXT: define internal fastcc { float, float }
80+
// release-NEXT: define internal fastcc
8181
// release-SAME: (float %x.0.val)
8282

8383
// CHECK-LABEL: ; abi_handling::f3

tests/codegen-llvm/autodiff/batched.rs

Lines changed: 34 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ fn square(x: &f32) -> f32 {
2323
}
2424

2525
// d_square2
26-
// CHECK: define internal [4 x float] @fwddiffe4square(ptr noalias noundef readonly align 4 captures(none) dereferenceable(4) %x, [4 x ptr] %"x'")
26+
// CHECK: define internal fastcc [4 x float] @fwddiffe4square(float %x.0.val, [4 x ptr] %"x'")
2727
// CHECK-NEXT: start:
2828
// CHECK-NEXT: %0 = extractvalue [4 x ptr] %"x'", 0
2929
// CHECK-NEXT: %"_2'ipl" = load float, ptr %0, align 4
@@ -33,28 +33,23 @@ fn square(x: &f32) -> f32 {
3333
// CHECK-NEXT: %"_2'ipl2" = load float, ptr %2, align 4
3434
// CHECK-NEXT: %3 = extractvalue [4 x ptr] %"x'", 3
3535
// CHECK-NEXT: %"_2'ipl3" = load float, ptr %3, align 4
36-
// CHECK-NEXT: %_2 = load float, ptr %x, align 4
37-
// CHECK-NEXT: %4 = fmul fast float %"_2'ipl", %_2
38-
// CHECK-NEXT: %5 = fmul fast float %"_2'ipl1", %_2
39-
// CHECK-NEXT: %6 = fmul fast float %"_2'ipl2", %_2
40-
// CHECK-NEXT: %7 = fmul fast float %"_2'ipl3", %_2
41-
// CHECK-NEXT: %8 = fmul fast float %"_2'ipl", %_2
42-
// CHECK-NEXT: %9 = fmul fast float %"_2'ipl1", %_2
43-
// CHECK-NEXT: %10 = fmul fast float %"_2'ipl2", %_2
44-
// CHECK-NEXT: %11 = fmul fast float %"_2'ipl3", %_2
45-
// CHECK-NEXT: %12 = fadd fast float %4, %8
46-
// CHECK-NEXT: %13 = insertvalue [4 x float] undef, float %12, 0
47-
// CHECK-NEXT: %14 = fadd fast float %5, %9
48-
// CHECK-NEXT: %15 = insertvalue [4 x float] %13, float %14, 1
49-
// CHECK-NEXT: %16 = fadd fast float %6, %10
50-
// CHECK-NEXT: %17 = insertvalue [4 x float] %15, float %16, 2
51-
// CHECK-NEXT: %18 = fadd fast float %7, %11
52-
// CHECK-NEXT: %19 = insertvalue [4 x float] %17, float %18, 3
53-
// CHECK-NEXT: ret [4 x float] %19
54-
// CHECK-NEXT: }
36+
// CHECK-NEXT: %4 = fadd fast float %"_2'ipl", %"_2'ipl"
37+
// CHECK-NEXT: %5 = fmul fast float %4, %x.0.val
38+
// CHECK-NEXT: %6 = insertvalue [4 x float] undef, float %5, 0
39+
// CHECK-NEXT: %7 = fadd fast float %"_2'ipl1", %"_2'ipl1"
40+
// CHECK-NEXT: %8 = fmul fast float %7, %x.0.val
41+
// CHECK-NEXT: %9 = insertvalue [4 x float] %6, float %8, 1
42+
// CHECK-NEXT: %10 = fadd fast float %"_2'ipl2", %"_2'ipl2"
43+
// CHECK-NEXT: %11 = fmul fast float %10, %x.0.val
44+
// CHECK-NEXT: %12 = insertvalue [4 x float] %9, float %11, 2
45+
// CHECK-NEXT: %13 = fadd fast float %"_2'ipl3", %"_2'ipl3"
46+
// CHECK-NEXT: %14 = fmul fast float %13, %x.0.val
47+
// CHECK-NEXT: %15 = insertvalue [4 x float] %12, float %14, 3
48+
// CHECK-NEXT: ret [4 x float] %15
49+
// CHECK-NEXT: }
5550

56-
// d_square3, the extra float is the original return value (x * x)
57-
// CHECK: define internal { float, [4 x float] } @fwddiffe4square.1(ptr noalias noundef readonly align 4 captures(none) dereferenceable(4) %x, [4 x ptr] %"x'")
51+
// d_square1, the extra float is the original return value (x * x)
52+
// CHECK: define internal fastcc { float, [4 x float] } @fwddiffe4square.{{[0-9]+}}(float %x.0.val, [4 x ptr] %"x'")
5853
// CHECK-NEXT: start:
5954
// CHECK-NEXT: %0 = extractvalue [4 x ptr] %"x'", 0
6055
// CHECK-NEXT: %"_2'ipl" = load float, ptr %0, align 4
@@ -64,28 +59,23 @@ fn square(x: &f32) -> f32 {
6459
// CHECK-NEXT: %"_2'ipl2" = load float, ptr %2, align 4
6560
// CHECK-NEXT: %3 = extractvalue [4 x ptr] %"x'", 3
6661
// CHECK-NEXT: %"_2'ipl3" = load float, ptr %3, align 4
67-
// CHECK-NEXT: %_2 = load float, ptr %x, align 4
68-
// CHECK-NEXT: %_0 = fmul float %_2, %_2
69-
// CHECK-NEXT: %4 = fmul fast float %"_2'ipl", %_2
70-
// CHECK-NEXT: %5 = fmul fast float %"_2'ipl1", %_2
71-
// CHECK-NEXT: %6 = fmul fast float %"_2'ipl2", %_2
72-
// CHECK-NEXT: %7 = fmul fast float %"_2'ipl3", %_2
73-
// CHECK-NEXT: %8 = fmul fast float %"_2'ipl", %_2
74-
// CHECK-NEXT: %9 = fmul fast float %"_2'ipl1", %_2
75-
// CHECK-NEXT: %10 = fmul fast float %"_2'ipl2", %_2
76-
// CHECK-NEXT: %11 = fmul fast float %"_2'ipl3", %_2
77-
// CHECK-NEXT: %12 = fadd fast float %4, %8
78-
// CHECK-NEXT: %13 = insertvalue [4 x float] undef, float %12, 0
79-
// CHECK-NEXT: %14 = fadd fast float %5, %9
80-
// CHECK-NEXT: %15 = insertvalue [4 x float] %13, float %14, 1
81-
// CHECK-NEXT: %16 = fadd fast float %6, %10
82-
// CHECK-NEXT: %17 = insertvalue [4 x float] %15, float %16, 2
83-
// CHECK-NEXT: %18 = fadd fast float %7, %11
84-
// CHECK-NEXT: %19 = insertvalue [4 x float] %17, float %18, 3
85-
// CHECK-NEXT: %20 = insertvalue { float, [4 x float] } undef, float %_0, 0
86-
// CHECK-NEXT: %21 = insertvalue { float, [4 x float] } %20, [4 x float] %19, 1
87-
// CHECK-NEXT: ret { float, [4 x float] } %21
88-
// CHECK-NEXT: }
62+
// CHECK-NEXT: %_0 = fmul float %x.0.val, %x.0.val
63+
// CHECK-NEXT: %4 = fadd fast float %"_2'ipl", %"_2'ipl"
64+
// CHECK-NEXT: %5 = fmul fast float %4, %x.0.val
65+
// CHECK-NEXT: %6 = insertvalue [4 x float] undef, float %5, 0
66+
// CHECK-NEXT: %7 = fadd fast float %"_2'ipl1", %"_2'ipl1"
67+
// CHECK-NEXT: %8 = fmul fast float %7, %x.0.val
68+
// CHECK-NEXT: %9 = insertvalue [4 x float] %6, float %8, 1
69+
// CHECK-NEXT: %10 = fadd fast float %"_2'ipl2", %"_2'ipl2"
70+
// CHECK-NEXT: %11 = fmul fast float %10, %x.0.val
71+
// CHECK-NEXT: %12 = insertvalue [4 x float] %9, float %11, 2
72+
// CHECK-NEXT: %13 = fadd fast float %"_2'ipl3", %"_2'ipl3"
73+
// CHECK-NEXT: %14 = fmul fast float %13, %x.0.val
74+
// CHECK-NEXT: %15 = insertvalue [4 x float] %12, float %14, 3
75+
// CHECK-NEXT: %16 = insertvalue { float, [4 x float] } undef, float %_0, 0
76+
// CHECK-NEXT: %17 = insertvalue { float, [4 x float] } %16, [4 x float] %15, 1
77+
// CHECK-NEXT: ret { float, [4 x float] } %17
78+
// CHECK-NEXT: }
8979

9080
fn main() {
9181
let x = std::hint::black_box(3.0);

tests/codegen-llvm/autodiff/generic.rs

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -22,12 +22,9 @@ fn square<T: std::ops::Mul<Output = T> + Copy>(x: &T) -> T {
2222

2323
// Ensure that `d_square::<f64>` code is generated even if `square::<f64>` was never called
2424
//
25-
// CHECK: ; generic::square
26-
// CHECK-NEXT: ; Function Attrs:
27-
// CHECK-NEXT: define internal {{.*}} double
28-
// CHECK-NEXT: start:
29-
// CHECK-NOT: ret
30-
// CHECK: fmul double
25+
// CHECK: define internal{{.*}} @diffe_ZN7generic6square
26+
// CHECK-SAME: double
27+
// CHECK: f{{add|mul}} {{.*}} double
3128

3229
fn main() {
3330
let xf32: f32 = std::hint::black_box(3.0);

0 commit comments

Comments
 (0)