Skip to content

Commit bb0a60e

Browse files
wsmosesZuseZ4
andauthored
Begin fixing LLVM 14 tests (rust-lang#639)
* fix most of the LLVM 14 tests Co-authored-by: Manuel Drehwald <[email protected]>
1 parent d9cfcd6 commit bb0a60e

40 files changed

+90
-75
lines changed

enzyme/Enzyme/Enzyme.cpp

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -686,6 +686,20 @@ class Enzyme : public ModulePass {
686686
continue;
687687
} else if (*metaString == "enzyme_dupnoneed") {
688688
ty = DIFFE_TYPE::DUP_NONEED;
689+
} else if (*metaString == "enzyme_dupnoneedv") {
690+
ty = DIFFE_TYPE::DUP_NONEED;
691+
++i;
692+
Value *offset_arg = CI->getArgOperand(i);
693+
if (offset_arg->getType()->isIntegerTy()) {
694+
batchOffset[i + 1] = offset_arg;
695+
} else {
696+
EmitFailure("IllegalVectorOffset", CI->getDebugLoc(), CI,
697+
"enzyme_batch must be followd by an integer "
698+
"offset.",
699+
*CI->getArgOperand(i), " in", *CI);
700+
return false;
701+
}
702+
continue;
689703
} else if (*metaString == "enzyme_out") {
690704
ty = DIFFE_TYPE::OUT_DIFF;
691705
} else if (*metaString == "enzyme_const") {
@@ -720,7 +734,8 @@ class Enzyme : public ModulePass {
720734
continue;
721735
} else {
722736
EmitFailure("IllegalDiffeType", CI->getDebugLoc(), CI,
723-
"illegal enzyme metadata classification ", *CI);
737+
"illegal enzyme metadata classification ", *CI,
738+
*metaString);
724739
return false;
725740
}
726741
if (sizeOnly) {

enzyme/Enzyme/Utils.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -364,7 +364,7 @@ Function *getOrInsertCheckedFree(Module &M, CallInst *call, Type *Ty,
364364
CI->setDebugLoc(DebugLoc);
365365

366366
if (width > 1) {
367-
Value *checkResult = EntryBuilder.getTrue();
367+
Value *checkResult = nullptr;
368368
BasicBlock *free1 = BasicBlock::Create(M.getContext(), "free1", F);
369369
IRBuilder<> Free1Builder(free1);
370370

@@ -375,7 +375,9 @@ Function *getOrInsertCheckedFree(Module &M, CallInst *call, Type *Ty,
375375
if (i < width - 1) {
376376
Argument *nextShadow = F->arg_begin() + i + 2;
377377
Value *isNotEqual = Free0Builder.CreateICmpNE(shadow, nextShadow);
378-
checkResult = Free0Builder.CreateAnd(isNotEqual, checkResult);
378+
checkResult = checkResult
379+
? Free0Builder.CreateAnd(isNotEqual, checkResult)
380+
: isNotEqual;
379381

380382
CallInst *CI = Free1Builder.CreateCall(FreeTy, Free, {nextShadow});
381383
CI->setAttributes(FreeAttributes);

enzyme/test/Enzyme/ForwardMode/sumsimple.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ attributes #0 = { noinline nounwind uwtable }
3939

4040
; CHECK: define internal void @fwddiffef(double* %x, double* %"x'", double** %y, double** %"y'", i64 %n)
4141
; CHECK-NEXT: entry:
42-
; CHECK-NEXT: %0 = add nuw i64 %n, 1
42+
; CHECK-NEXT: %0 = add {{(nuw )?}}i64 %n, 1
4343
; CHECK-NEXT: br label %for.cond
4444

4545
; CHECK: for.cond: ; preds = %for.body, %entry

enzyme/test/Enzyme/ForwardMode/sumsimpleoptnone.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ attributes #0 = { noinline nounwind uwtable optnone }
3939

4040
; CHECK: define internal void @fwddiffef(double* %x, double* %"x'", double** %y, double** %"y'", i64 %n)
4141
; CHECK-NEXT: entry:
42-
; CHECK-NEXT: %0 = add nuw i64 %n, 1
42+
; CHECK-NEXT: %0 = add {{(nuw )?}}i64 %n, 1
4343
; CHECK-NEXT: br label %for.cond
4444

4545
; CHECK: for.cond: ; preds = %for.body, %entry

enzyme/test/Enzyme/ForwardMode/vecsquare.ll

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,9 @@ entry:
3232
; CHECK-NEXT: %2 = fmul fast <4 x float> %1, %x
3333
; CHECK-NEXT: %3 = fmul fast <4 x float> %sq, %"x'"
3434
; CHECK-NEXT: %4 = fadd fast <4 x float> %2, %3
35-
; CHECK-NEXT: %[[i5:.+]] = extractelement <4 x float> %1, i32 1
36-
; CHECK-NEXT: %[[i6:.+]] = extractelement <4 x float> %4, i32 0
37-
; CHECK-NEXT: %[[i7:.+]] = extractelement <4 x float> %4, i32 1
35+
; CHECK-NEXT: %[[i5:.+]] = extractelement <4 x float> %1, {{(i32|i64)}} 1
36+
; CHECK-NEXT: %[[i6:.+]] = extractelement <4 x float> %4, {{(i32|i64)}} 0
37+
; CHECK-NEXT: %[[i7:.+]] = extractelement <4 x float> %4, {{(i32|i64)}} 1
3838
; CHECK-NEXT: %[[i8:.+]] = insertvalue { float, float, float } zeroinitializer, float %[[i5]], 0
3939
; CHECK-NEXT: %[[i9:.+]] = insertvalue { float, float, float } %[[i8]], float %[[i6]], 1
4040
; CHECK-NEXT: %[[i10:.+]] = insertvalue { float, float, float } %[[i9]], float %[[i7]], 2

enzyme/test/Enzyme/ForwardModeSplit/sumsimple.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ attributes #0 = { noinline nounwind uwtable }
4141
; CHECK-NEXT: entry:
4242
; CHECK-NEXT: %0 = bitcast i8* %tapeArg to double***
4343
; CHECK-NEXT: %truetape = load double**, double*** %0
44-
; CHECK-NEXT: %1 = add nuw i64 %n, 1
44+
; CHECK-NEXT: %1 = add {{(nuw )?}}i64 %n, 1
4545
; CHECK-NEXT: br label %for.cond
4646

4747
; CHECK: for.cond: ; preds = %for.body, %entry

enzyme/test/Enzyme/ForwardModeSplit/sumsimpleoptnone.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ attributes #0 = { noinline nounwind uwtable optnone }
4141
; CHECK-NEXT: entry:
4242
; CHECK-NEXT: %0 = bitcast i8* %tapeArg to double***
4343
; CHECK-NEXT: %truetape = load double**, double*** %0
44-
; CHECK-NEXT: %1 = add nuw i64 %n, 1
44+
; CHECK-NEXT: %1 = add {{(nuw )?}}i64 %n, 1
4545
; CHECK-NEXT: br label %for.cond
4646

4747
; CHECK: for.cond: ; preds = %for.body, %entry

enzyme/test/Enzyme/ForwardModeSplit/vecsquare.ll

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,9 +32,9 @@ entry:
3232
; CHECK-NEXT: %[[i2:.+]] = fmul fast <4 x float> %[[i1]], %x
3333
; CHECK-NEXT: %[[i3:.+]] = fmul fast <4 x float> %sq, %"x'"
3434
; CHECK-NEXT: %[[i4:.+]] = fadd fast <4 x float> %[[i2]], %[[i3]]
35-
; CHECK-NEXT: %[[i5:.+]] = extractelement <4 x float> %[[i1]], i32 1
36-
; CHECK-NEXT: %[[i6:.+]] = extractelement <4 x float> %[[i4]], i32 0
37-
; CHECK-NEXT: %[[i7:.+]] = extractelement <4 x float> %[[i4]], i32 1
35+
; CHECK-NEXT: %[[i5:.+]] = extractelement <4 x float> %[[i1]], {{(i32|i64)?}} 1
36+
; CHECK-NEXT: %[[i6:.+]] = extractelement <4 x float> %[[i4]], {{(i32|i64)?}} 0
37+
; CHECK-NEXT: %[[i7:.+]] = extractelement <4 x float> %[[i4]], {{(i32|i64)?}} 1
3838
; CHECK-NEXT: %[[i8:.+]] = insertvalue { float, float, float } zeroinitializer, float %[[i5]], 0
3939
; CHECK-NEXT: %[[i9:.+]] = insertvalue { float, float, float } %[[i8]], float %[[i6]], 1
4040
; CHECK-NEXT: %[[i10:.+]] = insertvalue { float, float, float } %[[i9]], float %[[i7]], 2

enzyme/test/Enzyme/ForwardModeVector/sumsimple.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ attributes #0 = { noinline nounwind uwtable }
4141

4242
; CHECK: define {{[^@]+}}@fwddiffe3f(double* [[X:%.*]], [3 x double*] %"x'", double** [[Y:%.*]], [3 x double**] %"y'", i64 [[N:%.*]])
4343
; CHECK-NEXT: entry:
44-
; CHECK-NEXT: [[TMP0:%.*]] = add nuw i64 [[N]], 1
44+
; CHECK-NEXT: [[TMP0:%.*]] = add {{(nuw )?}}i64 [[N]], 1
4545
; CHECK-NEXT: br label [[FOR_COND:%.*]]
4646
; CHECK: for.cond:
4747
; CHECK-NEXT: [[IV:%.*]] = phi i64 [ [[IV_NEXT:%.*]], [[FOR_BODY:%.*]] ], [ 0, [[ENTRY:%.*]] ]

enzyme/test/Enzyme/ForwardModeVector/sumsimpleoptnone.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ attributes #0 = { noinline nounwind uwtable optnone }
4141

4242
; CHECK: define {{[^@]+}}@fwddiffe3f(double* [[X:%.*]], [3 x double*] %"x'", double** [[Y:%.*]], [3 x double**] %"y'", i64 [[N:%.*]])
4343
; CHECK-NEXT: entry:
44-
; CHECK-NEXT: [[TMP0:%.*]] = add nuw i64 [[N]], 1
44+
; CHECK-NEXT: [[TMP0:%.*]] = add {{(nuw )?}}i64 [[N]], 1
4545
; CHECK-NEXT: br label [[FOR_COND:%.*]]
4646
; CHECK: for.cond:
4747
; CHECK-NEXT: [[IV:%.*]] = phi i64 [ [[IV_NEXT:%.*]], [[FOR_BODY:%.*]] ], [ 0, [[ENTRY:%.*]] ]

enzyme/test/Enzyme/ReverseMode/Faddeeva_erf.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ declare { double, double } @__enzyme_autodiff({ double, double } ({ double, doub
4343
; CHECK-DAG: %[[a21:.+]] = fmul fast double %14, %17
4444
; CHECK-DAG: %[[a22:.+]] = fmul fast double %15, %16
4545
; CHECK-NEXT: %23 = fadd fast double %[[a22]], %[[a21]]
46-
; CHECK-NEXT: %.fca.0.insert5 = insertvalue { double, double } undef, double %20, 0
46+
; CHECK-NEXT: %.fca.0.insert5 = insertvalue { double, double } {{(undef|poison)}}, double %20, 0
4747
; CHECK-NEXT: %.fca.1.insert8 = insertvalue { double, double } %.fca.0.insert5, double %23, 1
4848
; CHECK-NEXT: %24 = insertvalue { { double, double } } undef, { double, double } %.fca.1.insert8, 0
4949
; CHECK-NEXT: ret { { double, double } } %24

enzyme/test/Enzyme/ReverseMode/Faddeeva_erfc.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ declare { double, double } @__enzyme_autodiff({ double, double } ({ double, doub
4343
; CHECK-DAG: %[[a21:.+]] = fmul fast double %14, %17
4444
; CHECK-DAG: %[[a22:.+]] = fmul fast double %15, %16
4545
; CHECK-NEXT: %23 = fadd fast double %[[a22]], %[[a21]]
46-
; CHECK-NEXT: %.fca.0.insert5 = insertvalue { double, double } undef, double %20, 0
46+
; CHECK-NEXT: %.fca.0.insert5 = insertvalue { double, double } {{(undef|poison)}}, double %20, 0
4747
; CHECK-NEXT: %.fca.1.insert8 = insertvalue { double, double } %.fca.0.insert5, double %23, 1
4848
; CHECK-NEXT: %24 = insertvalue { { double, double } } undef, { double, double } %.fca.1.insert8, 0
4949
; CHECK-NEXT: ret { { double, double } } %24

enzyme/test/Enzyme/ReverseMode/Faddeeva_erfi.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ declare { double, double } @__enzyme_autodiff({ double, double } ({ double, doub
4141
; CHECK-DAG: %[[i21:.+]] = fmul fast double %[[i14]], %[[i17]]
4242
; CHECK-DAG: %[[i22:.+]] = fmul fast double %[[i15]], %[[i16]]
4343
; CHECK-NEXT: %[[i23:.+]] = fadd fast double %[[i22]], %[[i21]]
44-
; CHECK-NEXT: %.fca.0.insert5 = insertvalue { double, double } undef, double %[[i20]], 0
44+
; CHECK-NEXT: %.fca.0.insert5 = insertvalue { double, double } {{(undef|poison)}}, double %[[i20]], 0
4545
; CHECK-NEXT: %.fca.1.insert8 = insertvalue { double, double } %.fca.0.insert5, double %[[i23]], 1
4646
; CHECK-NEXT: %[[i24:.+]] = insertvalue { { double, double } } undef, { double, double } %.fca.1.insert8, 0
4747
; CHECK-NEXT: ret { { double, double } } %[[i24]]

enzyme/test/Enzyme/ReverseMode/allocacache.ll

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -476,7 +476,7 @@ attributes #11 = { cold }
476476
; CHECK-NEXT: %0 = load <2 x double>, <2 x double>* %a, align 16
477477
; CHECK-NEXT: %1 = load <2 x double>, <2 x double>* %b, align 16
478478
; CHECK-NEXT: %mul.i = fmul <2 x double> %0, %1
479-
; CHECK-NEXT: %.fca.0.insert = insertvalue { <2 x double>, <2 x double> } undef, <2 x double> %0, 0
479+
; CHECK-NEXT: %.fca.0.insert = insertvalue { <2 x double>, <2 x double> } {{(undef|poison)}}, <2 x double> %0, 0
480480
; CHECK-NEXT: %.fca.1.insert = insertvalue { <2 x double>, <2 x double> } %.fca.0.insert, <2 x double> %mul.i, 1
481481
; CHECK-NEXT: ret { <2 x double>, <2 x double> } %.fca.1.insert
482482
; CHECK-NEXT: }
@@ -490,9 +490,9 @@ attributes #11 = { cold }
490490
; CHECK-NEXT: %Bref = bitcast i8* %malloccall to <2 x double>*
491491
; CHECK-NEXT: %W34p = getelementptr inbounds <2 x double>, <2 x double>* %W, i64 1
492492
; CHECK-NEXT: %W34 = load <2 x double>, <2 x double>* %W34p, align 16
493-
; CHECK-NEXT: %preb1 = insertelement <2 x double> undef, double %B1, i32 0
493+
; CHECK-NEXT: %preb1 = insertelement <2 x double> undef, double %B1, {{(i32|i64)}} 0
494494
; CHECK-NEXT: %B11 = shufflevector <2 x double> %preb1, <2 x double> {{(undef|poison)}}, <2 x i32> zeroinitializer
495-
; CHECK-NEXT: %preb2 = insertelement <2 x double> undef, double %B2, i32 0
495+
; CHECK-NEXT: %preb2 = insertelement <2 x double> undef, double %B2, {{(i32|i64)}} 0
496496
; CHECK-NEXT: %B22 = shufflevector <2 x double> %preb2, <2 x double> {{(undef|poison)}}, <2 x i32> zeroinitializer
497497
; CHECK-NEXT: store <2 x double> %B11, <2 x double>* %Bref, align 16
498498
; CHECK-NEXT: %call_augmented = call { <2 x double>, <2 x double> } @augmented_loadmul(<2 x double>* %W, <2 x double>* %"W'", <2 x double>*{{( nonnull)?}} %Bref, <2 x double>*{{( nonnull)?}} %"Bref'ipc")
@@ -501,7 +501,7 @@ attributes #11 = { cold }
501501
; CHECK-NEXT: %mul = fmul <2 x double> %W34, %B22
502502
; CHECK-NEXT: %add = fadd <2 x double> %mul, %call
503503

504-
; CHECK-NEXT: %.fca.0.0.insert = insertvalue { { <2 x double>, i8*, i8*, <2 x double> }, <2 x double> } undef, <2 x double> %subcache, 0, 0
504+
; CHECK-NEXT: %.fca.0.0.insert = insertvalue { { <2 x double>, i8*, i8*, <2 x double> }, <2 x double> } {{(undef|poison)}}, <2 x double> %subcache, 0, 0
505505
; CHECK-NEXT: %.fca.0.1.insert = insertvalue { { <2 x double>, i8*, i8*, <2 x double> }, <2 x double> } %.fca.0.0.insert, i8* %"malloccall'mi", 0, 1
506506
; CHECK-NEXT: %.fca.0.2.insert = insertvalue { { <2 x double>, i8*, i8*, <2 x double> }, <2 x double> } %.fca.0.1.insert, i8* %malloccall, 0, 2
507507
; CHECK-NEXT: %.fca.0.3.insert = insertvalue { { <2 x double>, i8*, i8*, <2 x double> }, <2 x double> } %.fca.0.2.insert, <2 x double> %W34, 0, 3
@@ -519,7 +519,7 @@ attributes #11 = { cold }
519519

520520
; CHECK-NEXT: %[[W34:.+]] = extractvalue { <2 x double>, i8*, i8*, <2 x double> } %tapeArg, 3
521521

522-
; CHECK-NEXT: %preb2 = insertelement <2 x double> undef, double %B2, i32 0
522+
; CHECK-NEXT: %preb2 = insertelement <2 x double> undef, double %B2, {{(i32|i64)}} 0
523523
; CHECK-NEXT: %B22 = shufflevector <2 x double> %preb2, <2 x double> {{(undef|poison)}}, <2 x i32> zeroinitializer
524524
; CHECK-NEXT: %[[loadmultape:.+]] = extractvalue { <2 x double>, i8*, i8*, <2 x double> } %tapeArg, 0
525525
; CHECK-NEXT: %m0diffeW34 = fmul fast <2 x double> %B22, %differeturn
@@ -529,11 +529,11 @@ attributes #11 = { cold }
529529
; CHECK-NEXT: call void @diffeloadmul(<2 x double>* %W, <2 x double>* %"W'", <2 x double>* %[[Bref]], <2 x double>* %[[Brefipc]], <2 x double> %differeturn, <2 x double> %[[loadmultape]])
530530
; CHECK-NEXT: %[[lbref:.+]] = load <2 x double>, <2 x double>* %[[Brefipc]], align 16
531531
; CHECK-NEXT: store <2 x double> zeroinitializer, <2 x double>* %[[Brefipc]], align 16
532-
; CHECK-NEXT: %[[lb221:.+]] = extractelement <2 x double> %m1diffeB22, i32 1
533-
; CHECK-NEXT: %[[lb220:.+]] = extractelement <2 x double> %m1diffeB22, i32 0
532+
; CHECK-NEXT: %[[lb221:.+]] = extractelement <2 x double> %m1diffeB22, {{(i32|i64)}} 1
533+
; CHECK-NEXT: %[[lb220:.+]] = extractelement <2 x double> %m1diffeB22, {{(i32|i64)}} 0
534534
; CHECK-NEXT: %[[addb22:.+]] = fadd fast double %[[lb221]], %[[lb220]]
535-
; CHECK-NEXT: %[[bref1:.+]] = extractelement <2 x double> %[[lbref]], i32 1
536-
; CHECK-NEXT: %[[bref0:.+]] = extractelement <2 x double> %[[lbref]], i32 0
535+
; CHECK-NEXT: %[[bref1:.+]] = extractelement <2 x double> %[[lbref]], {{(i32|i64)}} 1
536+
; CHECK-NEXT: %[[bref0:.+]] = extractelement <2 x double> %[[lbref]], {{(i32|i64)}} 0
537537
; CHECK-NEXT: %[[addbref:.+]] = fadd fast double %[[bref1]], %[[bref0]]
538538
; CHECK-NEXT: %[[lW34:.+]] = load <2 x double>, <2 x double>* %[[W34pipge]], align 16
539539
; CHECK-NEXT: %[[addW34:.+]] = fadd fast <2 x double> %[[lW34]], %m0diffeW34

enzyme/test/Enzyme/ReverseMode/alloctomalloc.ll

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -487,7 +487,7 @@ attributes #9 = { cold }
487487

488488
; CHECK: define internal { <2 x double>*, <2 x double>* } @augmented_subcast(<2 x double>* %tmp.i, <2 x double>* %"tmp.i'")
489489
; CHECK-NEXT: entry:
490-
; CHECK-NEXT: %.fca.0.insert = insertvalue { <2 x double>*, <2 x double>* } undef, <2 x double>* %tmp.i, 0
490+
; CHECK-NEXT: %.fca.0.insert = insertvalue { <2 x double>*, <2 x double>* } {{(undef|poison)}}, <2 x double>* %tmp.i, 0
491491
; CHECK-NEXT: %.fca.1.insert = insertvalue { <2 x double>*, <2 x double>* } %.fca.0.insert, <2 x double>* %"tmp.i'", 1
492492
; CHECK-NEXT: ret { <2 x double>*, <2 x double>* } %.fca.1.insert
493493
; CHECK-NEXT: }
@@ -506,22 +506,22 @@ attributes #9 = { cold }
506506
; CHECK-NEXT: %W12p = bitcast %"class.Eigen::Matrix"* %W to <2 x double>*
507507
; CHECK-NEXT: %W12 = load <2 x double>, <2 x double>* %W12p, align 16
508508
; CHECK-NEXT: %B1 = load double, double* %B, align 8
509-
; CHECK-NEXT: %preb1 = insertelement <2 x double> undef, double %B1, i32 0
509+
; CHECK-NEXT: %preb1 = insertelement <2 x double> undef, double %B1, {{(i32|i64)}} 0
510510
; CHECK-NEXT: %B11 = shufflevector <2 x double> %preb1, <2 x double> {{(undef|poison)?}}, <2 x i32> zeroinitializer
511511
; CHECK-NEXT: %mul = fmul <2 x double> %W12, %B11
512512
; CHECK-NEXT: %W34p = getelementptr inbounds %"class.Eigen::Matrix", %"class.Eigen::Matrix"* %W, i64 0, i32 0, i32 0, i32 0, i32 0, i64 2
513513
; CHECK-NEXT: %0 = bitcast double* %W34p to <2 x double>*
514514
; CHECK-NEXT: %W34 = load <2 x double>, <2 x double>* %0, align 16
515515
; CHECK-NEXT: %B2p = getelementptr inbounds double, double* %B, i64 1
516516
; CHECK-NEXT: %B2 = load double, double* %B2p, align 8
517-
; CHECK-NEXT: %preb2 = insertelement <2 x double> undef, double %B2, i32 0
517+
; CHECK-NEXT: %preb2 = insertelement <2 x double> undef, double %B2, {{(i32|i64)}} 0
518518
; CHECK-NEXT: %B22 = shufflevector <2 x double> %preb2, <2 x double> {{(undef|poison)?}}, <2 x i32> zeroinitializer
519519
; CHECK-NEXT: %mul2 = fmul <2 x double> %W34, %B22
520520
; CHECK-NEXT: %result = fadd <2 x double> %mul2, %mul
521521
; CHECK-NEXT: store <2 x double> %result, <2 x double>* %subcast, align 16
522522
; CHECK-NEXT: %a13 = load <2 x double>, <2 x double>* %tmp.i, align 16
523523
; CHECK-NEXT: store <2 x double> %a13, <2 x double>* %dst, align 16
524-
; CHECK-NEXT: %.fca.0.insert = insertvalue { <2 x double>*, i8*, i8*, <2 x double>, double, <2 x double>, double } undef, <2 x double>* %"subcast'ac", 0
524+
; CHECK-NEXT: %.fca.0.insert = insertvalue { <2 x double>*, i8*, i8*, <2 x double>, double, <2 x double>, double } {{(undef|poison)}}, <2 x double>* %"subcast'ac", 0
525525
; CHECK-NEXT: %.fca.1.insert = insertvalue { <2 x double>*, i8*, i8*, <2 x double>, double, <2 x double>, double } %.fca.0.insert, i8* %"malloccall'mi", 1
526526
; CHECK-NEXT: %.fca.2.insert = insertvalue { <2 x double>*, i8*, i8*, <2 x double>, double, <2 x double>, double } %.fca.1.insert, i8* %malloccall, 2
527527
; CHECK-NEXT: %.fca.3.insert = insertvalue { <2 x double>*, i8*, i8*, <2 x double>, double, <2 x double>, double } %.fca.2.insert, <2 x double> %W12, 3
@@ -548,7 +548,7 @@ attributes #9 = { cold }
548548

549549

550550
; CHECK-NEXT: %B1 = extractvalue { <2 x double>*, i8*, i8*, <2 x double>, double, <2 x double>, double } %tapeArg, 4
551-
; CHECK-NEXT: %preb1 = insertelement <2 x double> undef, double %B1, i32 0
551+
; CHECK-NEXT: %preb1 = insertelement <2 x double> undef, double %B1, {{(i32|i64)}} 0
552552
; CHECK-NEXT: %B11 = shufflevector <2 x double> %preb1, <2 x double> {{(undef|poison)?}}, <2 x i32> zeroinitializer
553553

554554
; CHECK-NEXT: %[[W34p_ipge:.+]] = getelementptr inbounds %"class.Eigen::Matrix", %"class.Eigen::Matrix"* %"W'", i64 0, i32 0, i32 0, i32 0, i32 0, i64 2
@@ -559,7 +559,7 @@ attributes #9 = { cold }
559559
; CHECK-NEXT: %[[B2p_ipge:.+]] = getelementptr inbounds double, double* %"B'", i64 1
560560

561561
; CHECK-NEXT: %B2 = extractvalue { <2 x double>*, i8*, i8*, <2 x double>, double, <2 x double>, double } %tapeArg, 6
562-
; CHECK-NEXT: %preb2 = insertelement <2 x double> undef, double %B2, i32 0
562+
; CHECK-NEXT: %preb2 = insertelement <2 x double> undef, double %B2, {{(i32|i64)}} 0
563563
; CHECK-NEXT: %B22 = shufflevector <2 x double> %preb2, <2 x double> {{(undef|poison)?}}, <2 x i32> zeroinitializer
564564

565565
; CHECK-NEXT: %[[dstload:.+]] = load <2 x double>, <2 x double>* %"dst'", align 16
@@ -574,8 +574,8 @@ attributes #9 = { cold }
574574
; CHECK-NEXT: store <2 x double> zeroinitializer, <2 x double>* %[[dsubcast]], align 16
575575
; CHECK-NEXT: %m0diffeW34 = fmul fast <2 x double> %[[loadsc]], %B22
576576
; CHECK-NEXT: %m1diffeB22 = fmul fast <2 x double> %[[loadsc]], %[[W34]]
577-
; CHECK-NEXT: %[[b221:.+]] = extractelement <2 x double> %m1diffeB22, i32 1
578-
; CHECK-NEXT: %[[b220:.+]] = extractelement <2 x double> %m1diffeB22, i32 0
577+
; CHECK-DAG: %[[b221:.+]] = extractelement <2 x double> %m1diffeB22, {{(i32|i64)}} 1
578+
; CHECK-DAG: %[[b220:.+]] = extractelement <2 x double> %m1diffeB22, {{(i32|i64)}} 0
579579
; CHECK-NEXT: %[[added:.+]] = fadd fast double %[[b221]], %[[b220]]
580580

581581
; CHECK-NEXT: %[[lb2p:.+]] = load double, double* %[[B2p_ipge]], align 8
@@ -589,8 +589,8 @@ attributes #9 = { cold }
589589

590590
; CHECK-NEXT: %m0diffeW12 = fmul fast <2 x double> %[[loadsc]], %B11
591591
; CHECK-NEXT: %m1diffeB11 = fmul fast <2 x double> %[[loadsc]], %[[W12]]
592-
; CHECK-NEXT: %12 = extractelement <2 x double> %m1diffeB11, i32 1
593-
; CHECK-NEXT: %13 = extractelement <2 x double> %m1diffeB11, i32 0
592+
; CHECK-NEXT: %12 = extractelement <2 x double> %m1diffeB11, {{(i32|i64)}} 1
593+
; CHECK-NEXT: %13 = extractelement <2 x double> %m1diffeB11, {{(i32|i64)}} 0
594594
; CHECK-NEXT: %14 = fadd fast double %12, %13
595595
; CHECK-NEXT: %15 = load double, double* %"B'", align 8
596596
; CHECK-NEXT: %16 = fadd fast double %15, %14

enzyme/test/Enzyme/ReverseMode/badconstmalloc.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -756,7 +756,7 @@ attributes #12 = { cold }
756756
; CHECK-NEXT: call void @llvm.memset.p0i8.i64(i8* {{(noundef )?}}nonnull align 1 dereferenceable(16) dereferenceable_or_null(16) %"call.i.i'mi", i8 0, i64 16, i1 false)
757757
; CHECK-NEXT: %"'ipc" = bitcast i8* %"call.i.i'mi" to double*
758758
; CHECK-NEXT: %0 = bitcast i8* %call.i.i to double*
759-
; CHECK-NEXT: %.fca.0.0.insert = insertvalue { { i8*, i8* }, double*, double* } undef, i8* %"call.i.i'mi", 0, 0
759+
; CHECK-NEXT: %.fca.0.0.insert = insertvalue { { i8*, i8* }, double*, double* } {{(undef|poison)}}, i8* %"call.i.i'mi", 0, 0
760760
; CHECK-NEXT: %.fca.0.1.insert = insertvalue { { i8*, i8* }, double*, double* } %.fca.0.0.insert, i8* %call.i.i, 0, 1
761761
; CHECK-NEXT: %.fca.1.insert = insertvalue { { i8*, i8* }, double*, double* } %.fca.0.1.insert, double* %0, 1
762762
; CHECK-NEXT: %.fca.2.insert = insertvalue { { i8*, i8* }, double*, double* } %.fca.1.insert, double* %"'ipc", 2

0 commit comments

Comments
 (0)