Skip to content

Commit b571bfa

Browse files
committed
Update test suite for LLVM11
1 parent e3bba8b commit b571bfa

19 files changed

+220
-170
lines changed

enzyme/test/Enzyme/alloctomalloc.ll

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -469,9 +469,9 @@ attributes #9 = { cold }
469469
; CHECK-NEXT: %a0 = bitcast %"class.Eigen::Matrix.6"* %output to <2 x double>*
470470
; CHECK-NEXT: %[[Bdoubleipge:.+]] = getelementptr inbounds %"class.Eigen::Matrix.6", %"class.Eigen::Matrix.6"* %"b'", i64 0, i32 0, i32 0, i32 0, i32 0, i64 0
471471
; CHECK-NEXT: %Bdouble = getelementptr inbounds %"class.Eigen::Matrix.6", %"class.Eigen::Matrix.6"* %b, i64 0, i32 0, i32 0, i32 0, i32 0, i64 0
472-
; CHECK-NEXT: %_augmented = call { double, <2 x double>, double, <2 x double>, <2 x double>*, i8*, i8* } @augmented_subfn(<2 x double>* %a0, <2 x double>* %"a0'ipc", %"class.Eigen::Matrix"* %W, %"class.Eigen::Matrix"* %"W'", double* %Bdouble, double* %[[Bdoubleipge]]) #8
472+
; CHECK-NEXT: %_augmented = call { double, <2 x double>, double, <2 x double>, <2 x double>*, i8*, i8* } @augmented_subfn(<2 x double>* %a0, <2 x double>* %"a0'ipc", %"class.Eigen::Matrix"* %W, %"class.Eigen::Matrix"* %"W'", double* %Bdouble, double* %[[Bdoubleipge]])
473473
; CHECK-NEXT: call void @diffecast(%"struct.Eigen::EigenBase.13"* %[[uw]], %"struct.Eigen::EigenBase.13"* %[[ipc]])
474-
; CHECK-NEXT: call void @diffesubfn(<2 x double>* %a0, <2 x double>* %"a0'ipc", %"class.Eigen::Matrix"* %W, %"class.Eigen::Matrix"* %"W'", double* %Bdouble, double* %[[Bdoubleipge]], { double, <2 x double>, double, <2 x double>, <2 x double>*, i8*, i8* } %_augmented) #8
474+
; CHECK-NEXT: call void @diffesubfn(<2 x double>* %a0, <2 x double>* %"a0'ipc", %"class.Eigen::Matrix"* %W, %"class.Eigen::Matrix"* %"W'", double* %Bdouble, double* %[[Bdoubleipge]], { double, <2 x double>, double, <2 x double>, <2 x double>*, i8*, i8* } %_augmented)
475475
; CHECK-NEXT: ret void
476476
; CHECK-NEXT: }
477477

enzyme/test/Enzyme/geptransfer.ll

Lines changed: 37 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
; RUN: %opt < %s %loadEnzyme -enzyme -enzyme_preopt=false -mem2reg -sroa -simplifycfg -instsimplify -gvn -adce -S | FileCheck %s
1+
; RUN: %opt < %s %loadEnzyme -enzyme -enzyme_preopt=false -mem2reg -sroa -simplifycfg -adce -S | FileCheck %s
22

33
define void @derivative(i64* %ptr, i64* %ptrp) {
44
entry:
@@ -38,22 +38,43 @@ declare double @__enzyme_autodiff(i8*, ...)
3838
; CHECK-NEXT: %[[ptr3ipge:.+]] = getelementptr inbounds i64, i64* %"ptr'", i64 3
3939
; CHECK-NEXT: %ptr3 = getelementptr inbounds i64, i64* %ptr, i64 3
4040
; CHECK-NEXT: store i64 %loadnotype, i64* %ptr3
41-
; CHECK-NEXT: %[[cptr4ipge:.+]] = getelementptr inbounds i64, i64* %"ptr'", i64 4
42-
; CHECK-NEXT: %cptr4 = getelementptr inbounds i64, i64* %ptr, i64 4
43-
; CHECK-NEXT: store i64 %loadnotype, i64* %cptr4{{(, align 4)?}}, !tbaa !0
44-
; CHECK-NEXT: %0 = load i64, i64* %"cptr4'ipg"
41+
; CHECK-NEXT: %"cast'ipc" = bitcast i64* %"ptr'" to <2 x float>*
42+
; CHECK-NEXT: %cast = bitcast i64* %ptr to <2 x float>*
43+
; CHECK-NEXT: %"cast2'ipc" = bitcast <2 x float>* %"cast'ipc" to i64*
44+
; CHECK-NEXT: %cast2 = bitcast <2 x float>* %cast to i64*
45+
; CHECK-NEXT: %"cptr2'ipg" = getelementptr inbounds i64, i64* %"cast2'ipc", i64 2
46+
; CHECK-NEXT: %cptr2 = getelementptr inbounds i64, i64* %cast2, i64 2
47+
; CHECK-NEXT: %loadtype = load i64, i64* %cptr2, align 4
48+
; CHECK-NEXT: %[[cptr4ipge:.+]] = getelementptr inbounds i64, i64* %"cast2'ipc", i64 4
49+
; CHECK-NEXT: %cptr4 = getelementptr inbounds i64, i64* %cast2, i64 4
50+
; CHECK-NEXT: store i64 %loadtype, i64* %cptr4{{(, align 4)?}}, !tbaa !0
51+
; CHECK-NEXT: %[[lcptr4:.+]] = load i64, i64* %"cptr4'ipg"
4552
; CHECK-NEXT: store i64 0, i64* %"cptr4'ipg"
46-
; CHECK-NEXT: %1 = load i64, i64* %"ptr2'ipg"
47-
; CHECK-NEXT: %2 = bitcast i64 %0 to double
48-
; CHECK-NEXT: %3 = bitcast i64 %1 to double
49-
; CHECK-NEXT: %4 = fadd fast double %3, %2
50-
; CHECK-NEXT: %5 = bitcast double %4 to i64
51-
; CHECK-NEXT: store i64 %5, i64* %"ptr2'ipg"
52-
; CHECK-NEXT: %6 = load i64, i64* %"ptr3'ipg"
53+
54+
; CHECK-NEXT: %[[zerod:.+]] = bitcast i64 0 to double
55+
; CHECK-NEXT: %[[dder:.+]] = bitcast i64 %[[lcptr4]] to double
56+
; CHECK-NEXT: %[[same:.+]] = fadd fast double %[[zerod]], %[[dder]]
57+
; CHECK-NEXT: %[[backlcptr4:.+]] = bitcast double %[[same]] to i64
58+
59+
; CHECK-NEXT: %[[lcptr2:.+]] = load i64, i64* %"cptr2'ipg"
60+
; CHECK-NEXT: %[[bcptr2:.+]] = bitcast i64 %[[lcptr2]] to double
61+
; CHECK-NEXT: %[[bcptr4:.+]] = bitcast i64 %[[backlcptr4]] to double
62+
; CHECK-NEXT: %[[mmadd:.+]] = fadd fast double %[[bcptr2]], %[[bcptr4]]
63+
; CHECK-NEXT: %[[cbadd:.+]] = bitcast double %[[mmadd]] to i64
64+
; CHECK-NEXT: store i64 %[[cbadd]], i64* %"cptr2'ipg"
65+
; CHECK-NEXT: %[[lptr3:.+]] = load i64, i64* %"ptr3'ipg"
5366
; CHECK-NEXT: store i64 0, i64* %"ptr3'ipg"
54-
; CHECK-NEXT: %7 = bitcast i64 %6 to double
55-
; CHECK-NEXT: %8 = fadd fast double %4, %7
56-
; CHECK-NEXT: %9 = bitcast double %8 to i64
57-
; CHECK-NEXT: store i64 %9, i64* %"ptr2'ipg"
67+
68+
; CHECK-NEXT: %[[zerod2:.+]] = bitcast i64 0 to double
69+
; CHECK-NEXT: %[[bczd:.+]] = bitcast i64 %[[lptr3]] to double
70+
; CHECK-NEXT: %[[fasd:.+]] = fadd fast double %[[zerod2]], %[[bczd]]
71+
; CHECK-NEXT: %[[nlptr3:.+]] = bitcast double %[[fasd]] to i64
72+
73+
; CHECK-NEXT: %[[lptr2:.+]] = load i64, i64* %"ptr2'ipg"
74+
; CHECK-NEXT: %[[dptr2:.+]] = bitcast i64 %[[lptr2]] to double
75+
; CHECK-NEXT: %[[dptr3:.+]] = bitcast i64 %[[nlptr3]] to double
76+
; CHECK-NEXT: %[[ladd:.+]] = fadd fast double %[[dptr2]], %[[dptr3]]
77+
; CHECK-NEXT: %[[fs:.+]] = bitcast double %[[ladd]] to i64
78+
; CHECK-NEXT: store i64 %[[fs]], i64* %"ptr2'ipg"
5879
; CHECK-NEXT: ret void
5980
; CHECK-NEXT: }

enzyme/test/Enzyme/geptransferindirect.ll

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -55,18 +55,18 @@ declare double @__enzyme_autodiff(i8*, ...)
5555
; CHECK-NEXT: %0 = load i64, i64* %"cptr4'ipg"
5656
; CHECK-NEXT: store i64 0, i64* %"cptr4'ipg"
5757
; CHECK-NEXT: %1 = load i64, i64* %"cptr2'ipg"
58-
; CHECK-NEXT: %2 = bitcast i64 %0 to double
59-
; CHECK-NEXT: %3 = bitcast i64 %1 to double
60-
; CHECK-NEXT: %4 = fadd fast double %3, %2
58+
; CHECK-DAG: %[[add1:.+]] = bitcast i64 %0 to double
59+
; CHECK-DAG: %[[add2:.+]] = bitcast i64 %1 to double
60+
; CHECK-NEXT: %4 = fadd fast double %[[add2]], %[[add1]]
6161
; CHECK-NEXT: %5 = bitcast double %4 to i64
6262
; CHECK-NEXT: store i64 %5, i64* %"cptr2'ipg"
6363
; CHECK-NEXT: %6 = load i64, i64* %"ptr3'ac"
6464
; CHECK-NEXT: store i64 0, i64* %"ptr3'ac"
6565
; CHECK-NEXT: call void @diffegep(i64* %ptr, i64* %"ptr'", i64 3)
6666
; CHECK-NEXT: %7 = load i64, i64* %"ptr2'ac"
67-
; CHECK-NEXT: %8 = bitcast i64 %6 to double
68-
; CHECK-NEXT: %9 = bitcast i64 %7 to double
69-
; CHECK-NEXT: %10 = fadd fast double %9, %8
67+
; CHECK-DAG: %[[sadd1:.+]] = bitcast i64 %6 to double
68+
; CHECK-DAG: %[[sadd2:.+]] = bitcast i64 %7 to double
69+
; CHECK-NEXT: %10 = fadd fast double %[[sadd2]], %[[sadd1]]
7070
; CHECK-NEXT: %11 = bitcast double %10 to i64
7171
; CHECK-NEXT: store i64 %11, i64* %"ptr2'ac"
7272
; CHECK-NEXT: call void @diffegep.2(i64* %ptr, i64* %"ptr'", i64 2)

enzyme/test/Enzyme/geptransferstruct.ll

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -52,17 +52,17 @@ declare double @__enzyme_autodiff(i8*, ...)
5252
; CHECK-NEXT: %0 = load i64, i64* %"cptr4'ipg"
5353
; CHECK-NEXT: store i64 0, i64* %"cptr4'ipg"
5454
; CHECK-NEXT: %1 = load i64, i64* %"cptr2'ipg"
55-
; CHECK-NEXT: %2 = bitcast i64 %0 to double
56-
; CHECK-NEXT: %3 = bitcast i64 %1 to double
57-
; CHECK-NEXT: %4 = fadd fast double %3, %2
55+
; CHECK-DAG: %[[add1:.+]] = bitcast i64 %0 to double
56+
; CHECK-DAG: %[[add2:.+]] = bitcast i64 %1 to double
57+
; CHECK-NEXT: %4 = fadd fast double %[[add2]], %[[add1]]
5858
; CHECK-NEXT: %5 = bitcast double %4 to i64
5959
; CHECK-NEXT: store i64 %5, i64* %"cptr2'ipg"
6060
; CHECK-NEXT: %6 = load i64, i64* %"ptr3'ipg"
6161
; CHECK-NEXT: store i64 0, i64* %"ptr3'ipg"
6262
; CHECK-NEXT: %7 = load i64, i64* %"ptr2'ipg"
63-
; CHECK-NEXT: %8 = bitcast i64 %6 to double
64-
; CHECK-NEXT: %9 = bitcast i64 %7 to double
65-
; CHECK-NEXT: %10 = fadd fast double %9, %8
63+
; CHECK-DAG: %[[sadd1:.+]] = bitcast i64 %6 to double
64+
; CHECK-DAG: %[[sadd2:.+]] = bitcast i64 %7 to double
65+
; CHECK-NEXT: %10 = fadd fast double %[[sadd2]], %[[sadd1]]
6666
; CHECK-NEXT: %11 = bitcast double %10 to i64
6767
; CHECK-NEXT: store i64 %11, i64* %"ptr2'ipg"
6868
; CHECK-NEXT: ret void

enzyme/test/Enzyme/geptransferstruct2.ll

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -52,17 +52,17 @@ declare double @__enzyme_autodiff(i8*, ...)
5252
; CHECK-NEXT: %0 = load i64, i64* %"cptr4'ipg"
5353
; CHECK-NEXT: store i64 0, i64* %"cptr4'ipg"
5454
; CHECK-NEXT: %1 = load i64, i64* %"cptr2'ipg"
55-
; CHECK-NEXT: %2 = bitcast i64 %0 to double
56-
; CHECK-NEXT: %3 = bitcast i64 %1 to double
57-
; CHECK-NEXT: %4 = fadd fast double %3, %2
55+
; CHECK-DAG: %[[add1:.+]] = bitcast i64 %0 to double
56+
; CHECK-DAG: %[[add2:.+]] = bitcast i64 %1 to double
57+
; CHECK-NEXT: %4 = fadd fast double %[[add2]], %[[add1]]
5858
; CHECK-NEXT: %5 = bitcast double %4 to i64
5959
; CHECK-NEXT: store i64 %5, i64* %"cptr2'ipg"
6060
; CHECK-NEXT: %6 = load i64, i64* %"ptr3'ipg"
6161
; CHECK-NEXT: store i64 0, i64* %"ptr3'ipg"
6262
; CHECK-NEXT: %7 = load i64, i64* %"ptr2'ipg"
63-
; CHECK-NEXT: %8 = bitcast i64 %6 to double
64-
; CHECK-NEXT: %9 = bitcast i64 %7 to double
65-
; CHECK-NEXT: %10 = fadd fast double %9, %8
63+
; CHECK-DAG: %[[sadd1:.+]] = bitcast i64 %6 to double
64+
; CHECK-DAG: %[[sadd2:.+]] = bitcast i64 %7 to double
65+
; CHECK-NEXT: %10 = fadd fast double %[[sadd2]], %[[sadd1]]
6666
; CHECK-NEXT: %11 = bitcast double %10 to i64
6767
; CHECK-NEXT: store i64 %11, i64* %"ptr2'ipg"
6868
; CHECK-NEXT: ret void

enzyme/test/Enzyme/intstore.ll

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -60,9 +60,9 @@ attributes #2 = { nounwind }
6060
; CHECK-NEXT: %3 = load i64, i64* %[[ipc]]
6161
; CHECK-NEXT: store i64 0, i64* %[[ipc]]
6262
; CHECK-NEXT: %4 = load i64, i64* %[[ipc2]]
63-
; CHECK-NEXT: %5 = bitcast i64 %3 to double
64-
; CHECK-NEXT: %6 = bitcast i64 %4 to double
65-
; CHECK-NEXT: %7 = fadd fast double %6, %5
63+
; CHECK-DAG: %[[add1:.+]] = bitcast i64 %3 to double
64+
; CHECK-DAG: %[[add2:.+]] = bitcast i64 %4 to double
65+
; CHECK-NEXT: %7 = fadd fast double %[[add2]], %[[add1]]
6666
; CHECK-NEXT: %8 = bitcast double %7 to i64
6767
; CHECK-NEXT: store i64 %8, i64* %[[ipc2]]
6868
; CHECK-NEXT: ret void

enzyme/test/Enzyme/noptrcasttransfer.ll

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,9 @@ declare double @__enzyme_autodiff(i8*, ...)
2626
; CHECK-NEXT: %0 = load i64, i64* %"ptr2'"
2727
; CHECK-NEXT: store i64 0, i64* %"ptr2'"
2828
; CHECK-NEXT: %1 = load i64, i64* %"ptr'"
29-
; CHECK-NEXT: %2 = bitcast i64 %0 to double
30-
; CHECK-NEXT: %3 = bitcast i64 %1 to double
31-
; CHECK-NEXT: %4 = fadd fast double %3, %2
29+
; CHECK-DAG: %[[add1:.+]] = bitcast i64 %0 to double
30+
; CHECK-DAG: %[[add2:.+]] = bitcast i64 %1 to double
31+
; CHECK-NEXT: %4 = fadd fast double %[[add2]], %[[add1]]
3232
; CHECK-NEXT: %5 = bitcast double %4 to i64
3333
; CHECK-NEXT: store i64 %5, i64* %"ptr'"
3434
; CHECK-NEXT: ret void

enzyme/test/Enzyme/pointertypeipo2.ll

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -140,9 +140,9 @@ attributes #4 = { nounwind }
140140
; CHECK-NEXT: %[[dpop:.+]] = call { i64 } @diffepop(i64 %[[agg]], i64 %differeturn, { i64, i64*, i64*, i8*, i8* } %[[pret]])
141141
; CHECK-NEXT: %[[ev:.+]] = extractvalue { i64 } %[[dpop]], 0
142142
; CHECK-NEXT: %2 = load i64, i64* %"this'"
143-
; CHECK-NEXT: %3 = bitcast i64 %[[ev]] to double
144-
; CHECK-NEXT: %4 = bitcast i64 %2 to double
145-
; CHECK-NEXT: %5 = fadd fast double %4, %3
143+
; CHECK-DAG: %[[add1:.+]] = bitcast i64 %[[ev]] to double
144+
; CHECK-DAG: %[[add2:.+]] = bitcast i64 %2 to double
145+
; CHECK-NEXT: %5 = fadd fast double %[[add2]], %[[add1]]
146146
; CHECK-NEXT: %6 = bitcast double %5 to i64
147147
; CHECK-NEXT: store i64 %6, i64* %"this'"
148148
; CHECK-NEXT: ret void
@@ -159,9 +159,9 @@ attributes #4 = { nounwind }
159159
; CHECK-NEXT: %0 = call { i64 } @diffemul(i64 %[[a2]], i64 %differeturn)
160160
; CHECK-NEXT: %1 = extractvalue { i64 } %0, 0
161161
; CHECK-NEXT: %2 = load i64, i64* %"call.i'ip_phi"
162-
; CHECK-NEXT: %3 = bitcast i64 %1 to double
163-
; CHECK-NEXT: %4 = bitcast i64 %2 to double
164-
; CHECK-NEXT: %5 = fadd fast double %4, %3
162+
; CHECK-DAG: %[[sadd1:.+]] = bitcast i64 %1 to double
163+
; CHECK-DAG: %[[sadd2:.+]] = bitcast i64 %2 to double
164+
; CHECK-NEXT: %5 = fadd fast double %[[sadd2]], %[[sadd1]]
165165
; CHECK-NEXT: %6 = bitcast double %5 to i64
166166
; CHECK-NEXT: store i64 %6, i64* %"call.i'ip_phi"
167167
; CHECK-NEXT: call void @diffecast(i64* %arr, i64* %"arr'ipc")

enzyme/test/Enzyme/pointertypeipo3.ll

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -137,9 +137,9 @@ attributes #22 = { readnone }
137137
; CHECK-NEXT: %[[dpop:.+]] = call { i64 } @diffepop(i64 %[[agg]], i64 %differeturn, { i64, i64*, i64*, i8*, i8* } %[[pret]])
138138
; CHECK-NEXT: %[[ev:.+]] = extractvalue { i64 } %[[dpop]], 0
139139
; CHECK-NEXT: %2 = load i64, i64* %"this'"
140-
; CHECK-NEXT: %3 = bitcast i64 %[[ev]] to double
141-
; CHECK-NEXT: %4 = bitcast i64 %2 to double
142-
; CHECK-NEXT: %5 = fadd fast double %4, %3
140+
; CHECK-DAG: %[[add1:.+]] = bitcast i64 %[[ev]] to double
141+
; CHECK-DAG: %[[add2:.+]] = bitcast i64 %2 to double
142+
; CHECK-NEXT: %5 = fadd fast double %[[add2]], %[[add1]]
143143
; CHECK-NEXT: %6 = bitcast double %5 to i64
144144
; CHECK-NEXT: store i64 %6, i64* %"this'"
145145
; CHECK-NEXT: ret void
@@ -156,9 +156,9 @@ attributes #22 = { readnone }
156156
; CHECK-NEXT: %0 = call { i64 } @diffemul(i64 %[[a2]], i64 %differeturn)
157157
; CHECK-NEXT: %1 = extractvalue { i64 } %0, 0
158158
; CHECK-NEXT: %2 = load i64, i64* %"call.i'ip_phi"
159-
; CHECK-NEXT: %3 = bitcast i64 %1 to double
160-
; CHECK-NEXT: %4 = bitcast i64 %2 to double
161-
; CHECK-NEXT: %5 = fadd fast double %4, %3
159+
; CHECK-DAG: %[[sadd1:.+]] = bitcast i64 %1 to double
160+
; CHECK-DAG: %[[sadd2:.+]] = bitcast i64 %2 to double
161+
; CHECK-NEXT: %5 = fadd fast double %[[sadd2]], %[[sadd1]]
162162
; CHECK-NEXT: %6 = bitcast double %5 to i64
163163
; CHECK-NEXT: store i64 %6, i64* %"call.i'ip_phi"
164164
; CHECK-NEXT: call void @diffecast(i64* %arr, i64* %"arr'ipc")

enzyme/test/Enzyme/pow.ll

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,8 @@ declare double @__enzyme_autodiff(double (double, double)*, ...)
2626
; CHECK-NEXT: %[[newpowdret:.+]] = fmul fast double %differeturn, %[[newpow]]
2727
; CHECK-NEXT: %[[dx:.+]] = fmul fast double %[[newpowdret]], %y
2828
; CHECK-NEXT: %[[origpow:.+]] = tail call fast double @llvm.pow.f64(double %x, double %y)
29-
; CHECK-NEXT: %[[logy:.+]] = call fast double @llvm.log.f64(double %x)
30-
; CHECK-NEXT: %[[origpowdret:.+]] = fmul fast double %differeturn, %[[origpow]]
29+
; CHECK-DAG: %[[logy:.+]] = call fast double @llvm.log.f64(double %x)
30+
; CHECK-DAG: %[[origpowdret:.+]] = fmul fast double %differeturn, %[[origpow]]
3131
; CHECK-NEXT: %[[dy:.+]] = fmul fast double %[[origpowdret]], %[[logy]]
3232
; CHECK-NEXT: %[[interres:.+]] = insertvalue { double, double } undef, double %[[dx:.+]], 0
3333
; CHECK-NEXT: %[[finalres:.+]] = insertvalue { double, double } %[[interres]], double %[[dy:.+]], 1

0 commit comments

Comments
 (0)