Skip to content

Commit

Permalink
Add willreturn (rust-lang#455)
Browse files Browse the repository at this point in the history
  • Loading branch information
wsmoses authored Jan 29, 2022
1 parent 19ad3dd commit 0517244
Show file tree
Hide file tree
Showing 137 changed files with 400 additions and 298 deletions.
42 changes: 42 additions & 0 deletions enzyme/Enzyme/FunctionUtils.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -932,6 +932,37 @@ PreProcessCache::getAAResultsFromFunction(llvm::Function *NewF) {
return FAM.getResult<AAManager>(*NewF);
}

void setFullWillReturn(Function *NewF) {
#if LLVM_VERSION_MAJOR >= 9
for (auto &BB : *NewF) {
for (auto &I : BB) {
if (auto CI = dyn_cast<CallInst>(&I)) {
#if LLVM_VERSION_MAJOR >= 14
CI->addFnAttr(Attribute::WillReturn);
CI->addFnAttr(Attribute::MustProgress);
#elif LLVM_VERSION_MAJOR >= 12
CI->addAttribute(AttributeList::FunctionIndex, Attribute::WillReturn);
CI->addAttribute(AttributeList::FunctionIndex, Attribute::MustProgress);
#else
CI->addAttribute(AttributeList::FunctionIndex, Attribute::WillReturn);
#endif
}
if (auto CI = dyn_cast<InvokeInst>(&I)) {
#if LLVM_VERSION_MAJOR >= 14
CI->addFnAttr(Attribute::WillReturn);
CI->addFnAttr(Attribute::MustProgress);
#elif LLVM_VERSION_MAJOR >= 12
CI->addAttribute(AttributeList::FunctionIndex, Attribute::WillReturn);
CI->addAttribute(AttributeList::FunctionIndex, Attribute::MustProgress);
#else
CI->addAttribute(AttributeList::FunctionIndex, Attribute::WillReturn);
#endif
}
}
}
#endif
}

Function *PreProcessCache::preprocessForClone(Function *F,
DerivativeMode mode) {

Expand Down Expand Up @@ -982,10 +1013,21 @@ Function *PreProcessCache::preprocessForClone(Function *F,
j->addAttr(Attribute::NoAlias);
}
}
#if LLVM_VERSION_MAJOR >= 14
NewF->addFnAttr(Attribute::WillReturn);
NewF->addFnAttr(Attribute::MustProgress);
#elif LLVM_VERSION_MAJOR >= 9
NewF->addAttribute(AttributeList::FunctionIndex, Attribute::WillReturn);
#if LLVM_VERSION_MAJOR >= 12
NewF->addAttribute(AttributeList::FunctionIndex, Attribute::MustProgress);
#endif
#endif
setFullWillReturn(NewF);

if (EnzymePreopt) {
if (EnzymeInline) {
ForceRecursiveInlining(NewF, /*Limit*/ EnzymeInlineCount);
setFullWillReturn(NewF);
PreservedAnalyses PA;
FAM.invalidate(*NewF, PA);
}
Expand Down
4 changes: 2 additions & 2 deletions enzyme/test/Enzyme/ForwardMode/bitcast.ll
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ entry:

declare double @__enzyme_fwddiff(double (double)*, ...)

; CHECK: define internal {{(dso_local )?}}double @fwddiffetester(double %x, double %"x'") {
; CHECK: define internal {{(dso_local )?}}double @fwddiffetester(double %x, double %"x'")
; CHECK-NEXT: entry:
; CHECK-NEXT: ret double %"x'"
; CHECK-NEXT: }
; CHECK-NEXT: }
4 changes: 2 additions & 2 deletions enzyme/test/Enzyme/ForwardMode/callmincacheunwrap.ll
Original file line number Diff line number Diff line change
Expand Up @@ -73,11 +73,11 @@ attributes #3 = { nounwind }
!12 = !{!"double", !5, i64 0}


; CHECK: define internal void @fwddiffesubcall(double** %m_data.i.i.i, double** %"m_data.i.i.i'", i64* %tmp7) local_unnamed_addr #2 {
; CHECK: define internal void @fwddiffesubcall(double** %m_data.i.i.i, double** %"m_data.i.i.i'", i64* %tmp7)
; CHECK-NEXT: entry:
; CHECK-NEXT: %"mat'ipl" = load double*, double** %"m_data.i.i.i'", align 8
; CHECK-NEXT: %mat = load double*, double** %m_data.i.i.i, align 8, !tbaa !8
; CHECK-NEXT: %cols = call i64 @_ZNK5Eigen9EigenBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE4colsEv(i64* %tmp7) #3
; CHECK-NEXT: %cols = call i64 @_ZNK5Eigen9EigenBaseINS_6MatrixIdLin1ELin1ELi0ELin1ELin1EEEE4colsEv(i64* %tmp7)
; CHECK-NEXT: br label %for.body

; CHECK: for.body: ; preds = %for.body, %entry
Expand Down
2 changes: 1 addition & 1 deletion enzyme/test/Enzyme/ForwardMode/erf.ll
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ entry:
; Function Attrs: nounwind
declare double @__enzyme_fwddiff(double (double)*, ...)

; CHECK: define internal double @fwddiffetester(double %x, double %"x'") {
; CHECK: define internal double @fwddiffetester(double %x, double %"x'")
; CHECK-NEXT: entry:
; CHECK-NEXT: %0 = fmul fast double %x, %x
; CHECK-NEXT: %1 = {{(fsub fast double \-?0.000000e\+00,|fneg fast double)}} %0
Expand Down
2 changes: 1 addition & 1 deletion enzyme/test/Enzyme/ForwardMode/erfc.ll
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ entry:
; Function Attrs: nounwind
declare double @__enzyme_fwddiff(double (double)*, ...)

; CHECK: define internal double @fwddiffetester(double %x, double %"x'") {
; CHECK: define internal double @fwddiffetester(double %x, double %"x'")
; CHECK-NEXT: entry:
; CHECK-NEXT: %0 = fmul fast double %x, %x
; CHECK-NEXT: %1 = {{(fsub fast double \-?0.000000e\+00,|fneg fast double)}} %0
Expand Down
2 changes: 1 addition & 1 deletion enzyme/test/Enzyme/ForwardMode/erfi.ll
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ entry:
; Function Attrs: nounwind
declare double @__enzyme_fwddiff(double (double)*, ...)

; CHECK: define internal double @fwddiffetester(double %x, double %"x'") {
; CHECK: define internal double @fwddiffetester(double %x, double %"x'")
; CHECK-NEXT: entry:
; CHECK-NEXT: %0 = fmul fast double %x, %x
; CHECK-NEXT: %1 = call fast double @llvm.exp.f64(double %0)
Expand Down
4 changes: 2 additions & 2 deletions enzyme/test/Enzyme/ForwardMode/fneg.ll
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ define double @dfneg(double %x) {
declare double @__enzyme_fwddiff(double (double)*, double, double)


; CHECK: define internal double @fwddiffefneg(double %x, double %"x'") {
; CHECK: define internal double @fwddiffefneg(double %x, double %"x'")
; CHECK-NEXT: %1 = fneg fast double %"x'"
; CHECK-NEXT: ret double %1
; CHECK-NEXT: }
; CHECK-NEXT: }
4 changes: 2 additions & 2 deletions enzyme/test/Enzyme/ForwardMode/fpext.ll
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@ entry:

declare double @__enzyme_fwddiff(double (float)*, ...)

; CHECK: define internal {{(dso_local )?}}double @fwddiffetester(float %x, float %"x'") {
; CHECK: define internal {{(dso_local )?}}double @fwddiffetester(float %x, float %"x'")
; CHECK-NEXT: entry:
; CHECK-NEXT: %0 = fpext float %"x'" to double
; CHECK-NEXT: ret double %0
; CHECK-NEXT: }
; CHECK-NEXT: }
4 changes: 2 additions & 2 deletions enzyme/test/Enzyme/ForwardMode/memcpy-ptr.ll
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ attributes #2 = { noinline nounwind uwtable }
attributes #3 = { nounwind }


; CHECK: define internal void @fwddiffememcpy_ptr(double** nocapture %dst, double** nocapture %"dst'", double** nocapture readonly %src, double** nocapture %"src'", i64 %num) #0 {
; CHECK: define internal void @fwddiffememcpy_ptr(double** nocapture %dst, double** nocapture %"dst'", double** nocapture readonly %src, double** nocapture %"src'", i64 %num)
; CHECK-NEXT: entry:
; CHECK-NEXT: %"'ipc" = bitcast double** %"dst'" to i8*
; CHECK-NEXT: %0 = bitcast double** %dst to i8*
Expand All @@ -37,4 +37,4 @@ attributes #3 = { nounwind }
; CHECK-NEXT: tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %0, i8* align 1 %1, i64 %num, i1 false)
; CHECK-NEXT: tail call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %"'ipc", i8* align 1 %"'ipc1", i64 %num, i1 false)
; CHECK-NEXT: ret void
; CHECK-NEXT: }
; CHECK-NEXT: }
2 changes: 1 addition & 1 deletion enzyme/test/Enzyme/ForwardMode/negbithack.ll
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ entry:
; Function Attrs: nounwind
declare double @__enzyme_fwddiff(double (double)*, ...)

; CHECK: define internal double @fwddiffetester(double %x, double %"x'") {
; CHECK: define internal double @fwddiffetester(double %x, double %"x'")
; CHECK-NEXT: entry:
; CHECK-NEXT: %0 = {{(fsub fast double \-?0.000000e\+00,|fneg fast double)}} %"x'"
; CHECK-NEXT: ret double %0
Expand Down
2 changes: 1 addition & 1 deletion enzyme/test/Enzyme/ForwardMode/negbithack2.ll
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ entry:
; Function Attrs: nounwind
declare <2 x double> @__enzyme_fwddiff(<2 x double> (<2 x double>)*, ...)

; CHECK: define internal <2 x double> @fwddiffetester(<2 x double> %x, <2 x double> %"x'") {
; CHECK: define internal <2 x double> @fwddiffetester(<2 x double> %x, <2 x double> %"x'")
; CHECK-NEXT: entry:
; CHECK-NEXT: %0 = {{(fsub fast <2 x double> <double \-?0.000000e\+00, double \-?0.000000e\+00>,|fneg fast <2 x double>)}} %"x'"
; CHECK-NEXT: ret <2 x double> %0
Expand Down
2 changes: 1 addition & 1 deletion enzyme/test/Enzyme/ForwardMode/negbithack3.ll
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ entry:
; Function Attrs: nounwind
declare <2 x double> @__enzyme_fwddiff(<2 x double> (<2 x double>)*, ...)

; CHECK: define internal <2 x double> @fwddiffetester(<2 x double> %x, <2 x double> %"x'") {
; CHECK: define internal <2 x double> @fwddiffetester(<2 x double> %x, <2 x double> %"x'")
; CHECK-NEXT: entry:
; CHECK-NEXT: %0 = bitcast <2 x double> %"x'" to <2 x i64>
; CHECK-NEXT: %1 = extractelement <2 x i64> %0, i64 0
Expand Down
2 changes: 1 addition & 1 deletion enzyme/test/Enzyme/ForwardMode/pow.ll
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ declare double @llvm.pow.f64(double, double)
; Function Attrs: nounwind
declare double @__enzyme_fwddiff(double (double, double)*, ...)

; CHECK: define internal {{(dso_local )?}}double @fwddiffetester(double %x, double %"x'", double %y, double %"y'") {
; CHECK: define internal {{(dso_local )?}}double @fwddiffetester(double %x, double %"x'", double %y, double %"y'")
; CHECK-NEXT: entry:
; CHECK-NEXT: %[[i0:.+]] = fsub fast double %y, 1.000000e+00
; CHECK-NEXT: %[[i1:.+]] = call fast double @llvm.pow.f64(double %x, double %[[i0]])
Expand Down
2 changes: 1 addition & 1 deletion enzyme/test/Enzyme/ForwardMode/powi13.ll
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ declare double @llvm.powi.f64.i32(double, i32)
; Function Attrs: nounwind
declare double @__enzyme_fwddiff(double (double, i32)*, ...)

; CHECK: define internal {{(dso_local )?}}double @fwddiffetester(double %x, double %"x'", i32 %y) {
; CHECK: define internal {{(dso_local )?}}double @fwddiffetester(double %x, double %"x'", i32 %y)
; CHECK-NEXT: entry:
; CHECK-NEXT: %[[ym1:.+]] = sub i32 %y, 1
; CHECK-NEXT: %[[newpow:.+]] = call fast double @llvm.powi.f64.i32(double %x, i32 %[[ym1]])
Expand Down
6 changes: 3 additions & 3 deletions enzyme/test/Enzyme/ForwardMode/sqrelu.ll
Original file line number Diff line number Diff line change
Expand Up @@ -54,12 +54,12 @@ attributes #3 = { nounwind }
; CHECK-NEXT: br i1 %cmp.i, label %cond.true.i, label %fwddiffesqrelu.exit

; CHECK: cond.true.i:
; CHECK-NEXT: %0 = call fast double @llvm.sin.f64(double %x) #3
; CHECK-NEXT: %1 = call fast double @llvm.cos.f64(double %x) #3
; CHECK-NEXT: %0 = call fast double @llvm.sin.f64(double %x)
; CHECK-NEXT: %1 = call fast double @llvm.cos.f64(double %x)
; CHECK-NEXT: %mul.i = fmul fast double %0, %x
; CHECK-NEXT: %2 = fmul fast double %1, %x
; CHECK-NEXT: %3 = fadd fast double %2, %0
; CHECK-NEXT: %4 = call fast double @llvm.sqrt.f64(double %mul.i) #3
; CHECK-NEXT: %4 = call fast double @llvm.sqrt.f64(double %mul.i)
; CHECK-NEXT: %5 = fmul fast double %3, 5.000000e-01
; CHECK-NEXT: %6 = fdiv fast double %5, %4
; CHECK-NEXT: %7 = fcmp fast oeq double %mul.i, 0.000000e+00
Expand Down
4 changes: 2 additions & 2 deletions enzyme/test/Enzyme/ForwardMode/sret.ll
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ attributes #6 = { nounwind }
; CHECK-NEXT: }


; CHECK: define internal void @fwddiffe_Z6squared(%"struct.std::array"* noalias nocapture %agg.result, %"struct.std::array"* nocapture %"agg.result'", double %x, double %"x'") #0 {
; CHECK: define internal void @fwddiffe_Z6squared(%"struct.std::array"* noalias nocapture %agg.result, %"struct.std::array"* nocapture %"agg.result'", double %x, double %"x'")
; CHECK-NEXT: entry:
; CHECK-NEXT: %"arrayinit.begin'ipg" = getelementptr inbounds %"struct.std::array", %"struct.std::array"* %"agg.result'", i64 0, i32 0, i64 0
; CHECK-NEXT: %arrayinit.begin = getelementptr inbounds %"struct.std::array", %"struct.std::array"* %agg.result, i64 0, i32 0, i64 0
Expand All @@ -103,4 +103,4 @@ attributes #6 = { nounwind }
; CHECK-NEXT: store double %x, double* %arrayinit.element3, align 8
; CHECK-NEXT: store double %"x'", double* %"arrayinit.element3'ipg", align 8
; CHECK-NEXT: ret void
; CHECK-NEXT: }
; CHECK-NEXT: }
4 changes: 2 additions & 2 deletions enzyme/test/Enzyme/ForwardMode/storeconstexpr.ll
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,9 @@ entry:
; Function Attrs: alwaysinline
declare double @__enzyme_fwddiff(i8*, ...)

; CHECK: define internal void @fwddiffecallee(i64* %from, i64* %"from'", i64* %to, i64* %"to'") {
; CHECK: define internal void @fwddiffecallee(i64* %from, i64* %"from'", i64* %to, i64* %"to'")
; CHECK-NEXT: entry:
; CHECK-NEXT: store i64 ptrtoint ([18 x i8]* @.str to i64), i64* %"to'", align 4
; CHECK-NEXT: store i64 ptrtoint ([18 x i8]* @.str to i64), i64* %to, align 4
; CHECK-NEXT: ret void
; CHECK-NEXT: }
; CHECK-NEXT: }
4 changes: 2 additions & 2 deletions enzyme/test/Enzyme/ForwardMode/sumsimpleoptnone.ll
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ declare dso_local double @__enzyme_fwddiff(i8*, double*, double*, double**, doub
attributes #0 = { noinline nounwind uwtable optnone }


; CHECK: define internal void @fwddiffef(double* %x, double* %"x'", double** %y, double** %"y'", i64 %n) #1 {
; CHECK: define internal void @fwddiffef(double* %x, double* %"x'", double** %y, double** %"y'", i64 %n)
; CHECK-NEXT: entry:
; CHECK-NEXT: %0 = add nuw i64 %n, 1
; CHECK-NEXT: br label %for.cond
Expand All @@ -63,4 +63,4 @@ attributes #0 = { noinline nounwind uwtable optnone }

; CHECK: for.end: ; preds = %for.cond
; CHECK-NEXT: ret void
; CHECK-NEXT: }
; CHECK-NEXT: }
2 changes: 1 addition & 1 deletion enzyme/test/Enzyme/ReverseMode/Faddeeva_erf.ll
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ entry:
; Function Attrs: nounwind
declare { double, double } @__enzyme_autodiff({ double, double } ({ double, double })*, ...)

; CHECK: define internal { { double, double } } @diffetester({ double, double } %in, { double, double } %differeturn) {
; CHECK: define internal { { double, double } } @diffetester({ double, double } %in, { double, double } %differeturn)
; CHECK-NEXT: entry:
; CHECK-NEXT: %0 = extractvalue { double, double } %in, 0
; CHECK-NEXT: %1 = extractvalue { double, double } %in, 1
Expand Down
2 changes: 1 addition & 1 deletion enzyme/test/Enzyme/ReverseMode/Faddeeva_erfc.ll
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ entry:
; Function Attrs: nounwind
declare { double, double } @__enzyme_autodiff({ double, double } ({ double, double })*, ...)

; CHECK: define internal { { double, double } } @diffetester({ double, double } %in, { double, double } %differeturn) {
; CHECK: define internal { { double, double } } @diffetester({ double, double } %in, { double, double } %differeturn)
; CHECK-NEXT: entry:
; CHECK-NEXT: %0 = extractvalue { double, double } %in, 0
; CHECK-NEXT: %1 = extractvalue { double, double } %in, 1
Expand Down
2 changes: 1 addition & 1 deletion enzyme/test/Enzyme/ReverseMode/Faddeeva_erfi.ll
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ entry:
; Function Attrs: nounwind
declare { double, double } @__enzyme_autodiff({ double, double } ({ double, double })*, ...)

; CHECK: define internal { { double, double } } @diffetester({ double, double } %in, { double, double } %differeturn) {
; CHECK: define internal { { double, double } } @diffetester({ double, double } %in, { double, double } %differeturn)
; CHECK-NEXT: entry:
; CHECK-NEXT: %0 = extractvalue { double, double } %in, 0
; CHECK-NEXT: %1 = extractvalue { double, double } %in, 1
Expand Down
10 changes: 5 additions & 5 deletions enzyme/test/Enzyme/ReverseMode/allocacache.ll
Original file line number Diff line number Diff line change
Expand Up @@ -439,7 +439,7 @@ attributes #11 = { cold }
!8 = !{!9, !9, i64 0}
!9 = !{!"double", !3, i64 0}

; CHECK: define internal void @diffematvec(<2 x double>* %Wptr, <2 x double>* %"Wptr'", double* %B, double* %"B'", <2 x double>* %outvec, <2 x double>* %"outvec'") #3 {
; CHECK: define internal void @diffematvec(<2 x double>* %Wptr, <2 x double>* %"Wptr'", double* %B, double* %"B'", <2 x double>* %outvec, <2 x double>* %"outvec'")
; CHECK-NEXT: entry:
; CHECK-NEXT: %B1 = load double, double* %B, align 8
; CHECK-NEXT: %[[B2pprime:.+]] = getelementptr inbounds double, double* %"B'", i64 1
Expand All @@ -462,7 +462,7 @@ attributes #11 = { cold }
; CHECK-NEXT: ret void
; CHECK-NEXT: }

; CHECK: define internal { <2 x double> } @diffecopy(<2 x double>* %to, <2 x double>* %"to'", <2 x double> %from) #4 {
; CHECK: define internal { <2 x double> } @diffecopy(<2 x double>* %to, <2 x double>* %"to'", <2 x double> %from)
; CHECK-NEXT: entry:
; CHECK-NEXT: store <2 x double> %from, <2 x double>* %to, align 16
; CHECK-NEXT: %0 = load <2 x double>, <2 x double>* %"to'", align 16
Expand All @@ -471,7 +471,7 @@ attributes #11 = { cold }
; CHECK-NEXT: ret { <2 x double> } %1
; CHECK-NEXT: }

; CHECK: define internal { <2 x double>, <2 x double> } @augmented_loadmul(<2 x double>* %a, <2 x double>* %"a'", <2 x double>* %b, <2 x double>* %"b'") #4 {
; CHECK: define internal { <2 x double>, <2 x double> } @augmented_loadmul(<2 x double>* %a, <2 x double>* %"a'", <2 x double>* %b, <2 x double>* %"b'")
; CHECK-NEXT: entry:
; CHECK-NEXT: %0 = load <2 x double>, <2 x double>* %a, align 16
; CHECK-NEXT: %1 = load <2 x double>, <2 x double>* %b, align 16
Expand All @@ -481,7 +481,7 @@ attributes #11 = { cold }
; CHECK-NEXT: ret { <2 x double>, <2 x double> } %.fca.1.insert
; CHECK-NEXT: }

; CHECK: define internal { { <2 x double>, i8*, i8*, <2 x double> }, <2 x double> } @augmented_subfn(<2 x double>* %W, <2 x double>* %"W'", double %B1, double %B2, i64 %row) #8 {
; CHECK: define internal { { <2 x double>, i8*, i8*, <2 x double> }, <2 x double> } @augmented_subfn(<2 x double>* %W, <2 x double>* %"W'", double %B1, double %B2, i64 %row)
; CHECK-NEXT: entry:
; CHECK-NEXT: %malloccall = tail call noalias nonnull dereferenceable(16) dereferenceable_or_null(16) i8* @malloc(i64 16)
; CHECK-NEXT: %"malloccall'mi" = tail call noalias nonnull dereferenceable(16) dereferenceable_or_null(16) i8* @malloc(i64 16)
Expand Down Expand Up @@ -509,7 +509,7 @@ attributes #11 = { cold }
; CHECK-NEXT: ret { { <2 x double>, i8*, i8*, <2 x double> }, <2 x double> } %.fca.1.insert
; CHECK-NEXT: }

; CHECK: define internal { double, double } @diffesubfn(<2 x double>* %W, <2 x double>* %"W'", double %B1, double %B2, i64 %row, <2 x double> %differeturn, { <2 x double>, i8*, i8*, <2 x double> } %tapeArg) #8 {
; CHECK: define internal { double, double } @diffesubfn(<2 x double>* %W, <2 x double>* %"W'", double %B1, double %B2, i64 %row, <2 x double> %differeturn, { <2 x double>, i8*, i8*, <2 x double> } %tapeArg)
; CHECK-NEXT: entry:
; CHECK-NEXT: %[[malloccall:.+]] = extractvalue { <2 x double>, i8*, i8*, <2 x double> } %tapeArg, 2
; CHECK-NEXT: %[[malloccallmi:.+]] = extractvalue { <2 x double>, i8*, i8*, <2 x double> } %tapeArg, 1
Expand Down
4 changes: 2 additions & 2 deletions enzyme/test/Enzyme/ReverseMode/alloclut.ll
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ entry:

declare double @__enzyme_autodiff(double (double, i32*)*, ...)

; CHECK: define internal { double } @diffef(double %x, i32* %z, double %differeturn) {
; CHECK: define internal { double } @diffef(double %x, i32* %z, double %differeturn)
; CHECK-NEXT: entry:
; CHECK-NEXT: %"a'ipa" = alloca [2 x double]
; CHECK-NEXT: store [2 x double] zeroinitializer, [2 x double]* %"a'ipa"
Expand Down Expand Up @@ -123,4 +123,4 @@ declare double @__enzyme_autodiff(double (double, i32*)*, ...)
; CHECK: mergeinvertloop1_exit: ; preds = %loop1
; CHECK-NEXT: %"g1'ipg_unwrap" = getelementptr [2 x double], [2 x double]* %"a'ipa", i64 0, i32 1
; CHECK-NEXT: br label %invertcleanup
; CHECK-NEXT: }
; CHECK-NEXT: }
Loading

0 comments on commit 0517244

Please sign in to comment.