Created
December 30, 2023 05:11
-
-
Save ArbitRandomUser/31a457858911ea9101e9e3a59b08ca25 to your computer and use it in GitHub Desktop.
llvm IR from error
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
julia> Enzyme.autodiff(Reverse,Duplicated(df,make_zero(df)),Const,Duplicated(du,vecc),Duplicated(u,make_zero(u)),Duplicated(nnparams,dp),0.1) | |
┌ Warning: Using fallback BLAS replacements, performance may be degraded | |
└ @ Enzyme.Compiler ~/.julia/packages/GPUCompiler/U36Ed/src/utils.jl:59 | |
┌ Warning: Using fallback BLAS replacements, performance may be degraded | |
└ @ Enzyme.Compiler ~/.julia/packages/GPUCompiler/U36Ed/src/utils.jl:59 | |
ERROR: Enzyme compilation failed. | |
Current scope: | |
; Function Attrs: mustprogress willreturn | |
define internal fastcc void @preprocess_julia_set_params_12661({ i64, [2 x { i64, i64, {} addrspace(10)*, {} addrspace(10)* }], {} addrspace(10)* } addrspace(11)* nocapture noundef nonnull readonly align 8 dereferenceable(152) %0, {} addrspace(10)* noundef nonnull align 16 dereferenceable(40) %1) unnamed_addr #46 !dbg !7796 { | |
top: | |
%2 = call {}*** @julia.get_pgcstack() | |
%3 = call {}*** @julia.get_pgcstack() | |
%4 = call {}*** @julia.get_pgcstack() | |
%5 = call {}*** @julia.get_pgcstack() | |
%6 = call {}*** @julia.get_pgcstack() | |
%7 = call {}*** @julia.get_pgcstack() | |
%8 = call {}*** @julia.get_pgcstack() | |
%9 = bitcast {}*** %7 to {}** | |
%10 = getelementptr inbounds {}*, {}** %9, i64 -14 | |
%11 = getelementptr inbounds {}*, {}** %10, i64 16 | |
%12 = bitcast {}** %11 to i8** | |
%13 = load i8*, i8** %12, align 8 | |
%14 = call noalias nonnull dereferenceable(40) dereferenceable_or_null(40) {} addrspace(10)* @julia.gc_alloc_obj({}** %10, i64 40, {} addrspace(10)* addrspacecast ({}* inttoptr (i64 139845959120208 to {}*) to {} addrspace(10)*)), !enzyme_fromstack !410 | |
call void @zeroType.32({} addrspace(10)* %14, i8 0, i64 40), !enzyme_zerostack !58 | |
%15 = bitcast {} addrspace(10)* %14 to { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } addrspace(10)*, !enzyme_caststack !58 | |
%16 = bitcast {}*** %6 to {}** | |
%17 = getelementptr inbounds {}*, {}** %16, i64 -14 | |
%18 = getelementptr inbounds {}*, {}** %17, i64 16 | |
%19 = bitcast {}** %18 to i8** | |
%20 = load i8*, i8** %19, align 8 | |
%21 = call noalias nonnull dereferenceable(8) dereferenceable_or_null(8) {} addrspace(10)* @julia.gc_alloc_obj({}** %17, i64 8, {} addrspace(10)* addrspacecast ({}* inttoptr (i64 139844797289808 to {}*) to {} addrspace(10)*)), !enzyme_fromstack !410 | |
call void @zeroType.33({} addrspace(10)* %21, i8 0, i64 8), !enzyme_zerostack !58 | |
%22 = bitcast {} addrspace(10)* %21 to [1 x {} addrspace(10)*] addrspace(10)*, !enzyme_caststack !58 | |
%23 = call noalias nonnull dereferenceable(16) dereferenceable_or_null(16) i8* @malloc(i64 16), !enzyme_fromstack !410 | |
%newstruct49 = bitcast i8* %23 to [1 x [2 x i64]]*, !enzyme_caststack !58 | |
%24 = bitcast {}*** %5 to {}** | |
%25 = getelementptr inbounds {}*, {}** %24, i64 -14 | |
%26 = getelementptr inbounds {}*, {}** %25, i64 16 | |
%27 = bitcast {}** %26 to i8** | |
%28 = load i8*, i8** %27, align 8 | |
%29 = call noalias nonnull dereferenceable(40) dereferenceable_or_null(40) {} addrspace(10)* @julia.gc_alloc_obj({}** %25, i64 40, {} addrspace(10)* addrspacecast ({}* inttoptr (i64 139845959120208 to {}*) to {} addrspace(10)*)), !enzyme_fromstack !410 | |
call void @zeroType.34({} addrspace(10)* %29, i8 0, i64 40), !enzyme_zerostack !58 | |
%30 = bitcast {} addrspace(10)* %29 to { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } addrspace(10)*, !enzyme_caststack !58 | |
%31 = bitcast {}*** %8 to {}** | |
%32 = getelementptr inbounds {}*, {}** %31, i64 -14 | |
%33 = getelementptr inbounds {}*, {}** %32, i64 16 | |
%34 = bitcast {}** %33 to i8** | |
%35 = load i8*, i8** %34, align 8 | |
%36 = call noalias nonnull dereferenceable(56) dereferenceable_or_null(56) {} addrspace(10)* @julia.gc_alloc_obj({}** %32, i64 56, {} addrspace(10)* addrspacecast ({}* inttoptr (i64 139845959120464 to {}*) to {} addrspace(10)*)), !enzyme_fromstack !410 | |
call void @zeroType({} addrspace(10)* %36, i8 0, i64 56), !enzyme_zerostack !58 | |
%37 = bitcast {} addrspace(10)* %36 to { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] } addrspace(10)*, !enzyme_caststack !58 | |
%38 = bitcast {}*** %4 to {}** | |
%39 = getelementptr inbounds {}*, {}** %38, i64 -14 | |
%40 = getelementptr inbounds {}*, {}** %39, i64 16 | |
%41 = bitcast {}** %40 to i8** | |
%42 = load i8*, i8** %41, align 8 | |
%43 = call noalias nonnull dereferenceable(40) dereferenceable_or_null(40) {} addrspace(10)* @julia.gc_alloc_obj({}** %39, i64 40, {} addrspace(10)* addrspacecast ({}* inttoptr (i64 139845959120208 to {}*) to {} addrspace(10)*)), !enzyme_fromstack !410 | |
call void @zeroType.35({} addrspace(10)* %43, i8 0, i64 40), !enzyme_zerostack !58 | |
%44 = bitcast {} addrspace(10)* %43 to { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } addrspace(10)*, !enzyme_caststack !58 | |
%45 = call noalias nonnull dereferenceable(16) dereferenceable_or_null(16) i8* @malloc(i64 16), !enzyme_fromstack !410 | |
%newstruct11 = bitcast i8* %45 to [2 x i64]*, !enzyme_caststack !58 | |
%46 = bitcast {}*** %3 to {}** | |
%47 = getelementptr inbounds {}*, {}** %46, i64 -14 | |
%48 = getelementptr inbounds {}*, {}** %47, i64 16 | |
%49 = bitcast {}** %48 to i8** | |
%50 = load i8*, i8** %49, align 8 | |
%51 = call noalias nonnull dereferenceable(8) dereferenceable_or_null(8) {} addrspace(10)* @julia.gc_alloc_obj({}** %47, i64 8, {} addrspace(10)* addrspacecast ({}* inttoptr (i64 139844797289808 to {}*) to {} addrspace(10)*)), !enzyme_fromstack !410 | |
call void @zeroType.36({} addrspace(10)* %51, i8 0, i64 8), !enzyme_zerostack !58 | |
%52 = bitcast {} addrspace(10)* %51 to [1 x {} addrspace(10)*] addrspace(10)*, !enzyme_caststack !58 | |
%53 = call noalias nonnull dereferenceable(16) dereferenceable_or_null(16) i8* @malloc(i64 16), !enzyme_fromstack !410 | |
%newstruct5 = bitcast i8* %53 to [1 x [2 x i64]]*, !enzyme_caststack !58 | |
%54 = bitcast {}*** %2 to {}** | |
%55 = getelementptr inbounds {}*, {}** %54, i64 -14 | |
%56 = getelementptr inbounds {}*, {}** %55, i64 16 | |
%57 = bitcast {}** %56 to i8** | |
%58 = load i8*, i8** %57, align 8 | |
%59 = call noalias nonnull dereferenceable(40) dereferenceable_or_null(40) {} addrspace(10)* @julia.gc_alloc_obj({}** %55, i64 40, {} addrspace(10)* addrspacecast ({}* inttoptr (i64 139845959120208 to {}*) to {} addrspace(10)*)), !enzyme_fromstack !410 | |
call void @zeroType.37({} addrspace(10)* %59, i8 0, i64 40), !enzyme_zerostack !58 | |
%60 = bitcast {} addrspace(10)* %59 to { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } addrspace(10)*, !enzyme_caststack !58 | |
%61 = call {}*** @julia.get_pgcstack() #55 | |
%ptls_field205 = getelementptr inbounds {}**, {}*** %61, i64 2 | |
%62 = bitcast {}*** %ptls_field205 to i64*** | |
%ptls_load206207 = load i64**, i64*** %62, align 8, !tbaa !59 | |
%63 = getelementptr inbounds i64*, i64** %ptls_load206207, i64 2 | |
%safepoint = load i64*, i64** %63, align 8, !tbaa !63, !invariant.load !58 | |
fence syncscope("singlethread") seq_cst | |
call void @julia.safepoint(i64* %safepoint) #55, !dbg !7797 | |
fence syncscope("singlethread") seq_cst | |
%64 = getelementptr inbounds { i64, [2 x { i64, i64, {} addrspace(10)*, {} addrspace(10)* }], {} addrspace(10)* }, { i64, [2 x { i64, i64, {} addrspace(10)*, {} addrspace(10)* }], {} addrspace(10)* } addrspace(11)* %0, i64 0, i32 1, !dbg !7798 | |
%.not = icmp eq [2 x { i64, i64, {} addrspace(10)*, {} addrspace(10)* }] addrspace(11)* %64, null | |
br i1 %.not, label %guard_exit194, label %guard_pass193 | |
L9.L44_crit_edge: ; preds = %L583 | |
store i64 %arraysize, i64* %138, align 8, !dbg !7800, !tbaa !74, !alias.scope !76, !noalias !7802 | |
store i64 %arraysize10, i64* %139, align 8, !dbg !7800, !tbaa !74, !alias.scope !76, !noalias !7802 | |
store i64 %69, i64* %newstruct48.sroa.0.0..sroa_idx, align 8, !dbg !7805, !tbaa !74, !alias.scope !76, !noalias !7802 | |
store i64 %value_phi47, i64* %newstruct48.sroa.3.0..sroa_idx303, align 8, !dbg !7805, !tbaa !74, !alias.scope !76, !noalias !7802 | |
store i64 %113, i64* %newstruct.sroa.0.0..sroa_idx, align 8, !dbg !7808, !tbaa !74, !alias.scope !76, !noalias !7802 | |
store i64 %value_phi4, i64* %newstruct.sroa.3.0..sroa_idx305, align 8, !dbg !7808, !tbaa !74, !alias.scope !76, !noalias !7802 | |
br label %L44, !dbg !7810 | |
L44: ; preds = %guard_exit194, %L9.L44_crit_edge | |
%65 = addrspacecast [1 x [2 x i64]]* %newstruct5 to [1 x [2 x i64]] addrspace(11)*, !dbg !7810 | |
call fastcc void @julia_throw_boundserror_12561({} addrspace(10)* noundef nonnull align 16 dereferenceable(40) %1, [1 x [2 x i64]] addrspace(11)* nocapture nofree noundef nonnull readonly align 8 dereferenceable(16) %65) #56, !dbg !7810 | |
unreachable, !dbg !7810 | |
L47: ; preds = %L47.lr.ph, %L583 | |
%iv = phi i64 [ 0, %L47.lr.ph ], [ %iv.next, %L583 ] | |
%value_phi4360 = phi i64 [ %arraylen330, %L47.lr.ph ], [ %value_phi4, %L583 ] | |
%66 = phi i64 [ 1, %L47.lr.ph ], [ %113, %L583 ] | |
%67 = phi i64 [ 0, %L47.lr.ph ], [ %119, %L583 ] | |
%68 = phi i64 [ %arraylen330, %L47.lr.ph ], [ %118, %L583 ] | |
%69 = phi i64 [ %137, %L47.lr.ph ], [ %117, %L583 ] | |
%70 = phi {} addrspace(10)* [ %131, %L47.lr.ph ], [ %115, %L583 ] | |
%value_phi334 = phi { i64, i64, {} addrspace(10)*, {} addrspace(10)* } [ %guard_res196, %L47.lr.ph ], [ %value_phi77, %L583 ] | |
%71 = add i64 %iv, 2, !dbg !7800 | |
%iv.next = add nuw nsw i64 %iv, 1, !dbg !7800 | |
%72 = addrspacecast {} addrspace(10)* %70 to {} addrspace(10)* addrspace(11)*, !dbg !7800 | |
%arraysize_ptr = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %72, i64 3, !dbg !7800 | |
%73 = bitcast {} addrspace(10)* addrspace(11)* %arraysize_ptr to i64 addrspace(11)*, !dbg !7800 | |
%arraysize = load i64, i64 addrspace(11)* %73, align 8, !dbg !7800, !tbaa !63, !range !96, !invariant.load !58, !alias.scope !97, !noalias !98 | |
%arraysize_ptr9 = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %72, i64 4, !dbg !7800 | |
%74 = bitcast {} addrspace(10)* addrspace(11)* %arraysize_ptr9 to i64 addrspace(11)*, !dbg !7800 | |
%arraysize10 = load i64, i64 addrspace(11)* %74, align 8, !dbg !7800, !tbaa !63, !range !96, !invariant.load !58, !alias.scope !97, !noalias !98 | |
%75 = add nsw i64 %value_phi4360, 1, !dbg !7811 | |
%76 = sub i64 %75, %66, !dbg !7820 | |
%77 = call i64 @llvm.smax.i64(i64 %76, i64 noundef 0) #55, !dbg !7821 | |
%78 = mul i64 %arraysize10, %arraysize, !dbg !7826 | |
%.not213 = icmp eq i64 %78, %77, !dbg !7829 | |
br i1 %.not213, label %L150, label %L64, !dbg !7828 | |
L64: ; preds = %L47 | |
store i64 %arraysize, i64* %138, align 8, !dbg !7800, !tbaa !74, !alias.scope !76, !noalias !7802 | |
store i64 %arraysize10, i64* %139, align 8, !dbg !7800, !tbaa !74, !alias.scope !76, !noalias !7802 | |
%79 = addrspacecast [2 x i64]* %newstruct11 to [2 x i64] addrspace(11)*, !dbg !7828 | |
call fastcc void @julia__throw_dmrs_12678(i64 signext %77, [2 x i64] addrspace(11)* nocapture nofree noundef nonnull readonly align 8 dereferenceable(16) %79) #56, !dbg !7828 | |
unreachable, !dbg !7828 | |
L150: ; preds = %L47 | |
store {} addrspace(10)* %1, {} addrspace(10)* addrspace(10)* %.repack.repack, align 8, !dbg !7830, !noalias !7834 | |
call void ({} addrspace(10)*, ...) @julia.write_barrier({} addrspace(10)* %36, {} addrspace(10)* %1), !dbg !7830 | |
store i64 %66, i64 addrspace(10)* %.repack227, align 8, !dbg !7830, !noalias !7834 | |
store i64 %value_phi4360, i64 addrspace(10)* %.repack228, align 8, !dbg !7830, !noalias !7834 | |
store i64 %67, i64 addrspace(10)* %.repack.repack223, align 8, !dbg !7830, !noalias !7834 | |
store i64 1, i64 addrspace(10)* %.repack.repack225, align 8, !dbg !7830, !noalias !7834 | |
store i64 %arraysize, i64 addrspace(10)* %.repack219.repack, align 8, !dbg !7830, !noalias !7834 | |
store i64 %arraysize10, i64 addrspace(10)* %.repack219.repack230, align 8, !dbg !7830, !noalias !7834 | |
call fastcc void @julia_copyto__12690({} addrspace(10)* noundef nonnull align 16 dereferenceable(40) %70, { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] } addrspace(11)* nocapture noundef nonnull readonly align 8 dereferenceable(56) %140) #55, !dbg !7830 | |
%arraylen51.pre = load i64, i64 addrspace(11)* %arraylen_ptr6, align 8, !dbg !7835, !tbaa !158, !range !96, !alias.scope !161, !noalias !162 | |
%80 = extractvalue { i64, i64, {} addrspace(10)*, {} addrspace(10)* } %value_phi334, 3, !dbg !7841 | |
%81 = addrspacecast {} addrspace(10)* %80 to { i8 addrspace(13)*, i64, i16, i16, i32 } addrspace(11)*, !dbg !7843 | |
%arraylen_ptr45 = getelementptr inbounds { i8 addrspace(13)*, i64, i16, i16, i32 }, { i8 addrspace(13)*, i64, i16, i16, i32 } addrspace(11)* %81, i64 0, i32 1, !dbg !7843 | |
%arraylen46 = load i64, i64 addrspace(11)* %arraylen_ptr45, align 8, !dbg !7843, !tbaa !158, !range !96, !alias.scope !161, !noalias !162 | |
%82 = add i64 %arraylen46, %68, !dbg !7844 | |
%.not232 = icmp sgt i64 %69, %82, !dbg !7845 | |
%value_phi47 = select i1 %.not232, i64 %68, i64 %82, !dbg !7847 | |
%83 = icmp slt i64 %value_phi47, %69, !dbg !7850 | |
%84 = icmp ult i64 %68, %arraylen51.pre, !dbg !7854 | |
%85 = add i64 %value_phi47, -1, !dbg !7856 | |
%86 = icmp ult i64 %85, %arraylen51.pre, !dbg !7854 | |
%87 = and i1 %84, %86, !dbg !7857 | |
%88 = or i1 %83, %87, !dbg !7858 | |
br i1 %88, label %L414, label %L411, !dbg !7840 | |
L411: ; preds = %L150 | |
store i64 %69, i64* %newstruct48.sroa.0.0..sroa_idx, align 8, !dbg !7805, !tbaa !74, !alias.scope !76, !noalias !7802 | |
store i64 %value_phi47, i64* %newstruct48.sroa.3.0..sroa_idx303, align 8, !dbg !7805, !tbaa !74, !alias.scope !76, !noalias !7802 | |
%89 = addrspacecast [1 x [2 x i64]]* %newstruct49 to [1 x [2 x i64]] addrspace(11)*, !dbg !7840 | |
call fastcc void @julia_throw_boundserror_12561({} addrspace(10)* noundef nonnull align 16 dereferenceable(40) %1, [1 x [2 x i64]] addrspace(11)* nocapture nofree noundef nonnull readonly align 8 dereferenceable(16) %89) #56, !dbg !7840 | |
unreachable, !dbg !7840 | |
L414: ; preds = %L150 | |
%90 = sub i64 %value_phi47, %69, !dbg !7859 | |
%91 = add i64 %90, 1, !dbg !7868 | |
%92 = call i64 @llvm.smax.i64(i64 %91, i64 noundef 0) #55, !dbg !7869 | |
%93 = icmp eq i64 %arraylen46, %92, !dbg !7874 | |
%94 = icmp eq i64 %92, 1, !dbg !7876 | |
%value_phi63.in = or i1 %93, %94, !dbg !7876 | |
br i1 %value_phi63.in, label %L453, label %L435, !dbg !7877 | |
L435: ; preds = %L414 | |
%95 = call fastcc [1 x {} addrspace(10)*] @julia_DimensionMismatch_12563() #55, !dbg !7877 | |
%current_task105271 = getelementptr inbounds {}**, {}*** %61, i64 -14, !dbg !7877 | |
%current_task105 = bitcast {}*** %current_task105271 to {}**, !dbg !7877 | |
%box = call noalias nonnull dereferenceable(8) "enzyme_inactive" {} addrspace(10)* @julia.gc_alloc_obj({}** nonnull %current_task105, i64 noundef 8, {} addrspace(10)* noundef addrspacecast ({}* inttoptr (i64 139848568239456 to {}*) to {} addrspace(10)*)) #57, !dbg !7877 | |
%96 = bitcast {} addrspace(10)* %box to [1 x {} addrspace(10)*] addrspace(10)*, !dbg !7877 | |
%97 = getelementptr [1 x {} addrspace(10)*], [1 x {} addrspace(10)*] addrspace(10)* %96, i64 0, i64 0, !dbg !7877 | |
store {} addrspace(10)* addrspacecast ({}* inttoptr (i64 139848689378496 to {}*) to {} addrspace(10)*), {} addrspace(10)* addrspace(10)* %97, align 8, !dbg !7877, !tbaa !220, !alias.scope !224, !noalias !7878 | |
%98 = addrspacecast {} addrspace(10)* %box to {} addrspace(12)*, !dbg !7877 | |
call void @ijl_throw({} addrspace(12)* %98) #56, !dbg !7877 | |
unreachable, !dbg !7877 | |
L453: ; preds = %L414 | |
br i1 %93, label %L468, label %L479, !dbg !7879 | |
L468: ; preds = %L453 | |
%99 = icmp ult i64 %90, 9223372036854775807, !dbg !7881 | |
br i1 %99, label %L475, label %L569, !dbg !7883 | |
L475: ; preds = %L468 | |
store {} addrspace(10)* %1, {} addrspace(10)* addrspace(10)* %.repack, align 8, !dbg !7885, !noalias !7834 | |
call void ({} addrspace(10)*, ...) @julia.write_barrier({} addrspace(10)* %29, {} addrspace(10)* %1), !dbg !7885 | |
store i64 %69, i64 addrspace(10)* %.repack253, align 8, !dbg !7885, !noalias !7834 | |
store i64 %value_phi47, i64 addrspace(10)* %.repack254, align 8, !dbg !7885, !noalias !7834 | |
store i64 %68, i64 addrspace(10)* %.repack249, align 8, !dbg !7885, !noalias !7834 | |
store i64 1, i64 addrspace(10)* %.repack251, align 8, !dbg !7885, !noalias !7834 | |
%100 = addrspacecast { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } addrspace(10)* %15 to { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }*, !dbg !7885 | |
%101 = addrspacecast [1 x {} addrspace(10)*] addrspace(10)* %22 to [1 x {} addrspace(10)*]*, !dbg !7885 | |
call fastcc void @julia_unalias_12576({ {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }* noalias nocapture nofree noundef nonnull writeonly sret({ {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }) align 8 dereferenceable(40) %100, [1 x {} addrspace(10)*]* noalias nocapture nofree noundef nonnull writeonly align 8 dereferenceable(8) "enzymejl_returnRoots" %101, {} addrspace(10)* noundef nonnull align 16 dereferenceable(40) %80, { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } addrspace(11)* nocapture noundef nonnull readonly align 8 dereferenceable(40) %145) #55, !dbg !7885 | |
call fastcc void @julia_copyto_unaliased__12571({} addrspace(10)* noundef nonnull align 16 dereferenceable(40) %80, { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } addrspace(11)* nocapture noundef nonnull readonly align 8 dereferenceable(40) %146) #55, !dbg !7886 | |
br label %L569, !dbg !7886 | |
L479: ; preds = %L453 | |
store {} addrspace(10)* %1, {} addrspace(10)* addrspace(10)* %.repack256, align 8, !dbg !7887, !noalias !7834 | |
call void ({} addrspace(10)*, ...) @julia.write_barrier({} addrspace(10)* %59, {} addrspace(10)* %1), !dbg !7887 | |
store i64 %69, i64 addrspace(10)* %.repack263, align 8, !dbg !7887, !noalias !7834 | |
store i64 %value_phi47, i64 addrspace(10)* %.repack264, align 8, !dbg !7887, !noalias !7834 | |
store i64 %68, i64 addrspace(10)* %.repack259, align 8, !dbg !7887, !noalias !7834 | |
store i64 1, i64 addrspace(10)* %.repack261, align 8, !dbg !7887, !noalias !7834 | |
%102 = addrspacecast { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } addrspace(10)* %44 to { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }*, !dbg !7887 | |
%103 = addrspacecast [1 x {} addrspace(10)*] addrspace(10)* %52 to [1 x {} addrspace(10)*]*, !dbg !7887 | |
call fastcc void @julia_unalias_12576({ {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }* noalias nocapture nofree noundef nonnull writeonly sret({ {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }) align 8 dereferenceable(40) %102, [1 x {} addrspace(10)*]* noalias nocapture nofree noundef nonnull writeonly align 8 dereferenceable(8) "enzymejl_returnRoots" %103, {} addrspace(10)* noundef nonnull align 16 dereferenceable(40) %80, { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } addrspace(11)* nocapture noundef nonnull readonly align 8 dereferenceable(40) %141) #55, !dbg !7887 | |
%unbox80 = load i64, i64 addrspace(10)* %143, align 8, !dbg !7892, !tbaa !74, !alias.scope !76, !noalias !253 | |
%unbox81 = load i64, i64 addrspace(10)* %142, align 8, !dbg !7892, !tbaa !74, !alias.scope !76, !noalias !253 | |
%104 = add i64 %unbox80, 1, !dbg !7892 | |
%105 = sub i64 %104, %unbox81, !dbg !7899 | |
%106 = call i64 @llvm.smax.i64(i64 %105, i64 noundef 0) #55, !dbg !7900 | |
%.not266 = icmp eq i64 %106, 1, !dbg !7905 | |
%.not267 = icmp eq i64 %arraylen46, 0, !dbg !7909 | |
br i1 %.not267, label %L569, label %L501.lr.ph, !dbg !7910 | |
L501.lr.ph: ; preds = %L479 | |
%getfield = load atomic {} addrspace(10)*, {} addrspace(10)* addrspace(10)* %getfield_addr unordered, align 8, !tbaa !74, !alias.scope !76, !noalias !253, !nonnull !58, !dereferenceable !272, !align !273 | |
%unbox93 = load i64, i64 addrspace(10)* %144, align 8, !tbaa !74, !alias.scope !76, !noalias !253 | |
%107 = addrspacecast {} addrspace(10)* %getfield to double addrspace(13)* addrspace(11)* | |
%arrayptr269 = load double addrspace(13)*, double addrspace(13)* addrspace(11)* %107, align 16, !tbaa !274, !alias.scope !7912, !noalias !162, !nonnull !58 | |
%108 = addrspacecast {} addrspace(10)* %80 to double addrspace(13)* addrspace(11)* | |
%arrayptr95270 = load double addrspace(13)*, double addrspace(13)* addrspace(11)* %108, align 8, !tbaa !274, !alias.scope !7912, !noalias !162, !nonnull !58 | |
br label %L501, !dbg !7913 | |
L501: ; preds = %L501, %L501.lr.ph | |
%iv1 = phi i64 [ %iv.next2, %L501 ], [ 0, %L501.lr.ph ] | |
%iv.next2 = add nuw nsw i64 %iv1, 1, !dbg !7914 | |
%109 = select i1 %.not266, i64 0, i64 %iv1, !dbg !7917 | |
%110 = add i64 %109, %unbox93, !dbg !7925 | |
%111 = getelementptr inbounds double, double addrspace(13)* %arrayptr269, i64 %110, !dbg !7925 | |
%arrayref = load double, double addrspace(13)* %111, align 8, !dbg !7925, !tbaa !297, !alias.scope !224, !noalias !299 | |
%112 = getelementptr inbounds double, double addrspace(13)* %arrayptr95270, i64 %iv1, !dbg !7926 | |
store double %arrayref, double addrspace(13)* %112, align 8, !dbg !7926, !tbaa !297, !alias.scope !224, !noalias !7878 | |
%exitcond.not = icmp eq i64 %iv.next2, %arraylen46, !dbg !7927 | |
br i1 %exitcond.not, label %L569.loopexit, label %L501, !dbg !7913, !llvm.loop !7928 | |
L569.loopexit: ; preds = %L501 | |
br label %L569, !dbg !7929 | |
L569: ; preds = %L569.loopexit, %L479, %L475, %L468 | |
%arraylen75 = load i64, i64 addrspace(11)* %arraylen_ptr45, align 8, !dbg !7929, !tbaa !158, !range !96, !alias.scope !161, !noalias !162 | |
%113 = add i64 %arraylen75, %69, !dbg !7931 | |
%114 = add nsw i64 %71, -1, !dbg !7932 | |
%exitcond404.not = icmp eq i64 %71, 3, !dbg !7932 | |
br i1 %exitcond404.not, label %L589, label %pass, !dbg !7932 | |
L583: ; preds = %guard_pass200, %pass | |
%value_phi77 = phi { i64, i64, {} addrspace(10)*, {} addrspace(10)* } [ zeroinitializer, %pass ], [ %unbox202246, %guard_pass200 ] | |
%115 = extractvalue { i64, i64, {} addrspace(10)*, {} addrspace(10)* } %value_phi77, 2, !dbg !7934 | |
%116 = addrspacecast {} addrspace(10)* %115 to { i8 addrspace(13)*, i64, i16, i16, i32 } addrspace(11)*, !dbg !7936 | |
%arraylen_ptr = getelementptr inbounds { i8 addrspace(13)*, i64, i16, i16, i32 }, { i8 addrspace(13)*, i64, i16, i16, i32 } addrspace(11)* %116, i64 0, i32 1, !dbg !7936 | |
%arraylen = load i64, i64 addrspace(11)* %arraylen_ptr, align 8, !dbg !7936, !tbaa !63, !range !96, !invariant.load !58, !alias.scope !97, !noalias !98 | |
%117 = add i64 %arraylen, %113, !dbg !7937 | |
%118 = add i64 %117, -1, !dbg !7938 | |
%.not208 = icmp sgt i64 %113, %118, !dbg !7939 | |
%119 = add i64 %113, -1, !dbg !7941 | |
%value_phi4 = select i1 %.not208, i64 %119, i64 %118, !dbg !7941 | |
%arraylen7 = load i64, i64 addrspace(11)* %arraylen_ptr6, align 8, !dbg !7944, !tbaa !158, !range !96, !alias.scope !161, !noalias !162 | |
%120 = icmp slt i64 %value_phi4, %113, !dbg !7949 | |
%121 = icmp ult i64 %119, %arraylen7, !dbg !7953 | |
%122 = add i64 %value_phi4, -1, !dbg !7955 | |
%123 = icmp ult i64 %122, %arraylen7, !dbg !7953 | |
%124 = and i1 %121, %123, !dbg !7956 | |
%125 = or i1 %120, %124, !dbg !7957 | |
br i1 %125, label %L47, label %L9.L44_crit_edge, !dbg !7810 | |
L589: ; preds = %L569 | |
ret void, !dbg !7958 | |
pass: ; preds = %L569 | |
%126 = getelementptr inbounds { i64, [2 x { i64, i64, {} addrspace(10)*, {} addrspace(10)* }], {} addrspace(10)* }, { i64, [2 x { i64, i64, {} addrspace(10)*, {} addrspace(10)* }], {} addrspace(10)* } addrspace(11)* %0, i64 0, i32 1, i64 %114, !dbg !7959 | |
%127 = add nuw nsw i64 %71, 1, !dbg !7960 | |
%.not239 = icmp eq { i64, i64, {} addrspace(10)*, {} addrspace(10)* } addrspace(11)* %126, null | |
br i1 %.not239, label %L583, label %guard_pass200 | |
guard_pass193: ; preds = %top | |
%unbox195.elt = getelementptr inbounds [2 x { i64, i64, {} addrspace(10)*, {} addrspace(10)* }], [2 x { i64, i64, {} addrspace(10)*, {} addrspace(10)* }] addrspace(11)* %64, i64 0, i64 0, i32 0 | |
%unbox195.unpack = load i64, i64 addrspace(11)* %unbox195.elt, align 8, !tbaa !63, !alias.scope !97, !noalias !98 | |
%128 = insertvalue { i64, i64, {} addrspace(10)*, {} addrspace(10)* } undef, i64 %unbox195.unpack, 0 | |
%unbox195.elt295 = getelementptr inbounds { i64, [2 x { i64, i64, {} addrspace(10)*, {} addrspace(10)* }], {} addrspace(10)* }, { i64, [2 x { i64, i64, {} addrspace(10)*, {} addrspace(10)* }], {} addrspace(10)* } addrspace(11)* %0, i64 0, i32 1, i64 0, i32 1 | |
%unbox195.unpack296 = load i64, i64 addrspace(11)* %unbox195.elt295, align 8, !tbaa !63, !alias.scope !97, !noalias !98 | |
%129 = insertvalue { i64, i64, {} addrspace(10)*, {} addrspace(10)* } %128, i64 %unbox195.unpack296, 1 | |
%unbox195.elt297 = getelementptr inbounds { i64, [2 x { i64, i64, {} addrspace(10)*, {} addrspace(10)* }], {} addrspace(10)* }, { i64, [2 x { i64, i64, {} addrspace(10)*, {} addrspace(10)* }], {} addrspace(10)* } addrspace(11)* %0, i64 0, i32 1, i64 0, i32 2 | |
%unbox195.unpack298 = load {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %unbox195.elt297, align 8, !tbaa !63, !alias.scope !97, !noalias !98 | |
%130 = insertvalue { i64, i64, {} addrspace(10)*, {} addrspace(10)* } %129, {} addrspace(10)* %unbox195.unpack298, 2 | |
%unbox195.elt299 = getelementptr inbounds { i64, [2 x { i64, i64, {} addrspace(10)*, {} addrspace(10)* }], {} addrspace(10)* }, { i64, [2 x { i64, i64, {} addrspace(10)*, {} addrspace(10)* }], {} addrspace(10)* } addrspace(11)* %0, i64 0, i32 1, i64 0, i32 3 | |
%unbox195.unpack300 = load {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %unbox195.elt299, align 8, !tbaa !63, !alias.scope !97, !noalias !98 | |
%unbox195301 = insertvalue { i64, i64, {} addrspace(10)*, {} addrspace(10)* } %130, {} addrspace(10)* %unbox195.unpack300, 3 | |
br label %guard_exit194 | |
guard_exit194: ; preds = %guard_pass193, %top | |
%guard_res196 = phi { i64, i64, {} addrspace(10)*, {} addrspace(10)* } [ zeroinitializer, %top ], [ %unbox195301, %guard_pass193 ] | |
%131 = extractvalue { i64, i64, {} addrspace(10)*, {} addrspace(10)* } %guard_res196, 2, !dbg !7934 | |
%132 = addrspacecast {} addrspace(10)* %131 to { i8 addrspace(13)*, i64, i16, i16, i32 } addrspace(11)*, !dbg !7936 | |
%arraylen_ptr329 = getelementptr inbounds { i8 addrspace(13)*, i64, i16, i16, i32 }, { i8 addrspace(13)*, i64, i16, i16, i32 } addrspace(11)* %132, i64 0, i32 1, !dbg !7936 | |
%arraylen330 = load i64, i64 addrspace(11)* %arraylen_ptr329, align 8, !dbg !7936, !tbaa !63, !range !96, !invariant.load !58, !alias.scope !97, !noalias !98 | |
%.not208331 = icmp eq i64 %arraylen330, 0, !dbg !7939 | |
%newstruct.sroa.0.0..sroa_idx = getelementptr inbounds [1 x [2 x i64]], [1 x [2 x i64]]* %newstruct5, i64 0, i64 0, i64 0, !dbg !7808 | |
store i64 1, i64* %newstruct.sroa.0.0..sroa_idx, align 8, !dbg !7808, !tbaa !74, !alias.scope !76, !noalias !7802 | |
%newstruct.sroa.3.0..sroa_idx305 = getelementptr inbounds [1 x [2 x i64]], [1 x [2 x i64]]* %newstruct5, i64 0, i64 0, i64 1, !dbg !7808 | |
store i64 %arraylen330, i64* %newstruct.sroa.3.0..sroa_idx305, align 8, !dbg !7808, !tbaa !74, !alias.scope !76, !noalias !7802 | |
%133 = addrspacecast {} addrspace(10)* %1 to { i8 addrspace(13)*, i64, i16, i16, i32 } addrspace(11)*, !dbg !7944 | |
%arraylen_ptr6 = getelementptr inbounds { i8 addrspace(13)*, i64, i16, i16, i32 }, { i8 addrspace(13)*, i64, i16, i16, i32 } addrspace(11)* %133, i64 0, i32 1, !dbg !7944 | |
%arraylen7333 = load i64, i64 addrspace(11)* %arraylen_ptr6, align 8, !dbg !7944, !tbaa !158, !range !96, !alias.scope !161, !noalias !162 | |
%134 = add nsw i64 %arraylen330, -1, !dbg !7955 | |
%135 = icmp ult i64 %134, %arraylen7333, !dbg !7953 | |
%136 = or i1 %.not208331, %135, !dbg !7957 | |
br i1 %136, label %L47.lr.ph, label %L44, !dbg !7810 | |
L47.lr.ph: ; preds = %guard_exit194 | |
%137 = add nuw nsw i64 %arraylen330, 1, !dbg !7937 | |
%138 = getelementptr inbounds [2 x i64], [2 x i64]* %newstruct11, i64 0, i64 0 | |
%139 = getelementptr inbounds [2 x i64], [2 x i64]* %newstruct11, i64 0, i64 1 | |
%.repack.repack = getelementptr { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] }, { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] } addrspace(10)* %37, i64 0, i32 0, i32 0 | |
%.repack227 = getelementptr { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] }, { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] } addrspace(10)* %37, i64 0, i32 0, i32 1, i64 0, i64 0 | |
%.repack228 = getelementptr { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] }, { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] } addrspace(10)* %37, i64 0, i32 0, i32 1, i64 0, i64 1 | |
%.repack.repack223 = getelementptr { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] }, { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] } addrspace(10)* %37, i64 0, i32 0, i32 2 | |
%.repack.repack225 = getelementptr { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] }, { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] } addrspace(10)* %37, i64 0, i32 0, i32 3 | |
%.repack219.repack = getelementptr { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] }, { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] } addrspace(10)* %37, i64 0, i32 1, i64 0 | |
%.repack219.repack230 = getelementptr { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] }, { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] } addrspace(10)* %37, i64 0, i32 1, i64 1 | |
%140 = addrspacecast { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] } addrspace(10)* %37 to { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] } addrspace(11)* | |
%newstruct48.sroa.0.0..sroa_idx = getelementptr inbounds [1 x [2 x i64]], [1 x [2 x i64]]* %newstruct49, i64 0, i64 0, i64 0 | |
%newstruct48.sroa.3.0..sroa_idx303 = getelementptr inbounds [1 x [2 x i64]], [1 x [2 x i64]]* %newstruct49, i64 0, i64 0, i64 1 | |
%.repack256 = getelementptr { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } addrspace(10)* %60, i64 0, i32 0 | |
%.repack263 = getelementptr { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } addrspace(10)* %60, i64 0, i32 1, i64 0, i64 0 | |
%.repack264 = getelementptr { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } addrspace(10)* %60, i64 0, i32 1, i64 0, i64 1 | |
%.repack259 = getelementptr { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } addrspace(10)* %60, i64 0, i32 2 | |
%.repack261 = getelementptr { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } addrspace(10)* %60, i64 0, i32 3 | |
%141 = addrspacecast { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } addrspace(10)* %60 to { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } addrspace(11)* | |
%142 = getelementptr { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } addrspace(10)* %44, i64 0, i32 1, i64 0, i64 0 | |
%143 = getelementptr { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } addrspace(10)* %44, i64 0, i32 1, i64 0, i64 1 | |
%getfield_addr = getelementptr { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } addrspace(10)* %44, i64 0, i32 0 | |
%144 = getelementptr { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } addrspace(10)* %44, i64 0, i32 2 | |
%.repack = getelementptr { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } addrspace(10)* %30, i64 0, i32 0 | |
%.repack253 = getelementptr { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } addrspace(10)* %30, i64 0, i32 1, i64 0, i64 0 | |
%.repack254 = getelementptr { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } addrspace(10)* %30, i64 0, i32 1, i64 0, i64 1 | |
%.repack249 = getelementptr { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } addrspace(10)* %30, i64 0, i32 2 | |
%.repack251 = getelementptr { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } addrspace(10)* %30, i64 0, i32 3 | |
%145 = addrspacecast { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } addrspace(10)* %30 to { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } addrspace(11)* | |
%146 = addrspacecast { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } addrspace(10)* %15 to { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } addrspace(11)* | |
br label %L47, !dbg !7810 | |
guard_pass200: ; preds = %pass | |
%unbox202.elt = getelementptr inbounds { i64, i64, {} addrspace(10)*, {} addrspace(10)* }, { i64, i64, {} addrspace(10)*, {} addrspace(10)* } addrspace(11)* %126, i64 0, i32 0 | |
%unbox202.unpack = load i64, i64 addrspace(11)* %unbox202.elt, align 8, !tbaa !63, !alias.scope !97, !noalias !98 | |
%147 = insertvalue { i64, i64, {} addrspace(10)*, {} addrspace(10)* } undef, i64 %unbox202.unpack, 0 | |
%unbox202.elt240 = getelementptr inbounds { i64, [2 x { i64, i64, {} addrspace(10)*, {} addrspace(10)* }], {} addrspace(10)* }, { i64, [2 x { i64, i64, {} addrspace(10)*, {} addrspace(10)* }], {} addrspace(10)* } addrspace(11)* %0, i64 0, i32 1, i64 %114, i32 1 | |
%unbox202.unpack241 = load i64, i64 addrspace(11)* %unbox202.elt240, align 8, !tbaa !63, !alias.scope !97, !noalias !98 | |
%148 = insertvalue { i64, i64, {} addrspace(10)*, {} addrspace(10)* } %147, i64 %unbox202.unpack241, 1 | |
%unbox202.elt242 = getelementptr inbounds { i64, [2 x { i64, i64, {} addrspace(10)*, {} addrspace(10)* }], {} addrspace(10)* }, { i64, [2 x { i64, i64, {} addrspace(10)*, {} addrspace(10)* }], {} addrspace(10)* } addrspace(11)* %0, i64 0, i32 1, i64 %114, i32 2 | |
%unbox202.unpack243 = load {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %unbox202.elt242, align 8, !tbaa !63, !alias.scope !97, !noalias !98 | |
%149 = insertvalue { i64, i64, {} addrspace(10)*, {} addrspace(10)* } %148, {} addrspace(10)* %unbox202.unpack243, 2 | |
%unbox202.elt244 = getelementptr inbounds { i64, [2 x { i64, i64, {} addrspace(10)*, {} addrspace(10)* }], {} addrspace(10)* }, { i64, [2 x { i64, i64, {} addrspace(10)*, {} addrspace(10)* }], {} addrspace(10)* } addrspace(11)* %0, i64 0, i32 1, i64 %114, i32 3 | |
%unbox202.unpack245 = load {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %unbox202.elt244, align 8, !tbaa !63, !alias.scope !97, !noalias !98 | |
%unbox202246 = insertvalue { i64, i64, {} addrspace(10)*, {} addrspace(10)* } %149, {} addrspace(10)* %unbox202.unpack245, 3 | |
br label %L583 | |
} | |
Illegal replace ficticious phi for: %unbox202.unpack_replacementA = phi i64 of %unbox202.unpack = load i64, i64 addrspace(11)* %unbox202.elt, align 8, !tbaa !64, !alias.scope !98, !noalias !99 | |
; Function Attrs: mustprogress willreturn | |
define internal fastcc void @diffejulia_set_params_12661({ i64, [2 x { i64, i64, {} addrspace(10)*, {} addrspace(10)* }], {} addrspace(10)* } addrspace(11)* nocapture readonly align 8 dereferenceable(152) %0, { i64, [2 x { i64, i64, {} addrspace(10)*, {} addrspace(10)* }], {} addrspace(10)* } addrspace(11)* nocapture align 8 %"'", {} addrspace(10)* align 16 dereferenceable(40) %1, {} addrspace(10)* align 16 %"'1", { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i64, {} addrspace(10)*, i1, i64, i64, i64, i64 } addrspace(10)*, { {} addrspace(10)*, i64, i64 } addrspace(10)*, { {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64 }, i1 } addrspace(10)*, { {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64 }, i1 } addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, i64*, i64*, i64**, { i64, i64, {} addrspace(10)*, {} addrspace(10)* }, { i64, i64, {} addrspace(10)*, {} addrspace(10)* } addrspace(10)* } %tapeArg) unnamed_addr #46 !dbg !9022 { | |
top: | |
%2 = call {}*** @julia.get_pgcstack() | |
%3 = call {}*** @julia.get_pgcstack() | |
%4 = call {}*** @julia.get_pgcstack() | |
%5 = call {}*** @julia.get_pgcstack() | |
%6 = call {}*** @julia.get_pgcstack() | |
%7 = call {}*** @julia.get_pgcstack() | |
%8 = call {}*** @julia.get_pgcstack() | |
%9 = call {}*** @julia.get_pgcstack() | |
%10 = call {}*** @julia.get_pgcstack() | |
%11 = call {}*** @julia.get_pgcstack() | |
%12 = call {}*** @julia.get_pgcstack() | |
%13 = call {}*** @julia.get_pgcstack() | |
%14 = call {}*** @julia.get_pgcstack() | |
%15 = call {}*** @julia.get_pgcstack() | |
%16 = call {}*** @julia.get_pgcstack() | |
%17 = call {}*** @julia.get_pgcstack() | |
%18 = call {}*** @julia.get_pgcstack() | |
%19 = call {}*** @julia.get_pgcstack() | |
%20 = call {}*** @julia.get_pgcstack() | |
%21 = call {}*** @julia.get_pgcstack() | |
%22 = call {}*** @julia.get_pgcstack() | |
%23 = call {}*** @julia.get_pgcstack() | |
%24 = call {}*** @julia.get_pgcstack() | |
%25 = call {}*** @julia.get_pgcstack() | |
%26 = call {}*** @julia.get_pgcstack() | |
%27 = call {}*** @julia.get_pgcstack() | |
%28 = call {}*** @julia.get_pgcstack() | |
%29 = call {}*** @julia.get_pgcstack() | |
%30 = call {}*** @julia.get_pgcstack() | |
%31 = call {}*** @julia.get_pgcstack() | |
%32 = call {}*** @julia.get_pgcstack() | |
%33 = call {}*** @julia.get_pgcstack() | |
%34 = call {}*** @julia.get_pgcstack() | |
%35 = call {}*** @julia.get_pgcstack() | |
%36 = call {}*** @julia.get_pgcstack() | |
%37 = call {}*** @julia.get_pgcstack() | |
%38 = call {}*** @julia.get_pgcstack() | |
%39 = call {}*** @julia.get_pgcstack() | |
%40 = call {}*** @julia.get_pgcstack() | |
%41 = call {}*** @julia.get_pgcstack() | |
%42 = call {}*** @julia.get_pgcstack() | |
%43 = call {}*** @julia.get_pgcstack() | |
%44 = call {}*** @julia.get_pgcstack() | |
%45 = bitcast {}*** %43 to {}** | |
%46 = getelementptr inbounds {}*, {}** %45, i64 -14 | |
%_replacementA48 = phi i8* | |
%"'mi" = extractvalue { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i64, {} addrspace(10)*, i1, i64, i64, i64, i64 } addrspace(10)*, { {} addrspace(10)*, i64, i64 } addrspace(10)*, { {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64 }, i1 } addrspace(10)*, { {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64 }, i1 } addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, i64*, i64*, i64**, { i64, i64, {} addrspace(10)*, {} addrspace(10)* }, { i64, i64, {} addrspace(10)*, {} addrspace(10)* } addrspace(10)* } %tapeArg, 7 | |
%47 = extractvalue { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i64, {} addrspace(10)*, i1, i64, i64, i64, i64 } addrspace(10)*, { {} addrspace(10)*, i64, i64 } addrspace(10)*, { {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64 }, i1 } addrspace(10)*, { {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64 }, i1 } addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, i64*, i64*, i64**, { i64, i64, {} addrspace(10)*, {} addrspace(10)* }, { i64, i64, {} addrspace(10)*, {} addrspace(10)* } addrspace(10)* } %tapeArg, 8 | |
%"'ipc122" = bitcast {} addrspace(10)* %"'mi" to { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } addrspace(10)* | |
%48 = bitcast {} addrspace(10)* %47 to { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } addrspace(10)*, !enzyme_caststack !58 | |
%_replacementA47 = phi {}** | |
%_replacementA45 = phi {}** | |
%_replacementA44 = phi i8** | |
%_replacementA42 = phi {} addrspace(10)* | |
%newstruct49_replacementA = phi [1 x [2 x i64]]* | |
%49 = bitcast {}*** %41 to {}** | |
%50 = getelementptr inbounds {}*, {}** %49, i64 -14 | |
%_replacementA38 = phi i8** | |
%_replacementA37 = phi i8* | |
%"'mi36" = extractvalue { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i64, {} addrspace(10)*, i1, i64, i64, i64, i64 } addrspace(10)*, { {} addrspace(10)*, i64, i64 } addrspace(10)*, { {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64 }, i1 } addrspace(10)*, { {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64 }, i1 } addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, i64*, i64*, i64**, { i64, i64, {} addrspace(10)*, {} addrspace(10)* }, { i64, i64, {} addrspace(10)*, {} addrspace(10)* } addrspace(10)* } %tapeArg, 5 | |
%51 = extractvalue { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i64, {} addrspace(10)*, i1, i64, i64, i64, i64 } addrspace(10)*, { {} addrspace(10)*, i64, i64 } addrspace(10)*, { {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64 }, i1 } addrspace(10)*, { {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64 }, i1 } addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, i64*, i64*, i64**, { i64, i64, {} addrspace(10)*, {} addrspace(10)* }, { i64, i64, {} addrspace(10)*, {} addrspace(10)* } addrspace(10)* } %tapeArg, 6 | |
%"'ipc130" = bitcast {} addrspace(10)* %"'mi36" to { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } addrspace(10)* | |
%52 = bitcast {} addrspace(10)* %51 to { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } addrspace(10)*, !enzyme_caststack !58 | |
%53 = bitcast {}*** %44 to {}** | |
%54 = getelementptr inbounds {}*, {}** %53, i64 -14 | |
%_replacementA35 = phi {}** | |
%_replacementA34 = phi i8** | |
%_replacementA33 = phi i8* | |
%"'mi32" = extractvalue { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i64, {} addrspace(10)*, i1, i64, i64, i64, i64 } addrspace(10)*, { {} addrspace(10)*, i64, i64 } addrspace(10)*, { {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64 }, i1 } addrspace(10)*, { {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64 }, i1 } addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, i64*, i64*, i64**, { i64, i64, {} addrspace(10)*, {} addrspace(10)* }, { i64, i64, {} addrspace(10)*, {} addrspace(10)* } addrspace(10)* } %tapeArg, 3 | |
%55 = extractvalue { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i64, {} addrspace(10)*, i1, i64, i64, i64, i64 } addrspace(10)*, { {} addrspace(10)*, i64, i64 } addrspace(10)*, { {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64 }, i1 } addrspace(10)*, { {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64 }, i1 } addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, i64*, i64*, i64**, { i64, i64, {} addrspace(10)*, {} addrspace(10)* }, { i64, i64, {} addrspace(10)*, {} addrspace(10)* } addrspace(10)* } %tapeArg, 4 | |
%"'ipc" = bitcast {} addrspace(10)* %"'mi32" to { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] } addrspace(10)* | |
%56 = bitcast {} addrspace(10)* %55 to { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] } addrspace(10)*, !enzyme_caststack !58 | |
%57 = bitcast {}*** %40 to {}** | |
%58 = getelementptr inbounds {}*, {}** %57, i64 -14 | |
%_replacementA30 = phi i8** | |
%_replacementA29 = phi i8* | |
%"'mi27" = extractvalue { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i64, {} addrspace(10)*, i1, i64, i64, i64, i64 } addrspace(10)*, { {} addrspace(10)*, i64, i64 } addrspace(10)*, { {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64 }, i1 } addrspace(10)*, { {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64 }, i1 } addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, i64*, i64*, i64**, { i64, i64, {} addrspace(10)*, {} addrspace(10)* }, { i64, i64, {} addrspace(10)*, {} addrspace(10)* } addrspace(10)* } %tapeArg, 2 | |
%"'ipc142" = bitcast {} addrspace(10)* %"'mi27" to { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } addrspace(10)* | |
%_replacementA26 = phi { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } addrspace(10)* | |
%_replacementA25 = phi i8* | |
%_replacementA23 = phi {}** | |
%_replacementA22 = phi {}** | |
%_replacementA20 = phi i8* | |
%59 = bitcast {}*** %38 to {}** | |
%60 = getelementptr inbounds {}*, {}** %59, i64 -14 | |
%_replacementA16 = phi {}** | |
%_replacementA15 = phi i8** | |
%"'mi13" = extractvalue { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i64, {} addrspace(10)*, i1, i64, i64, i64, i64 } addrspace(10)*, { {} addrspace(10)*, i64, i64 } addrspace(10)*, { {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64 }, i1 } addrspace(10)*, { {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64 }, i1 } addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, i64*, i64*, i64**, { i64, i64, {} addrspace(10)*, {} addrspace(10)* }, { i64, i64, {} addrspace(10)*, {} addrspace(10)* } addrspace(10)* } %tapeArg, 0 | |
%61 = extractvalue { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i64, {} addrspace(10)*, i1, i64, i64, i64, i64 } addrspace(10)*, { {} addrspace(10)*, i64, i64 } addrspace(10)*, { {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64 }, i1 } addrspace(10)*, { {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64 }, i1 } addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, i64*, i64*, i64**, { i64, i64, {} addrspace(10)*, {} addrspace(10)* }, { i64, i64, {} addrspace(10)*, {} addrspace(10)* } addrspace(10)* } %tapeArg, 1 | |
%"'ipc162" = bitcast {} addrspace(10)* %"'mi13" to { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } addrspace(10)* | |
%62 = bitcast {} addrspace(10)* %61 to { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } addrspace(10)*, !enzyme_caststack !58 | |
%63 = call {}*** @julia.get_pgcstack() #55 | |
%ptls_field205_replacementA = phi {}*** | |
%ptls_load206207_replacementA = phi i64** | |
%_replacementA = phi i64** | |
%64 = getelementptr inbounds { i64, [2 x { i64, i64, {} addrspace(10)*, {} addrspace(10)* }], {} addrspace(10)* }, { i64, [2 x { i64, i64, {} addrspace(10)*, {} addrspace(10)* }], {} addrspace(10)* } addrspace(11)* %0, i64 0, i32 1, !dbg !9023 | |
%.not = icmp eq [2 x { i64, i64, {} addrspace(10)*, {} addrspace(10)* }] addrspace(11)* %64, null | |
br i1 %.not, label %guard_exit194, label %guard_pass193 | |
L9.L44_crit_edge: ; preds = %L583 | |
unreachable | |
L44: ; preds = %guard_exit194 | |
unreachable | |
L47: ; preds = %L47.lr.ph, %L583 | |
%iv = phi i64 [ 0, %L47.lr.ph ], [ %iv.next, %L583 ] | |
%value_phi4360_replacementA = phi i64 | |
%_replacementA62 = phi i64 | |
%_replacementA59 = phi i64 | |
%65 = phi {} addrspace(10)* [ %"'ipev", %L47.lr.ph ], [ %"'ipev82", %L583 ] | |
%66 = phi {} addrspace(10)* [ %114, %L47.lr.ph ], [ %111, %L583 ] | |
%67 = phi { i64, i64, {} addrspace(10)*, {} addrspace(10)* } [ %113, %L47.lr.ph ], [ %110, %L583 ] | |
%value_phi334 = phi { i64, i64, {} addrspace(10)*, {} addrspace(10)* } [ %guard_res196, %L47.lr.ph ], [ %value_phi77, %L583 ] | |
%iv.next = add nuw nsw i64 %iv, 1, !dbg !9025 | |
%68 = add i64 %iv, 2, !dbg !9025 | |
%_replacementA58 = phi {} addrspace(10)* addrspace(11)* , !dbg !9025 | |
%arraysize_ptr_replacementA = phi {} addrspace(10)* addrspace(11)* , !dbg !9025 | |
%_replacementA57 = phi i64 addrspace(11)* , !dbg !9025 | |
%_replacementA53 = phi i64 , !dbg !9027 | |
%_replacementA52 = phi i64 , !dbg !9039 | |
br i1 true, label %L150, label %L64, !dbg !9041 | |
L64: ; preds = %L47 | |
%_replacementA63 = phi [2 x i64] addrspace(11)* , !dbg !9041 | |
unreachable | |
L150: ; preds = %L47 | |
%69 = load { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i64, {} addrspace(10)*, i1, i64, i64, i64, i64 } addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i64, {} addrspace(10)*, i1, i64, i64, i64, i64 } addrspace(10)** %mdyncache_fromtape_cache, align 8, !dbg !9042, !dereferenceable !410, !invariant.group !9046 | |
%70 = getelementptr inbounds { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i64, {} addrspace(10)*, i1, i64, i64, i64, i64 }, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i64, {} addrspace(10)*, i1, i64, i64, i64, i64 } addrspace(10)* %69, i64 %iv, !dbg !9042 | |
%tapeArg94 = load { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i64, {} addrspace(10)*, i1, i64, i64, i64, i64 }, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i64, {} addrspace(10)*, i1, i64, i64, i64, i64 } addrspace(10)* %70, align 8, !dbg !9042, !invariant.group !9047 | |
%arraylen51.pre_replacementA = phi i64 , !dbg !9048 | |
%71 = extractvalue { i64, i64, {} addrspace(10)*, {} addrspace(10)* } %value_phi334, 3, !dbg !9056 | |
%"'ipev111" = extractvalue { i64, i64, {} addrspace(10)*, {} addrspace(10)* } %67, 3, !dbg !9058 | |
%arraylen_ptr45_replacementA = phi i64 addrspace(11)* , !dbg !9058 | |
%72 = load i64*, i64** %mdyncache_fromtape_cache242, align 8, !dbg !9059, !dereferenceable !410, !invariant.group !9060 | |
%73 = getelementptr inbounds i64, i64* %72, i64 %iv, !dbg !9059 | |
%arraylen46 = load i64, i64* %73, align 8, !dbg !9059, !invariant.group !9061 | |
%_replacementA70 = phi i64 , !dbg !9059 | |
%_replacementA65 = phi i1 , !dbg !9062 | |
br i1 true, label %L414, label %L411, !dbg !9053 | |
L411: ; preds = %L150 | |
unreachable | |
L414: ; preds = %L150 | |
%74 = load i64*, i64** %mdyncache_fromtape_cache244, align 8, !dbg !9064, !dereferenceable !410, !invariant.group !9073 | |
%75 = getelementptr inbounds i64, i64* %74, i64 %iv, !dbg !9064 | |
%76 = load i64, i64* %75, align 8, !dbg !9064, !invariant.group !9074 | |
%77 = add i64 %76, 1, !dbg !9064 | |
%78 = call i64 @llvm.smax.i64(i64 %77, i64 noundef 0) #55, !dbg !9075 | |
%79 = icmp eq i64 %arraylen46, %78, !dbg !9080 | |
br i1 true, label %L453, label %L435, !dbg !9083 | |
L435: ; preds = %L414 | |
%_replacementA103 = phi [1 x {} addrspace(10)*] , !dbg !9083 | |
%current_task105271_replacementA = phi {}*** , !dbg !9083 | |
%current_task105_replacementA = phi {}** , !dbg !9083 | |
%box_replacementA = phi {} addrspace(10)* , !dbg !9083 | |
%_replacementA101 = phi {} addrspace(10)* addrspace(10)* , !dbg !9083 | |
%_replacementA100 = phi {} addrspace(12)* , !dbg !9083 | |
unreachable | |
L453: ; preds = %L414 | |
br i1 %79, label %L468, label %L479, !dbg !9084 | |
L468: ; preds = %L453 | |
%80 = icmp ult i64 %76, 9223372036854775807, !dbg !9086 | |
%81 = load i8*, i8** %_cache203, align 8, !dbg !9088, !dereferenceable !410, !invariant.group !9090 | |
%82 = getelementptr inbounds i8, i8* %81, i64 %iv, !dbg !9088 | |
store i8 0, i8* %82, align 1, !dbg !9088, !invariant.group !9091 | |
br i1 %80, label %L475, label %L569, !dbg !9088 | |
L475: ; preds = %L468 | |
%"'ipc129" = addrspacecast { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } addrspace(10)* %"'ipc122" to { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }*, !dbg !9092 | |
%83 = load { {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64 }, i1 } addrspace(10)*, { {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64 }, i1 } addrspace(10)** %mdyncache_fromtape_cache133, align 8, !dbg !9092, !dereferenceable !410, !invariant.group !9093 | |
%84 = getelementptr inbounds { {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64 }, i1 }, { {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64 }, i1 } addrspace(10)* %83, i64 %iv, !dbg !9092 | |
%tapeArg132 = load { {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64 }, i1 }, { {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64 }, i1 } addrspace(10)* %84, align 8, !dbg !9092, !invariant.group !9094 | |
%85 = load { {} addrspace(10)*, i64, i64 } addrspace(10)*, { {} addrspace(10)*, i64, i64 } addrspace(10)** %mdyncache_fromtape_cache125, align 8, !dbg !9095, !dereferenceable !410, !invariant.group !9096 | |
%86 = getelementptr inbounds { {} addrspace(10)*, i64, i64 }, { {} addrspace(10)*, i64, i64 } addrspace(10)* %85, i64 %iv, !dbg !9095 | |
%tapeArg124 = load { {} addrspace(10)*, i64, i64 }, { {} addrspace(10)*, i64, i64 } addrspace(10)* %86, align 8, !dbg !9095, !invariant.group !9097 | |
%87 = load i8*, i8** %_cache203, align 8, !dbg !9095, !dereferenceable !410, !invariant.group !9090 | |
%88 = getelementptr inbounds i8, i8* %87, i64 %iv, !dbg !9095 | |
store i8 2, i8* %88, align 1, !dbg !9095, !invariant.group !9091 | |
br label %L569, !dbg !9095 | |
L479: ; preds = %L453 | |
%"'ipc143" = addrspacecast { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } addrspace(10)* %"'ipc142" to { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }*, !dbg !9098 | |
%_replacementA170 = phi { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }* , !dbg !9098 | |
%_replacementA169 = phi [1 x {} addrspace(10)*]* , !dbg !9098 | |
%89 = load { {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64 }, i1 } addrspace(10)*, { {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64 }, i1 } addrspace(10)** %mdyncache_fromtape_cache165, align 8, !dbg !9098, !dereferenceable !410, !invariant.group !9103 | |
%90 = getelementptr inbounds { {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64 }, i1 }, { {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64 }, i1 } addrspace(10)* %89, i64 %iv, !dbg !9098 | |
%tapeArg164 = load { {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64 }, i1 }, { {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64 }, i1 } addrspace(10)* %90, align 8, !dbg !9098, !invariant.group !9104 | |
%_replacementA139 = phi i64 , !dbg !9105 | |
%.not267 = icmp eq i64 %arraylen46, 0, !dbg !9115 | |
%91 = load i8*, i8** %_cache203, align 8, !dbg !9116, !dereferenceable !410, !invariant.group !9090 | |
%92 = getelementptr inbounds i8, i8* %91, i64 %iv, !dbg !9116 | |
store i8 1, i8* %92, align 1, !dbg !9116, !invariant.group !9091 | |
br i1 %.not267, label %L569, label %L501.lr.ph, !dbg !9116 | |
L501.lr.ph: ; preds = %L479 | |
%93 = load {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)** %mdyncache_fromtape_cache175, align 8, !dereferenceable !410, !invariant.group !9118 | |
%94 = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)* addrspace(10)* %93, i64 %iv | |
%"getfield'il_phi" = load {} addrspace(10)*, {} addrspace(10)* addrspace(10)* %94, align 8, !invariant.group !9119 | |
%getfield_replacementA = phi {} addrspace(10)* | |
%"'ipc173" = addrspacecast {} addrspace(10)* %"getfield'il_phi" to double addrspace(13)* addrspace(11)* | |
%_replacementA174 = phi double addrspace(13)* addrspace(11)* | |
%"arrayptr269'ipl" = load double addrspace(13)*, double addrspace(13)* addrspace(11)* %"'ipc173", align 16, !tbaa !274, !alias.scope !9120, !noalias !9123, !nonnull !58, !invariant.group !9125 | |
%"'ipc171" = addrspacecast {} addrspace(10)* %"'ipev111" to double addrspace(13)* addrspace(11)* | |
%_replacementA172 = phi double addrspace(13)* addrspace(11)* | |
%"arrayptr95270'ipl" = load double addrspace(13)*, double addrspace(13)* addrspace(11)* %"'ipc171", align 8, !tbaa !274, !alias.scope !9126, !noalias !9129, !nonnull !58, !invariant.group !9131 | |
%95 = add nsw i64 %arraylen46, -1, !dbg !9132 | |
%96 = add nuw i64 %95, 1, !dbg !9132 | |
%97 = extractvalue { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i64, {} addrspace(10)*, i1, i64, i64, i64, i64 } addrspace(10)*, { {} addrspace(10)*, i64, i64 } addrspace(10)*, { {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64 }, i1 } addrspace(10)*, { {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64 }, i1 } addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, i64*, i64*, i64**, { i64, i64, {} addrspace(10)*, {} addrspace(10)* }, { i64, i64, {} addrspace(10)*, {} addrspace(10)* } addrspace(10)* } %tapeArg, 20, !dbg !9132 | |
%98 = getelementptr inbounds i64*, i64** %97, i64 %iv, !dbg !9132 | |
%99 = mul nuw i64 %96, 8, !dbg !9132 | |
%100 = load i64**, i64*** %mdyncache_fromtape_cache248, align 8, !dbg !9132, !invariant.group !9133 | |
%101 = getelementptr inbounds i64*, i64** %100, i64 %iv, !dbg !9132 | |
br label %L501, !dbg !9132 | |
L501: ; preds = %L501, %L501.lr.ph | |
%iv1 = phi i64 [ %iv.next2, %L501 ], [ 0, %L501.lr.ph ] | |
%iv.next2 = add nuw nsw i64 %iv1, 1, !dbg !9134 | |
%102 = load i64**, i64*** %mdyncache_fromtape_cache248, align 8, !dbg !9137, !dereferenceable !410, !invariant.group !9145 | |
%103 = getelementptr inbounds i64*, i64** %102, i64 %iv, !dbg !9137 | |
%104 = load i64*, i64** %103, align 8, !dbg !9137, !dereferenceable !410, !invariant.group !9146 | |
%105 = getelementptr inbounds i64, i64* %104, i64 %iv1, !dbg !9137 | |
%106 = load i64, i64* %105, align 8, !dbg !9137, !invariant.group !9147 | |
%"'ipg189" = getelementptr inbounds double, double addrspace(13)* %"arrayptr269'ipl", i64 %106, !dbg !9137 | |
%_replacementA198 = phi double addrspace(13)* , !dbg !9137 | |
%"'ipg" = getelementptr inbounds double, double addrspace(13)* %"arrayptr95270'ipl", i64 %iv1, !dbg !9148 | |
%exitcond.not = icmp eq i64 %iv.next2, %arraylen46, !dbg !9149 | |
br i1 %exitcond.not, label %L569.loopexit, label %L501, !dbg !9132, !llvm.loop !9150 | |
L569.loopexit: ; preds = %L501 | |
%107 = load i8*, i8** %_cache203, align 8, !dbg !9151, !dereferenceable !410, !invariant.group !9090 | |
%108 = getelementptr inbounds i8, i8* %107, i64 %iv, !dbg !9151 | |
store i8 3, i8* %108, align 1, !dbg !9151, !invariant.group !9091 | |
br label %L569, !dbg !9151 | |
L569: ; preds = %L569.loopexit, %L479, %L475, %L468 | |
%arraylen75_replacementA = phi i64 , !dbg !9151 | |
%_replacementA202 = phi i64 , !dbg !9153 | |
%109 = add nsw i64 %68, -1, !dbg !9154 | |
%exitcond404.not = icmp eq i64 %68, 3, !dbg !9154 | |
br i1 %exitcond404.not, label %L589, label %pass, !dbg !9154 | |
L583: ; preds = %guard_pass200, %pass | |
%110 = phi { i64, i64, {} addrspace(10)*, {} addrspace(10)* } [ zeroinitializer, %pass ], [ %"unbox202246'ipiv", %guard_pass200 ] | |
%value_phi77 = phi { i64, i64, {} addrspace(10)*, {} addrspace(10)* } [ zeroinitializer, %pass ], [ %unbox202246, %guard_pass200 ] | |
%111 = extractvalue { i64, i64, {} addrspace(10)*, {} addrspace(10)* } %value_phi77, 2, !dbg !9156 | |
%"'ipev82" = extractvalue { i64, i64, {} addrspace(10)*, {} addrspace(10)* } %110, 2, !dbg !9158 | |
%arraylen_replacementA = phi i64 , !dbg !9158 | |
%_replacementA213 = phi i64 , !dbg !9159 | |
%.not208_replacementA = phi i1 , !dbg !9160 | |
%_replacementA212 = phi i64 , !dbg !9162 | |
%value_phi4_replacementA = phi i64 , !dbg !9162 | |
%arraylen7_replacementA = phi i64 , !dbg !9165 | |
%_replacementA207 = phi i1 , !dbg !9172 | |
%_replacementA206 = phi i1 , !dbg !9174 | |
br i1 true, label %L47, label %L9.L44_crit_edge, !dbg !9170 | |
L589: ; preds = %L569 | |
br label %invertL589, !dbg !9175 | |
pass: ; preds = %L569 | |
%112 = getelementptr inbounds { i64, [2 x { i64, i64, {} addrspace(10)*, {} addrspace(10)* }], {} addrspace(10)* }, { i64, [2 x { i64, i64, {} addrspace(10)*, {} addrspace(10)* }], {} addrspace(10)* } addrspace(11)* %0, i64 0, i32 1, i64 %109, !dbg !9176 | |
%_replacementA220 = phi i64 , !dbg !9177 | |
%.not239 = icmp eq { i64, i64, {} addrspace(10)*, {} addrspace(10)* } addrspace(11)* %112, null | |
br i1 %.not239, label %L583, label %guard_pass200 | |
guard_pass193: ; preds = %top | |
%unbox195.unpack_replacementA = phi i64 | |
%"'ipiv" = insertvalue { i64, i64, {} addrspace(10)*, {} addrspace(10)* } undef, i64 %unbox195.unpack_replacementA, 0 | |
%_replacementA223 = phi { i64, i64, {} addrspace(10)*, {} addrspace(10)* } | |
%unbox195.elt295_replacementA = phi i64 addrspace(11)* | |
%unbox195.unpack296_replacementA = phi i64 | |
%"'ipiv77" = insertvalue { i64, i64, {} addrspace(10)*, {} addrspace(10)* } %"'ipiv", i64 %unbox195.unpack296_replacementA, 1 | |
%_replacementA222 = phi { i64, i64, {} addrspace(10)*, {} addrspace(10)* } | |
%"unbox195.unpack298'il_phi" = extractvalue { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i64, {} addrspace(10)*, i1, i64, i64, i64, i64 } addrspace(10)*, { {} addrspace(10)*, i64, i64 } addrspace(10)*, { {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64 }, i1 } addrspace(10)*, { {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64 }, i1 } addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, i64*, i64*, i64**, { i64, i64, {} addrspace(10)*, {} addrspace(10)* }, { i64, i64, {} addrspace(10)*, {} addrspace(10)* } addrspace(10)* } %tapeArg, 15 | |
%unbox195.unpack298_replacementA = phi {} addrspace(10)* | |
%"'ipiv78" = insertvalue { i64, i64, {} addrspace(10)*, {} addrspace(10)* } %"'ipiv77", {} addrspace(10)* %"unbox195.unpack298'il_phi", 2 | |
%"unbox195.unpack300'il_phi" = extractvalue { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i64, {} addrspace(10)*, i1, i64, i64, i64, i64 } addrspace(10)*, { {} addrspace(10)*, i64, i64 } addrspace(10)*, { {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64 }, i1 } addrspace(10)*, { {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64 }, i1 } addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, i64*, i64*, i64**, { i64, i64, {} addrspace(10)*, {} addrspace(10)* }, { i64, i64, {} addrspace(10)*, {} addrspace(10)* } addrspace(10)* } %tapeArg, 14 | |
%unbox195.unpack300_replacementA = phi {} addrspace(10)* | |
%"unbox195301'ipiv" = insertvalue { i64, i64, {} addrspace(10)*, {} addrspace(10)* } %"'ipiv78", {} addrspace(10)* %"unbox195.unpack300'il_phi", 3 | |
%unbox195301 = extractvalue { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i64, {} addrspace(10)*, i1, i64, i64, i64, i64 } addrspace(10)*, { {} addrspace(10)*, i64, i64 } addrspace(10)*, { {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64 }, i1 } addrspace(10)*, { {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64 }, i1 } addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, i64*, i64*, i64**, { i64, i64, {} addrspace(10)*, {} addrspace(10)* }, { i64, i64, {} addrspace(10)*, {} addrspace(10)* } addrspace(10)* } %tapeArg, 21 | |
br label %guard_exit194 | |
guard_exit194: ; preds = %guard_pass193, %top | |
%113 = phi { i64, i64, {} addrspace(10)*, {} addrspace(10)* } [ zeroinitializer, %top ], [ %"unbox195301'ipiv", %guard_pass193 ] | |
%guard_res196 = phi { i64, i64, {} addrspace(10)*, {} addrspace(10)* } [ zeroinitializer, %top ], [ %unbox195301, %guard_pass193 ] | |
%114 = extractvalue { i64, i64, {} addrspace(10)*, {} addrspace(10)* } %guard_res196, 2, !dbg !9156 | |
%"'ipev" = extractvalue { i64, i64, {} addrspace(10)*, {} addrspace(10)* } %113, 2, !dbg !9158 | |
%arraylen330_replacementA = phi i64 , !dbg !9158 | |
%newstruct.sroa.0.0..sroa_idx_replacementA = phi i64* , !dbg !9178 | |
%newstruct.sroa.3.0..sroa_idx305_replacementA = phi i64* , !dbg !9178 | |
%_replacementA226 = phi i64 , !dbg !9179 | |
%_replacementA225 = phi i1 , !dbg !9181 | |
%_replacementA224 = phi i1 , !dbg !9174 | |
br i1 true, label %L47.lr.ph, label %L44, !dbg !9170 | |
L47.lr.ph: ; preds = %guard_exit194 | |
%_replacementA234 = phi i64 , !dbg !9182 | |
%_replacementA232 = phi i64* | |
%.repack.repack_replacementA = phi {} addrspace(10)* addrspace(10)* | |
%.repack227_replacementA = phi i64 addrspace(10)* | |
%.repack228_replacementA = phi i64 addrspace(10)* | |
%.repack.repack223_replacementA = phi i64 addrspace(10)* | |
%.repack219.repack_replacementA = phi i64 addrspace(10)* | |
%.repack219.repack230_replacementA = phi i64 addrspace(10)* | |
%"'ipc93" = addrspacecast { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] } addrspace(10)* %"'ipc" to { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] } addrspace(11)* | |
%115 = addrspacecast { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] } addrspace(10)* %56 to { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] } addrspace(11)* | |
%newstruct48.sroa.0.0..sroa_idx_replacementA = phi i64* | |
%.repack261_replacementA = phi i64 addrspace(10)* | |
%"'ipc163" = addrspacecast { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } addrspace(10)* %"'ipc162" to { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } addrspace(11)* | |
%116 = addrspacecast { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } addrspace(10)* %62 to { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } addrspace(11)* | |
%_replacementA231 = phi i64 addrspace(10)* | |
%_replacementA229 = phi i64 addrspace(10)* | |
%.repack_replacementA = phi {} addrspace(10)* addrspace(10)* | |
%.repack253_replacementA = phi i64 addrspace(10)* | |
%.repack249_replacementA = phi i64 addrspace(10)* | |
%"'ipc131" = addrspacecast { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } addrspace(10)* %"'ipc130" to { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } addrspace(11)* | |
%117 = addrspacecast { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } addrspace(10)* %52 to { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } addrspace(11)* | |
%"'ipc123" = addrspacecast { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } addrspace(10)* %"'ipc122" to { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } addrspace(11)* | |
%118 = addrspacecast { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } addrspace(10)* %48 to { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } addrspace(11)* | |
%119 = bitcast {}*** %36 to {}**, !dbg !9170 | |
%120 = getelementptr inbounds {}*, {}** %119, i64 -14, !dbg !9170 | |
%121 = getelementptr inbounds {}*, {}** %120, i64 16, !dbg !9170 | |
%122 = bitcast {}** %121 to i8**, !dbg !9170 | |
%123 = load i8*, i8** %122, align 8, !dbg !9170 | |
%124 = bitcast {}*** %32 to {}**, !dbg !9170 | |
%125 = getelementptr inbounds {}*, {}** %124, i64 -14, !dbg !9170 | |
%126 = getelementptr inbounds {}*, {}** %125, i64 16, !dbg !9170 | |
%127 = bitcast {}** %126 to i8**, !dbg !9170 | |
%128 = load i8*, i8** %127, align 8, !dbg !9170 | |
%129 = bitcast {}*** %28 to {}**, !dbg !9170 | |
%130 = getelementptr inbounds {}*, {}** %129, i64 -14, !dbg !9170 | |
%131 = getelementptr inbounds {}*, {}** %130, i64 16, !dbg !9170 | |
%132 = bitcast {}** %131 to i8**, !dbg !9170 | |
%133 = load i8*, i8** %132, align 8, !dbg !9170 | |
%134 = call noalias nonnull dereferenceable(16) dereferenceable_or_null(16) i8* @malloc(i64 16), !dbg !9170, !enzyme_cache_alloc !9183 | |
%unbox202.unpack241_malloccache = bitcast i8* %134 to i64*, !dbg !9170 | |
store i64* %unbox202.unpack241_malloccache, i64** %unbox202.unpack241_cache, align 8, !dbg !9170, !invariant.group !9185 | |
%135 = call noalias nonnull dereferenceable(16) dereferenceable_or_null(16) i8* @malloc(i64 16), !dbg !9170, !enzyme_cache_alloc !9186 | |
%unbox202.unpack_malloccache = bitcast i8* %135 to i64*, !dbg !9170 | |
store i64* %unbox202.unpack_malloccache, i64** %unbox202.unpack_cache, align 8, !dbg !9170, !invariant.group !9188 | |
%_malloccache204 = call noalias nonnull dereferenceable(2) dereferenceable_or_null(2) i8* @malloc(i64 2), !dbg !9170, !enzyme_cache_alloc !9189 | |
store i8* %_malloccache204, i8** %_cache203, align 1, !dbg !9170, !invariant.group !9090 | |
br label %L47, !dbg !9170 | |
guard_pass200: ; preds = %pass | |
%unbox202.elt_replacementA = phi i64 addrspace(11)* | |
%unbox202.unpack_replacementA = phi i64 | |
%"'ipiv79" = insertvalue { i64, i64, {} addrspace(10)*, {} addrspace(10)* } undef, i64 %unbox202.unpack_replacementA, 0 | |
%_replacementA241 = phi { i64, i64, {} addrspace(10)*, {} addrspace(10)* } | |
%unbox202.unpack241_replacementA = phi i64 | |
%"'ipiv80" = insertvalue { i64, i64, {} addrspace(10)*, {} addrspace(10)* } %"'ipiv79", i64 %unbox202.unpack241_replacementA, 1 | |
%unbox202.elt242_replacementA = phi {} addrspace(10)* addrspace(11)* | |
%136 = load {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)** %mdyncache_fromtape_cache238, align 8, !dereferenceable !410, !invariant.group !9191 | |
%137 = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)* addrspace(10)* %136, i64 %iv | |
%"unbox202.unpack243'il_phi" = load {} addrspace(10)*, {} addrspace(10)* addrspace(10)* %137, align 8, !invariant.group !9192 | |
%"'ipiv81" = insertvalue { i64, i64, {} addrspace(10)*, {} addrspace(10)* } %"'ipiv80", {} addrspace(10)* %"unbox202.unpack243'il_phi", 2 | |
%_replacementA237 = phi { i64, i64, {} addrspace(10)*, {} addrspace(10)* } | |
%unbox202.elt244_replacementA = phi {} addrspace(10)* addrspace(11)* | |
%138 = load {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)** %mdyncache_fromtape_cache235, align 8, !dereferenceable !410, !invariant.group !9193 | |
%139 = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)* addrspace(10)* %138, i64 %iv | |
%"unbox202.unpack245'il_phi" = load {} addrspace(10)*, {} addrspace(10)* addrspace(10)* %139, align 8, !invariant.group !9194 | |
%"unbox202246'ipiv" = insertvalue { i64, i64, {} addrspace(10)*, {} addrspace(10)* } %"'ipiv81", {} addrspace(10)* %"unbox202.unpack245'il_phi", 3 | |
%140 = load { i64, i64, {} addrspace(10)*, {} addrspace(10)* } addrspace(10)*, { i64, i64, {} addrspace(10)*, {} addrspace(10)* } addrspace(10)** %mdyncache_fromtape_cache246, align 8, !dereferenceable !410, !invariant.group !9195 | |
%141 = getelementptr inbounds { i64, i64, {} addrspace(10)*, {} addrspace(10)* }, { i64, i64, {} addrspace(10)*, {} addrspace(10)* } addrspace(10)* %140, i64 %iv | |
%unbox202246 = load { i64, i64, {} addrspace(10)*, {} addrspace(10)* }, { i64, i64, {} addrspace(10)*, {} addrspace(10)* } addrspace(10)* %141, align 8, !invariant.group !9196 | |
%142 = load i64*, i64** %unbox202.unpack_cache, align 8, !dereferenceable !410, !invariant.group !9188 | |
%143 = getelementptr inbounds i64, i64* %142, i64 %iv | |
store i64 %unbox202.unpack_replacementA, i64* %143, align 8, !tbaa !63, !invariant.group !9197 | |
%144 = load i64*, i64** %unbox202.unpack241_cache, align 8, !dereferenceable !410, !invariant.group !9185 | |
%145 = getelementptr inbounds i64, i64* %144, i64 %iv | |
store i64 %unbox202.unpack241_replacementA, i64* %145, align 8, !tbaa !63, !invariant.group !9198 | |
br label %L583 | |
allocsForInversion: ; No predecessors! | |
%"iv'ac" = alloca i64, align 8 | |
%"iv1'ac" = alloca i64, align 8 | |
%unbox202246_cache = alloca { i64, i64, {} addrspace(10)*, {} addrspace(10)* } addrspace(10)*, align 8 | |
%unbox202.unpack241_cache = alloca i64*, align 8 | |
%unbox202.unpack_cache = alloca i64*, align 8 | |
%146 = extractvalue { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i64, {} addrspace(10)*, i1, i64, i64, i64, i64 } addrspace(10)*, { {} addrspace(10)*, i64, i64 } addrspace(10)*, { {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64 }, i1 } addrspace(10)*, { {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64 }, i1 } addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, i64*, i64*, i64**, { i64, i64, {} addrspace(10)*, {} addrspace(10)* }, { i64, i64, {} addrspace(10)*, {} addrspace(10)* } addrspace(10)* } %tapeArg, 9 | |
%mdyncache_fromtape_cache = alloca { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i64, {} addrspace(10)*, i1, i64, i64, i64, i64 } addrspace(10)*, align 8 | |
store { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i64, {} addrspace(10)*, i1, i64, i64, i64, i64 } addrspace(10)* %146, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i64, {} addrspace(10)*, i1, i64, i64, i64, i64 } addrspace(10)** %mdyncache_fromtape_cache, align 8 | |
%147 = extractvalue { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i64, {} addrspace(10)*, i1, i64, i64, i64, i64 } addrspace(10)*, { {} addrspace(10)*, i64, i64 } addrspace(10)*, { {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64 }, i1 } addrspace(10)*, { {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64 }, i1 } addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, i64*, i64*, i64**, { i64, i64, {} addrspace(10)*, {} addrspace(10)* }, { i64, i64, {} addrspace(10)*, {} addrspace(10)* } addrspace(10)* } %tapeArg, 10 | |
%mdyncache_fromtape_cache125 = alloca { {} addrspace(10)*, i64, i64 } addrspace(10)*, align 8 | |
store { {} addrspace(10)*, i64, i64 } addrspace(10)* %147, { {} addrspace(10)*, i64, i64 } addrspace(10)** %mdyncache_fromtape_cache125, align 8 | |
%148 = extractvalue { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i64, {} addrspace(10)*, i1, i64, i64, i64, i64 } addrspace(10)*, { {} addrspace(10)*, i64, i64 } addrspace(10)*, { {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64 }, i1 } addrspace(10)*, { {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64 }, i1 } addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, i64*, i64*, i64**, { i64, i64, {} addrspace(10)*, {} addrspace(10)* }, { i64, i64, {} addrspace(10)*, {} addrspace(10)* } addrspace(10)* } %tapeArg, 11 | |
%mdyncache_fromtape_cache133 = alloca { {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64 }, i1 } addrspace(10)*, align 8 | |
store { {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64 }, i1 } addrspace(10)* %148, { {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64 }, i1 } addrspace(10)** %mdyncache_fromtape_cache133, align 8 | |
%149 = extractvalue { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i64, {} addrspace(10)*, i1, i64, i64, i64, i64 } addrspace(10)*, { {} addrspace(10)*, i64, i64 } addrspace(10)*, { {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64 }, i1 } addrspace(10)*, { {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64 }, i1 } addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, i64*, i64*, i64**, { i64, i64, {} addrspace(10)*, {} addrspace(10)* }, { i64, i64, {} addrspace(10)*, {} addrspace(10)* } addrspace(10)* } %tapeArg, 12 | |
%mdyncache_fromtape_cache165 = alloca { {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64 }, i1 } addrspace(10)*, align 8 | |
store { {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64 }, i1 } addrspace(10)* %149, { {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64 }, i1 } addrspace(10)** %mdyncache_fromtape_cache165, align 8 | |
%150 = extractvalue { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i64, {} addrspace(10)*, i1, i64, i64, i64, i64 } addrspace(10)*, { {} addrspace(10)*, i64, i64 } addrspace(10)*, { {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64 }, i1 } addrspace(10)*, { {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64 }, i1 } addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, i64*, i64*, i64**, { i64, i64, {} addrspace(10)*, {} addrspace(10)* }, { i64, i64, {} addrspace(10)*, {} addrspace(10)* } addrspace(10)* } %tapeArg, 13 | |
%mdyncache_fromtape_cache175 = alloca {} addrspace(10)* addrspace(10)*, align 8 | |
store {} addrspace(10)* addrspace(10)* %150, {} addrspace(10)* addrspace(10)** %mdyncache_fromtape_cache175, align 8 | |
%"arrayref'de" = alloca double, align 8 | |
%151 = getelementptr double, double* %"arrayref'de", i64 0 | |
store double 0.000000e+00, double* %151, align 8 | |
%_cache = alloca i64**, align 8 | |
%arraylen46_cache = alloca i64*, align 8 | |
%_cache203 = alloca i8*, align 8 | |
%152 = extractvalue { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i64, {} addrspace(10)*, i1, i64, i64, i64, i64 } addrspace(10)*, { {} addrspace(10)*, i64, i64 } addrspace(10)*, { {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64 }, i1 } addrspace(10)*, { {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64 }, i1 } addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, i64*, i64*, i64**, { i64, i64, {} addrspace(10)*, {} addrspace(10)* }, { i64, i64, {} addrspace(10)*, {} addrspace(10)* } addrspace(10)* } %tapeArg, 16 | |
%mdyncache_fromtape_cache235 = alloca {} addrspace(10)* addrspace(10)*, align 8 | |
store {} addrspace(10)* addrspace(10)* %152, {} addrspace(10)* addrspace(10)** %mdyncache_fromtape_cache235, align 8 | |
%153 = extractvalue { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i64, {} addrspace(10)*, i1, i64, i64, i64, i64 } addrspace(10)*, { {} addrspace(10)*, i64, i64 } addrspace(10)*, { {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64 }, i1 } addrspace(10)*, { {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64 }, i1 } addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, i64*, i64*, i64**, { i64, i64, {} addrspace(10)*, {} addrspace(10)* }, { i64, i64, {} addrspace(10)*, {} addrspace(10)* } addrspace(10)* } %tapeArg, 17 | |
%mdyncache_fromtape_cache238 = alloca {} addrspace(10)* addrspace(10)*, align 8 | |
store {} addrspace(10)* addrspace(10)* %153, {} addrspace(10)* addrspace(10)** %mdyncache_fromtape_cache238, align 8 | |
%154 = extractvalue { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i64, {} addrspace(10)*, i1, i64, i64, i64, i64 } addrspace(10)*, { {} addrspace(10)*, i64, i64 } addrspace(10)*, { {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64 }, i1 } addrspace(10)*, { {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64 }, i1 } addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, i64*, i64*, i64**, { i64, i64, {} addrspace(10)*, {} addrspace(10)* }, { i64, i64, {} addrspace(10)*, {} addrspace(10)* } addrspace(10)* } %tapeArg, 18 | |
%mdyncache_fromtape_cache242 = alloca i64*, align 8 | |
store i64* %154, i64** %mdyncache_fromtape_cache242, align 8 | |
%155 = extractvalue { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i64, {} addrspace(10)*, i1, i64, i64, i64, i64 } addrspace(10)*, { {} addrspace(10)*, i64, i64 } addrspace(10)*, { {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64 }, i1 } addrspace(10)*, { {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64 }, i1 } addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, i64*, i64*, i64**, { i64, i64, {} addrspace(10)*, {} addrspace(10)* }, { i64, i64, {} addrspace(10)*, {} addrspace(10)* } addrspace(10)* } %tapeArg, 19 | |
%mdyncache_fromtape_cache244 = alloca i64*, align 8 | |
store i64* %155, i64** %mdyncache_fromtape_cache244, align 8 | |
%156 = extractvalue { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i64, {} addrspace(10)*, i1, i64, i64, i64, i64 } addrspace(10)*, { {} addrspace(10)*, i64, i64 } addrspace(10)*, { {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64 }, i1 } addrspace(10)*, { {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64 }, i1 } addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, i64*, i64*, i64**, { i64, i64, {} addrspace(10)*, {} addrspace(10)* }, { i64, i64, {} addrspace(10)*, {} addrspace(10)* } addrspace(10)* } %tapeArg, 22 | |
%mdyncache_fromtape_cache246 = alloca { i64, i64, {} addrspace(10)*, {} addrspace(10)* } addrspace(10)*, align 8 | |
store { i64, i64, {} addrspace(10)*, {} addrspace(10)* } addrspace(10)* %156, { i64, i64, {} addrspace(10)*, {} addrspace(10)* } addrspace(10)** %mdyncache_fromtape_cache246, align 8 | |
%157 = extractvalue { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i64, {} addrspace(10)*, i1, i64, i64, i64, i64 } addrspace(10)*, { {} addrspace(10)*, i64, i64 } addrspace(10)*, { {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64 }, i1 } addrspace(10)*, { {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64 }, i1 } addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, i64*, i64*, i64**, { i64, i64, {} addrspace(10)*, {} addrspace(10)* }, { i64, i64, {} addrspace(10)*, {} addrspace(10)* } addrspace(10)* } %tapeArg, 20 | |
%mdyncache_fromtape_cache248 = alloca i64**, align 8 | |
store i64** %157, i64*** %mdyncache_fromtape_cache248, align 8 | |
inverttop: ; preds = %invertguard_exit194, %invertguard_pass193 | |
fence syncscope("singlethread") seq_cst | |
fence syncscope("singlethread") seq_cst | |
ret void | |
invertL9.L44_crit_edge: ; No predecessors! | |
invertL44: ; No predecessors! | |
invertL47: ; preds = %invertL150_phimerge_phimerge | |
%158 = load i64, i64* %"iv'ac", align 8 | |
%159 = icmp eq i64 %158, 0 | |
%160 = xor i1 %159, true | |
br i1 %159, label %invertL47.lr.ph, label %incinvertL47 | |
incinvertL47: ; preds = %invertL47 | |
%161 = load i64, i64* %"iv'ac", align 8 | |
%162 = add nsw i64 %161, -1 | |
store i64 %162, i64* %"iv'ac", align 8 | |
br label %invertL583 | |
invertL64: ; No predecessors! | |
invertL150: ; preds = %invertL414 | |
%163 = load i64, i64* %"iv'ac", align 8, !dbg !9042 | |
%164 = icmp eq i64 %163, 0, !dbg !9042 | |
br i1 %164, label %invertL150_phirc, label %invertL150_phirc72, !dbg !9042 | |
invertL150_phirc: ; preds = %invertL150 | |
br label %invertL150_phimerge | |
invertL150_phirc72: ; preds = %invertL150 | |
%165 = sub nuw i64 %163, 1 | |
%_unwrap = add i64 %165, 2 | |
%_unwrap73 = add nsw i64 %_unwrap, -1 | |
%_unwrap74 = getelementptr inbounds { i64, [2 x { i64, i64, {} addrspace(10)*, {} addrspace(10)* }], {} addrspace(10)* }, { i64, [2 x { i64, i64, {} addrspace(10)*, {} addrspace(10)* }], {} addrspace(10)* } addrspace(11)* %0, i64 0, i32 1, i64 %_unwrap73 | |
%.not239_unwrap = icmp eq { i64, i64, {} addrspace(10)*, {} addrspace(10)* } addrspace(11)* %_unwrap74, null | |
br i1 %.not239_unwrap, label %invertL150_phirc72_phirc, label %invertL150_phirc72_phirc75 | |
invertL150_phimerge: ; preds = %invertL150_phirc72_phimerge, %invertL150_phirc | |
%166 = phi {} addrspace(10)* [ %114, %invertL150_phirc ], [ %_unwrap76, %invertL150_phirc72_phimerge ], !dbg !9042 | |
%167 = load i64, i64* %"iv'ac", align 8, !dbg !9042 | |
%168 = icmp eq i64 %167, 0, !dbg !9042 | |
br i1 %168, label %invertL150_phimerge_phirc, label %invertL150_phimerge_phirc83, !dbg !9042 | |
invertL150_phimerge_phirc: ; preds = %invertL150_phimerge | |
br label %invertL150_phimerge_phimerge | |
invertL150_phimerge_phirc83: ; preds = %invertL150_phimerge | |
%169 = sub nuw i64 %167, 1 | |
%_unwrap84 = add i64 %169, 2 | |
%_unwrap85 = add nsw i64 %_unwrap84, -1 | |
%_unwrap86 = getelementptr inbounds { i64, [2 x { i64, i64, {} addrspace(10)*, {} addrspace(10)* }], {} addrspace(10)* }, { i64, [2 x { i64, i64, {} addrspace(10)*, {} addrspace(10)* }], {} addrspace(10)* } addrspace(11)* %0, i64 0, i32 1, i64 %_unwrap85 | |
%.not239_unwrap87 = icmp eq { i64, i64, {} addrspace(10)*, {} addrspace(10)* } addrspace(11)* %_unwrap86, null | |
br i1 %.not239_unwrap87, label %invertL150_phimerge_phirc83_phirc, label %invertL150_phimerge_phirc83_phirc88 | |
invertL150_phimerge_phimerge: ; preds = %invertL150_phimerge_phirc83_phimerge, %invertL150_phimerge_phirc | |
%170 = phi {} addrspace(10)* [ %"'ipev", %invertL150_phimerge_phirc ], [ %"'ipev82_unwrap", %invertL150_phimerge_phirc83_phimerge ], !dbg !9042 | |
%171 = load i64, i64* %"iv'ac", align 8, !dbg !9042 | |
%_unwrap96 = load { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i64, {} addrspace(10)*, i1, i64, i64, i64, i64 } addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i64, {} addrspace(10)*, i1, i64, i64, i64, i64 } addrspace(10)** %mdyncache_fromtape_cache, align 8, !dbg !9042, !dereferenceable !410, !invariant.group !9046 | |
%_unwrap97 = getelementptr inbounds { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i64, {} addrspace(10)*, i1, i64, i64, i64, i64 }, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i64, {} addrspace(10)*, i1, i64, i64, i64, i64 } addrspace(10)* %_unwrap96, i64 %171, !dbg !9042 | |
%tapeArg94_unwrap = load { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i64, {} addrspace(10)*, i1, i64, i64, i64, i64 }, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i64, {} addrspace(10)*, i1, i64, i64, i64, i64 } addrspace(10)* %_unwrap97, align 8, !dbg !9042, !invariant.group !9047 | |
call fastcc void @diffejulia_copyto__12690({} addrspace(10)* align 16 %166, {} addrspace(10)* align 16 %170, { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] } addrspace(11)* nocapture readonly align 8 %115, { { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }, [2 x i64] } addrspace(11)* nocapture align 8 %"'ipc93", { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i64, {} addrspace(10)*, i1, i64, i64, i64, i64 } %tapeArg94_unwrap), !dbg !9042 | |
br label %invertL47 | |
invertL150_phimerge_phirc83_phirc: ; preds = %invertL150_phimerge_phirc83 | |
br label %invertL150_phimerge_phirc83_phimerge | |
invertL150_phimerge_phirc83_phirc88: ; preds = %invertL150_phimerge_phirc83 | |
%172 = extractvalue { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i64, {} addrspace(10)*, i1, i64, i64, i64, i64 } addrspace(10)*, { {} addrspace(10)*, i64, i64 } addrspace(10)*, { {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64 }, i1 } addrspace(10)*, { {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64 }, i1 } addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, i64*, i64*, i64**, { i64, i64, {} addrspace(10)*, {} addrspace(10)* }, { i64, i64, {} addrspace(10)*, {} addrspace(10)* } addrspace(10)* } %tapeArg, 16 | |
%173 = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)* addrspace(10)* %172, i64 %169 | |
%174 = load {} addrspace(10)*, {} addrspace(10)* addrspace(10)* %173, align 8, !invariant.group !9199 | |
%175 = extractvalue { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i64, {} addrspace(10)*, i1, i64, i64, i64, i64 } addrspace(10)*, { {} addrspace(10)*, i64, i64 } addrspace(10)*, { {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64 }, i1 } addrspace(10)*, { {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64 }, i1 } addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, i64*, i64*, i64**, { i64, i64, {} addrspace(10)*, {} addrspace(10)* }, { i64, i64, {} addrspace(10)*, {} addrspace(10)* } addrspace(10)* } %tapeArg, 17 | |
%176 = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)* addrspace(10)* %175, i64 %169 | |
%177 = load {} addrspace(10)*, {} addrspace(10)* addrspace(10)* %176, align 8, !invariant.group !9200 | |
%178 = load i64*, i64** %unbox202.unpack241_cache, align 8, !dereferenceable !410, !invariant.group !9185 | |
%179 = getelementptr inbounds i64, i64* %178, i64 %169 | |
%180 = load i64, i64* %179, align 8, !tbaa !63, !alias.scope !97, !noalias !98, !invariant.group !9198 | |
%181 = load i64*, i64** %unbox202.unpack_cache, align 8, !dereferenceable !410, !invariant.group !9188 | |
%182 = getelementptr inbounds i64, i64* %181, i64 %169 | |
%183 = load i64, i64* %182, align 8, !tbaa !63, !alias.scope !97, !noalias !98, !invariant.group !9197 | |
%"'ipiv79_unwrap" = insertvalue { i64, i64, {} addrspace(10)*, {} addrspace(10)* } undef, i64 %183, 0 | |
%"'ipiv80_unwrap" = insertvalue { i64, i64, {} addrspace(10)*, {} addrspace(10)* } %"'ipiv79_unwrap", i64 %180, 1 | |
%"'ipiv81_unwrap" = insertvalue { i64, i64, {} addrspace(10)*, {} addrspace(10)* } %"'ipiv80_unwrap", {} addrspace(10)* %177, 2 | |
%"unbox202246'ipiv_unwrap" = insertvalue { i64, i64, {} addrspace(10)*, {} addrspace(10)* } %"'ipiv81_unwrap", {} addrspace(10)* %174, 3 | |
br label %invertL150_phimerge_phirc83_phimerge | |
invertL150_phimerge_phirc83_phimerge: ; preds = %invertL150_phimerge_phirc83_phirc88, %invertL150_phimerge_phirc83_phirc | |
%184 = phi { i64, i64, {} addrspace(10)*, {} addrspace(10)* } [ zeroinitializer, %invertL150_phimerge_phirc83_phirc ], [ %"unbox202246'ipiv_unwrap", %invertL150_phimerge_phirc83_phirc88 ] | |
%"'ipev82_unwrap" = extractvalue { i64, i64, {} addrspace(10)*, {} addrspace(10)* } %184, 2 | |
br label %invertL150_phimerge_phimerge | |
invertL150_phirc72_phirc: ; preds = %invertL150_phirc72 | |
br label %invertL150_phirc72_phimerge | |
invertL150_phirc72_phirc75: ; preds = %invertL150_phirc72 | |
%185 = extractvalue { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i64, {} addrspace(10)*, i1, i64, i64, i64, i64 } addrspace(10)*, { {} addrspace(10)*, i64, i64 } addrspace(10)*, { {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64 }, i1 } addrspace(10)*, { {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64 }, i1 } addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, i64*, i64*, i64**, { i64, i64, {} addrspace(10)*, {} addrspace(10)* }, { i64, i64, {} addrspace(10)*, {} addrspace(10)* } addrspace(10)* } %tapeArg, 22 | |
%186 = getelementptr inbounds { i64, i64, {} addrspace(10)*, {} addrspace(10)* }, { i64, i64, {} addrspace(10)*, {} addrspace(10)* } addrspace(10)* %185, i64 %165 | |
%187 = load { i64, i64, {} addrspace(10)*, {} addrspace(10)* }, { i64, i64, {} addrspace(10)*, {} addrspace(10)* } addrspace(10)* %186, align 8, !invariant.group !9201 | |
br label %invertL150_phirc72_phimerge | |
invertL150_phirc72_phimerge: ; preds = %invertL150_phirc72_phirc75, %invertL150_phirc72_phirc | |
%188 = phi { i64, i64, {} addrspace(10)*, {} addrspace(10)* } [ zeroinitializer, %invertL150_phirc72_phirc ], [ %187, %invertL150_phirc72_phirc75 ] | |
%_unwrap76 = extractvalue { i64, i64, {} addrspace(10)*, {} addrspace(10)* } %188, 2 | |
br label %invertL150_phimerge | |
invertL411: ; No predecessors! | |
invertL414: ; preds = %invertL453 | |
br label %invertL150 | |
invertL435: ; No predecessors! | |
invertL453: ; preds = %invertL479_phimerge_phimerge, %invertL468 | |
br label %invertL414 | |
invertL468: ; preds = %invertL569, %invertL475_phimerge_phimerge | |
br label %invertL453 | |
invertL475: ; preds = %invertL569 | |
%189 = load i64, i64* %"iv'ac", align 8, !dbg !9095 | |
%190 = icmp eq i64 %189, 0, !dbg !9095 | |
br i1 %190, label %invertL475_phirc, label %invertL475_phirc104, !dbg !9095 | |
invertL475_phirc: ; preds = %invertL475 | |
br label %invertL475_phimerge | |
invertL475_phirc104: ; preds = %invertL475 | |
%191 = sub nuw i64 %189, 1 | |
%_unwrap105 = add i64 %191, 2 | |
%_unwrap106 = add nsw i64 %_unwrap105, -1 | |
%_unwrap107 = getelementptr inbounds { i64, [2 x { i64, i64, {} addrspace(10)*, {} addrspace(10)* }], {} addrspace(10)* }, { i64, [2 x { i64, i64, {} addrspace(10)*, {} addrspace(10)* }], {} addrspace(10)* } addrspace(11)* %0, i64 0, i32 1, i64 %_unwrap106 | |
%.not239_unwrap108 = icmp eq { i64, i64, {} addrspace(10)*, {} addrspace(10)* } addrspace(11)* %_unwrap107, null | |
br i1 %.not239_unwrap108, label %invertL475_phirc104_phirc, label %invertL475_phirc104_phirc109 | |
invertL475_phimerge: ; preds = %invertL475_phirc104_phimerge, %invertL475_phirc | |
%192 = phi { i64, i64, {} addrspace(10)*, {} addrspace(10)* } [ %guard_res196, %invertL475_phirc ], [ %216, %invertL475_phirc104_phimerge ], !dbg !9095 | |
%_unwrap110 = extractvalue { i64, i64, {} addrspace(10)*, {} addrspace(10)* } %192, 3, !dbg !9095 | |
%193 = load i64, i64* %"iv'ac", align 8, !dbg !9095 | |
%194 = icmp eq i64 %193, 0, !dbg !9095 | |
br i1 %194, label %invertL475_phimerge_phirc, label %invertL475_phimerge_phirc112, !dbg !9095 | |
invertL475_phimerge_phirc: ; preds = %invertL475_phimerge | |
br label %invertL475_phimerge_phimerge | |
invertL475_phimerge_phirc112: ; preds = %invertL475_phimerge | |
%195 = sub nuw i64 %193, 1 | |
%_unwrap113 = add i64 %195, 2 | |
%_unwrap114 = add nsw i64 %_unwrap113, -1 | |
%_unwrap115 = getelementptr inbounds { i64, [2 x { i64, i64, {} addrspace(10)*, {} addrspace(10)* }], {} addrspace(10)* }, { i64, [2 x { i64, i64, {} addrspace(10)*, {} addrspace(10)* }], {} addrspace(10)* } addrspace(11)* %0, i64 0, i32 1, i64 %_unwrap114 | |
%.not239_unwrap116 = icmp eq { i64, i64, {} addrspace(10)*, {} addrspace(10)* } addrspace(11)* %_unwrap115, null | |
br i1 %.not239_unwrap116, label %invertL475_phimerge_phirc112_phirc, label %invertL475_phimerge_phirc112_phirc117 | |
invertL475_phimerge_phimerge: ; preds = %invertL475_phimerge_phirc112_phimerge, %invertL475_phimerge_phirc | |
%196 = phi { i64, i64, {} addrspace(10)*, {} addrspace(10)* } [ %113, %invertL475_phimerge_phirc ], [ %212, %invertL475_phimerge_phirc112_phimerge ], !dbg !9095 | |
%"'ipev111_unwrap" = extractvalue { i64, i64, {} addrspace(10)*, {} addrspace(10)* } %196, 3, !dbg !9095 | |
%197 = load i64, i64* %"iv'ac", align 8, !dbg !9095 | |
%_unwrap127 = load { {} addrspace(10)*, i64, i64 } addrspace(10)*, { {} addrspace(10)*, i64, i64 } addrspace(10)** %mdyncache_fromtape_cache125, align 8, !dbg !9095, !dereferenceable !410, !invariant.group !9096 | |
%_unwrap128 = getelementptr inbounds { {} addrspace(10)*, i64, i64 }, { {} addrspace(10)*, i64, i64 } addrspace(10)* %_unwrap127, i64 %197, !dbg !9095 | |
%tapeArg124_unwrap = load { {} addrspace(10)*, i64, i64 }, { {} addrspace(10)*, i64, i64 } addrspace(10)* %_unwrap128, align 8, !dbg !9095, !invariant.group !9097 | |
call fastcc void @diffejulia_copyto_unaliased__12571.89({} addrspace(10)* align 16 %_unwrap110, {} addrspace(10)* align 16 %"'ipev111_unwrap", { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } addrspace(11)* nocapture readonly align 8 %118, { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } addrspace(11)* nocapture align 8 %"'ipc123", { {} addrspace(10)*, i64, i64 } %tapeArg124_unwrap), !dbg !9095 | |
%198 = load i64, i64* %"iv'ac", align 8, !dbg !9092 | |
%"'ipc129_unwrap" = addrspacecast { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } addrspace(10)* %"'ipc122" to { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }*, !dbg !9092 | |
%199 = load i64, i64* %"iv'ac", align 8, !dbg !9092 | |
%_unwrap135 = load { {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64 }, i1 } addrspace(10)*, { {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64 }, i1 } addrspace(10)** %mdyncache_fromtape_cache133, align 8, !dbg !9092, !dereferenceable !410, !invariant.group !9093 | |
%_unwrap136 = getelementptr inbounds { {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64 }, i1 }, { {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64 }, i1 } addrspace(10)* %_unwrap135, i64 %199, !dbg !9092 | |
%tapeArg132_unwrap = load { {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64 }, i1 }, { {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64 }, i1 } addrspace(10)* %_unwrap136, align 8, !dbg !9092, !invariant.group !9094 | |
call fastcc void @diffejulia_unalias_12576.92({ {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }* nocapture nofree writeonly align 8 "enzyme_sret" undef, { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }* nocapture nofree align 8 "enzyme_sret" %"'ipc129_unwrap", [1 x {} addrspace(10)*]* nocapture nofree writeonly align 8 "enzymejl_returnRoots" undef, {} addrspace(10)* align 16 %_unwrap110, {} addrspace(10)* align 16 %"'ipev111_unwrap", { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } addrspace(11)* nocapture readonly align 8 %117, { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } addrspace(11)* nocapture align 8 %"'ipc131", { {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64 }, i1 } %tapeArg132_unwrap), !dbg !9092 | |
br label %invertL468 | |
invertL475_phimerge_phirc112_phirc: ; preds = %invertL475_phimerge_phirc112 | |
br label %invertL475_phimerge_phirc112_phimerge | |
invertL475_phimerge_phirc112_phirc117: ; preds = %invertL475_phimerge_phirc112 | |
%200 = extractvalue { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i64, {} addrspace(10)*, i1, i64, i64, i64, i64 } addrspace(10)*, { {} addrspace(10)*, i64, i64 } addrspace(10)*, { {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64 }, i1 } addrspace(10)*, { {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64 }, i1 } addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, i64*, i64*, i64**, { i64, i64, {} addrspace(10)*, {} addrspace(10)* }, { i64, i64, {} addrspace(10)*, {} addrspace(10)* } addrspace(10)* } %tapeArg, 16 | |
%201 = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)* addrspace(10)* %200, i64 %195 | |
%202 = load {} addrspace(10)*, {} addrspace(10)* addrspace(10)* %201, align 8, !invariant.group !9199 | |
%203 = extractvalue { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i64, {} addrspace(10)*, i1, i64, i64, i64, i64 } addrspace(10)*, { {} addrspace(10)*, i64, i64 } addrspace(10)*, { {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64 }, i1 } addrspace(10)*, { {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64 }, i1 } addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, i64*, i64*, i64**, { i64, i64, {} addrspace(10)*, {} addrspace(10)* }, { i64, i64, {} addrspace(10)*, {} addrspace(10)* } addrspace(10)* } %tapeArg, 17 | |
%204 = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)* addrspace(10)* %203, i64 %195 | |
%205 = load {} addrspace(10)*, {} addrspace(10)* addrspace(10)* %204, align 8, !invariant.group !9200 | |
%206 = load i64*, i64** %unbox202.unpack241_cache, align 8, !dereferenceable !410, !invariant.group !9185 | |
%207 = getelementptr inbounds i64, i64* %206, i64 %195 | |
%208 = load i64, i64* %207, align 8, !tbaa !63, !alias.scope !97, !noalias !98, !invariant.group !9198 | |
%209 = load i64*, i64** %unbox202.unpack_cache, align 8, !dereferenceable !410, !invariant.group !9188 | |
%210 = getelementptr inbounds i64, i64* %209, i64 %195 | |
%211 = load i64, i64* %210, align 8, !tbaa !63, !alias.scope !97, !noalias !98, !invariant.group !9197 | |
%"'ipiv79_unwrap118" = insertvalue { i64, i64, {} addrspace(10)*, {} addrspace(10)* } undef, i64 %211, 0 | |
%"'ipiv80_unwrap119" = insertvalue { i64, i64, {} addrspace(10)*, {} addrspace(10)* } %"'ipiv79_unwrap118", i64 %208, 1 | |
%"'ipiv81_unwrap120" = insertvalue { i64, i64, {} addrspace(10)*, {} addrspace(10)* } %"'ipiv80_unwrap119", {} addrspace(10)* %205, 2 | |
%"unbox202246'ipiv_unwrap121" = insertvalue { i64, i64, {} addrspace(10)*, {} addrspace(10)* } %"'ipiv81_unwrap120", {} addrspace(10)* %202, 3 | |
br label %invertL475_phimerge_phirc112_phimerge | |
invertL475_phimerge_phirc112_phimerge: ; preds = %invertL475_phimerge_phirc112_phirc117, %invertL475_phimerge_phirc112_phirc | |
%212 = phi { i64, i64, {} addrspace(10)*, {} addrspace(10)* } [ zeroinitializer, %invertL475_phimerge_phirc112_phirc ], [ %"unbox202246'ipiv_unwrap121", %invertL475_phimerge_phirc112_phirc117 ] | |
br label %invertL475_phimerge_phimerge | |
invertL475_phirc104_phirc: ; preds = %invertL475_phirc104 | |
br label %invertL475_phirc104_phimerge | |
invertL475_phirc104_phirc109: ; preds = %invertL475_phirc104 | |
%213 = extractvalue { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i64, {} addrspace(10)*, i1, i64, i64, i64, i64 } addrspace(10)*, { {} addrspace(10)*, i64, i64 } addrspace(10)*, { {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64 }, i1 } addrspace(10)*, { {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64 }, i1 } addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, i64*, i64*, i64**, { i64, i64, {} addrspace(10)*, {} addrspace(10)* }, { i64, i64, {} addrspace(10)*, {} addrspace(10)* } addrspace(10)* } %tapeArg, 22 | |
%214 = getelementptr inbounds { i64, i64, {} addrspace(10)*, {} addrspace(10)* }, { i64, i64, {} addrspace(10)*, {} addrspace(10)* } addrspace(10)* %213, i64 %191 | |
%215 = load { i64, i64, {} addrspace(10)*, {} addrspace(10)* }, { i64, i64, {} addrspace(10)*, {} addrspace(10)* } addrspace(10)* %214, align 8, !invariant.group !9201 | |
br label %invertL475_phirc104_phimerge | |
invertL475_phirc104_phimerge: ; preds = %invertL475_phirc104_phirc109, %invertL475_phirc104_phirc | |
%216 = phi { i64, i64, {} addrspace(10)*, {} addrspace(10)* } [ zeroinitializer, %invertL475_phirc104_phirc ], [ %215, %invertL475_phirc104_phirc109 ] | |
br label %invertL475_phimerge | |
invertL479: ; preds = %invertL569, %invertL501.lr.ph | |
%217 = load i64, i64* %"iv'ac", align 8, !dbg !9098 | |
%"'ipc143_unwrap" = addrspacecast { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } addrspace(10)* %"'ipc142" to { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }*, !dbg !9098 | |
%218 = load i64, i64* %"iv'ac", align 8, !dbg !9098 | |
%219 = icmp eq i64 %218, 0, !dbg !9098 | |
br i1 %219, label %invertL479_phirc, label %invertL479_phirc144, !dbg !9098 | |
invertL479_phirc: ; preds = %invertL479 | |
br label %invertL479_phimerge | |
invertL479_phirc144: ; preds = %invertL479 | |
%220 = sub nuw i64 %218, 1 | |
%_unwrap145 = add i64 %220, 2 | |
%_unwrap146 = add nsw i64 %_unwrap145, -1 | |
%_unwrap147 = getelementptr inbounds { i64, [2 x { i64, i64, {} addrspace(10)*, {} addrspace(10)* }], {} addrspace(10)* }, { i64, [2 x { i64, i64, {} addrspace(10)*, {} addrspace(10)* }], {} addrspace(10)* } addrspace(11)* %0, i64 0, i32 1, i64 %_unwrap146 | |
%.not239_unwrap148 = icmp eq { i64, i64, {} addrspace(10)*, {} addrspace(10)* } addrspace(11)* %_unwrap147, null | |
br i1 %.not239_unwrap148, label %invertL479_phirc144_phirc, label %invertL479_phirc144_phirc149 | |
invertL479_phimerge: ; preds = %invertL479_phirc144_phimerge, %invertL479_phirc | |
%221 = phi { i64, i64, {} addrspace(10)*, {} addrspace(10)* } [ %guard_res196, %invertL479_phirc ], [ %243, %invertL479_phirc144_phimerge ], !dbg !9098 | |
%_unwrap150 = extractvalue { i64, i64, {} addrspace(10)*, {} addrspace(10)* } %221, 3, !dbg !9098 | |
%222 = load i64, i64* %"iv'ac", align 8, !dbg !9098 | |
%223 = icmp eq i64 %222, 0, !dbg !9098 | |
br i1 %223, label %invertL479_phimerge_phirc, label %invertL479_phimerge_phirc151, !dbg !9098 | |
invertL479_phimerge_phirc: ; preds = %invertL479_phimerge | |
br label %invertL479_phimerge_phimerge | |
invertL479_phimerge_phirc151: ; preds = %invertL479_phimerge | |
%224 = sub nuw i64 %222, 1 | |
%_unwrap152 = add i64 %224, 2 | |
%_unwrap153 = add nsw i64 %_unwrap152, -1 | |
%_unwrap154 = getelementptr inbounds { i64, [2 x { i64, i64, {} addrspace(10)*, {} addrspace(10)* }], {} addrspace(10)* }, { i64, [2 x { i64, i64, {} addrspace(10)*, {} addrspace(10)* }], {} addrspace(10)* } addrspace(11)* %0, i64 0, i32 1, i64 %_unwrap153 | |
%.not239_unwrap155 = icmp eq { i64, i64, {} addrspace(10)*, {} addrspace(10)* } addrspace(11)* %_unwrap154, null | |
br i1 %.not239_unwrap155, label %invertL479_phimerge_phirc151_phirc, label %invertL479_phimerge_phirc151_phirc156 | |
invertL479_phimerge_phimerge: ; preds = %invertL479_phimerge_phirc151_phimerge, %invertL479_phimerge_phirc | |
%225 = phi { i64, i64, {} addrspace(10)*, {} addrspace(10)* } [ %113, %invertL479_phimerge_phirc ], [ %239, %invertL479_phimerge_phirc151_phimerge ], !dbg !9098 | |
%"'ipev111_unwrap161" = extractvalue { i64, i64, {} addrspace(10)*, {} addrspace(10)* } %225, 3, !dbg !9098 | |
%226 = load i64, i64* %"iv'ac", align 8, !dbg !9098 | |
%_unwrap167 = load { {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64 }, i1 } addrspace(10)*, { {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64 }, i1 } addrspace(10)** %mdyncache_fromtape_cache165, align 8, !dbg !9098, !dereferenceable !410, !invariant.group !9103 | |
%_unwrap168 = getelementptr inbounds { {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64 }, i1 }, { {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64 }, i1 } addrspace(10)* %_unwrap167, i64 %226, !dbg !9098 | |
%tapeArg164_unwrap = load { {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64 }, i1 }, { {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64 }, i1 } addrspace(10)* %_unwrap168, align 8, !dbg !9098, !invariant.group !9104 | |
call fastcc void @diffejulia_unalias_12576.92({ {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }* nocapture nofree writeonly align 8 "enzyme_sret" undef, { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 }* nocapture nofree align 8 "enzyme_sret" %"'ipc143_unwrap", [1 x {} addrspace(10)*]* nocapture nofree writeonly align 8 "enzymejl_returnRoots" undef, {} addrspace(10)* align 16 %_unwrap150, {} addrspace(10)* align 16 %"'ipev111_unwrap161", { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } addrspace(11)* nocapture readonly align 8 %116, { {} addrspace(10)*, [1 x [2 x i64]], i64, i64 } addrspace(11)* nocapture align 8 %"'ipc163", { {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64 }, i1 } %tapeArg164_unwrap), !dbg !9098 | |
br label %invertL453 | |
invertL479_phimerge_phirc151_phirc: ; preds = %invertL479_phimerge_phirc151 | |
br label %invertL479_phimerge_phirc151_phimerge | |
invertL479_phimerge_phirc151_phirc156: ; preds = %invertL479_phimerge_phirc151 | |
%227 = extractvalue { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i64, {} addrspace(10)*, i1, i64, i64, i64, i64 } addrspace(10)*, { {} addrspace(10)*, i64, i64 } addrspace(10)*, { {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64 }, i1 } addrspace(10)*, { {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64 }, i1 } addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, i64*, i64*, i64**, { i64, i64, {} addrspace(10)*, {} addrspace(10)* }, { i64, i64, {} addrspace(10)*, {} addrspace(10)* } addrspace(10)* } %tapeArg, 16 | |
%228 = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)* addrspace(10)* %227, i64 %224 | |
%229 = load {} addrspace(10)*, {} addrspace(10)* addrspace(10)* %228, align 8, !invariant.group !9199 | |
%230 = extractvalue { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i64, {} addrspace(10)*, i1, i64, i64, i64, i64 } addrspace(10)*, { {} addrspace(10)*, i64, i64 } addrspace(10)*, { {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64 }, i1 } addrspace(10)*, { {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64 }, i1 } addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, i64*, i64*, i64**, { i64, i64, {} addrspace(10)*, {} addrspace(10)* }, { i64, i64, {} addrspace(10)*, {} addrspace(10)* } addrspace(10)* } %tapeArg, 17 | |
%231 = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)* addrspace(10)* %230, i64 %224 | |
%232 = load {} addrspace(10)*, {} addrspace(10)* addrspace(10)* %231, align 8, !invariant.group !9200 | |
%233 = load i64*, i64** %unbox202.unpack241_cache, align 8, !dereferenceable !410, !invariant.group !9185 | |
%234 = getelementptr inbounds i64, i64* %233, i64 %224 | |
%235 = load i64, i64* %234, align 8, !tbaa !63, !alias.scope !97, !noalias !98, !invariant.group !9198 | |
%236 = load i64*, i64** %unbox202.unpack_cache, align 8, !dereferenceable !410, !invariant.group !9188 | |
%237 = getelementptr inbounds i64, i64* %236, i64 %224 | |
%238 = load i64, i64* %237, align 8, !tbaa !63, !alias.scope !97, !noalias !98, !invariant.group !9197 | |
%"'ipiv79_unwrap157" = insertvalue { i64, i64, {} addrspace(10)*, {} addrspace(10)* } undef, i64 %238, 0 | |
%"'ipiv80_unwrap158" = insertvalue { i64, i64, {} addrspace(10)*, {} addrspace(10)* } %"'ipiv79_unwrap157", i64 %235, 1 | |
%"'ipiv81_unwrap159" = insertvalue { i64, i64, {} addrspace(10)*, {} addrspace(10)* } %"'ipiv80_unwrap158", {} addrspace(10)* %232, 2 | |
%"unbox202246'ipiv_unwrap160" = insertvalue { i64, i64, {} addrspace(10)*, {} addrspace(10)* } %"'ipiv81_unwrap159", {} addrspace(10)* %229, 3 | |
br label %invertL479_phimerge_phirc151_phimerge | |
invertL479_phimerge_phirc151_phimerge: ; preds = %invertL479_phimerge_phirc151_phirc156, %invertL479_phimerge_phirc151_phirc | |
%239 = phi { i64, i64, {} addrspace(10)*, {} addrspace(10)* } [ zeroinitializer, %invertL479_phimerge_phirc151_phirc ], [ %"unbox202246'ipiv_unwrap160", %invertL479_phimerge_phirc151_phirc156 ] | |
br label %invertL479_phimerge_phimerge | |
invertL479_phirc144_phirc: ; preds = %invertL479_phirc144 | |
br label %invertL479_phirc144_phimerge | |
invertL479_phirc144_phirc149: ; preds = %invertL479_phirc144 | |
%240 = extractvalue { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i64, {} addrspace(10)*, i1, i64, i64, i64, i64 } addrspace(10)*, { {} addrspace(10)*, i64, i64 } addrspace(10)*, { {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64 }, i1 } addrspace(10)*, { {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64 }, i1 } addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, i64*, i64*, i64**, { i64, i64, {} addrspace(10)*, {} addrspace(10)* }, { i64, i64, {} addrspace(10)*, {} addrspace(10)* } addrspace(10)* } %tapeArg, 22 | |
%241 = getelementptr inbounds { i64, i64, {} addrspace(10)*, {} addrspace(10)* }, { i64, i64, {} addrspace(10)*, {} addrspace(10)* } addrspace(10)* %240, i64 %220 | |
%242 = load { i64, i64, {} addrspace(10)*, {} addrspace(10)* }, { i64, i64, {} addrspace(10)*, {} addrspace(10)* } addrspace(10)* %241, align 8, !invariant.group !9201 | |
br label %invertL479_phirc144_phimerge | |
invertL479_phirc144_phimerge: ; preds = %invertL479_phirc144_phirc149, %invertL479_phirc144_phirc | |
%243 = phi { i64, i64, {} addrspace(10)*, {} addrspace(10)* } [ zeroinitializer, %invertL479_phirc144_phirc ], [ %242, %invertL479_phirc144_phirc149 ] | |
br label %invertL479_phimerge | |
invertL501.lr.ph: ; preds = %invertL501_phimerge | |
%244 = load i64, i64* %"iv1'ac", align 8 | |
%245 = load i64, i64* %"iv'ac", align 8 | |
%246 = load i64, i64* %"iv1'ac", align 8 | |
%_unwrap249 = load i64**, i64*** %mdyncache_fromtape_cache248, align 8, !dbg !9132, !invariant.group !9133 | |
%_unwrap250 = getelementptr inbounds i64*, i64** %_unwrap249, i64 %245 | |
%forfree251 = load i64*, i64** %_unwrap250, align 8, !dereferenceable !410, !invariant.group !9146 | |
%247 = bitcast i64* %forfree251 to i8* | |
call void @free(i8* nonnull %247), !dbg !9202 | |
br label %invertL479 | |
invertL501: ; preds = %mergeinvertL501_L569.loopexit, %incinvertL501 | |
%248 = load i64, i64* %"iv1'ac", align 8, !dbg !9148 | |
%249 = load i64, i64* %"iv'ac", align 8, !dbg !9148 | |
%250 = icmp eq i64 %249, 0, !dbg !9148 | |
br i1 %250, label %invertL501_phirc, label %invertL501_phirc177, !dbg !9148 | |
invertL501_phirc: ; preds = %invertL501 | |
br label %invertL501_phimerge | |
invertL501_phirc177: ; preds = %invertL501 | |
%251 = sub nuw i64 %249, 1 | |
%_unwrap178 = add i64 %251, 2 | |
%_unwrap179 = add nsw i64 %_unwrap178, -1 | |
%_unwrap180 = getelementptr inbounds { i64, [2 x { i64, i64, {} addrspace(10)*, {} addrspace(10)* }], {} addrspace(10)* }, { i64, [2 x { i64, i64, {} addrspace(10)*, {} addrspace(10)* }], {} addrspace(10)* } addrspace(11)* %0, i64 0, i32 1, i64 %_unwrap179 | |
%.not239_unwrap181 = icmp eq { i64, i64, {} addrspace(10)*, {} addrspace(10)* } addrspace(11)* %_unwrap180, null | |
br i1 %.not239_unwrap181, label %invertL501_phirc177_phirc, label %invertL501_phirc177_phirc182 | |
invertL501_phimerge: ; preds = %invertL501_phirc177_phimerge, %invertL501_phirc | |
%252 = phi { i64, i64, {} addrspace(10)*, {} addrspace(10)* } [ %113, %invertL501_phirc ], [ %284, %invertL501_phirc177_phimerge ], !dbg !9148 | |
%"'ipev111_unwrap187" = extractvalue { i64, i64, {} addrspace(10)*, {} addrspace(10)* } %252, 3, !dbg !9148 | |
%"'ipc171_unwrap" = addrspacecast {} addrspace(10)* %"'ipev111_unwrap187" to double addrspace(13)* addrspace(11)*, !dbg !9148 | |
%"arrayptr95270'ipl_unwrap" = load double addrspace(13)*, double addrspace(13)* addrspace(11)* %"'ipc171_unwrap", align 8, !tbaa !274, !alias.scope !9126, !noalias !9129, !nonnull !58, !invariant.group !9131 | |
%"'ipg_unwrap" = getelementptr inbounds double, double addrspace(13)* %"arrayptr95270'ipl_unwrap", i64 %248, !dbg !9148 | |
%253 = load double, double addrspace(13)* %"'ipg_unwrap", align 8, !dbg !9148, !tbaa !297, !alias.scope !9203, !noalias !9206 | |
store double 0.000000e+00, double addrspace(13)* %"'ipg_unwrap", align 8, !dbg !9148, !tbaa !297, !alias.scope !9203, !noalias !9206 | |
%254 = load double, double* %"arrayref'de", align 8, !dbg !9148 | |
%255 = fadd fast double %254, %253, !dbg !9148 | |
store double %255, double* %"arrayref'de", align 8, !dbg !9148 | |
%256 = load double, double* %"arrayref'de", align 8, !dbg !9137 | |
store double 0.000000e+00, double* %"arrayref'de", align 8, !dbg !9137 | |
%257 = load i64, i64* %"iv1'ac", align 8, !dbg !9137 | |
%258 = load i64, i64* %"iv'ac", align 8, !dbg !9137 | |
%_unwrap190 = load {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)** %mdyncache_fromtape_cache175, align 8, !dereferenceable !410, !invariant.group !9118 | |
%_unwrap191 = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)* addrspace(10)* %_unwrap190, i64 %258, !dbg !9137 | |
%"getfield'il_phi_unwrap" = load {} addrspace(10)*, {} addrspace(10)* addrspace(10)* %_unwrap191, align 8, !invariant.group !9119 | |
%"'ipc173_unwrap" = addrspacecast {} addrspace(10)* %"getfield'il_phi_unwrap" to double addrspace(13)* addrspace(11)*, !dbg !9137 | |
%"arrayptr269'ipl_unwrap" = load double addrspace(13)*, double addrspace(13)* addrspace(11)* %"'ipc173_unwrap", align 16, !tbaa !274, !alias.scope !9120, !noalias !9123, !nonnull !58, !invariant.group !9125 | |
%259 = load i64, i64* %"iv'ac", align 8, !dbg !9137 | |
%_unwrap252 = load i64*, i64** %mdyncache_fromtape_cache242, align 8, !dbg !9059, !dereferenceable !410, !invariant.group !9060 | |
%_unwrap253 = getelementptr inbounds i64, i64* %_unwrap252, i64 %259, !dbg !9137 | |
%arraylen46_unwrap = load i64, i64* %_unwrap253, align 8, !dbg !9059, !alias.scope !9208, !noalias !9209, !invariant.group !9061 | |
%_unwrap197 = add nsw i64 %arraylen46_unwrap, -1, !dbg !9137 | |
%260 = add nuw i64 %_unwrap197, 1, !dbg !9137 | |
%261 = extractvalue { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i64, {} addrspace(10)*, i1, i64, i64, i64, i64 } addrspace(10)*, { {} addrspace(10)*, i64, i64 } addrspace(10)*, { {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64 }, i1 } addrspace(10)*, { {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64 }, i1 } addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, i64*, i64*, i64**, { i64, i64, {} addrspace(10)*, {} addrspace(10)* }, { i64, i64, {} addrspace(10)*, {} addrspace(10)* } addrspace(10)* } %tapeArg, 20, !dbg !9137 | |
%262 = getelementptr inbounds i64*, i64** %261, i64 %258, !dbg !9137 | |
%263 = load i64*, i64** %262, align 8, !dbg !9137, !dereferenceable !410, !invariant.group !9210 | |
%264 = getelementptr inbounds i64, i64* %263, i64 %257, !dbg !9137 | |
%265 = load i64, i64* %264, align 8, !dbg !9137, !invariant.group !9211 | |
%"'ipg189_unwrap" = getelementptr inbounds double, double addrspace(13)* %"arrayptr269'ipl_unwrap", i64 %265, !dbg !9137 | |
%266 = atomicrmw fadd double addrspace(13)* %"'ipg189_unwrap", double %256 monotonic, align 8, !dbg !9137 | |
%267 = load i64, i64* %"iv1'ac", align 8 | |
%268 = icmp eq i64 %267, 0 | |
%269 = xor i1 %268, true | |
br i1 %268, label %invertL501.lr.ph, label %incinvertL501 | |
incinvertL501: ; preds = %invertL501_phimerge | |
%270 = load i64, i64* %"iv1'ac", align 8 | |
%271 = add nsw i64 %270, -1 | |
store i64 %271, i64* %"iv1'ac", align 8 | |
br label %invertL501 | |
invertL501_phirc177_phirc: ; preds = %invertL501_phirc177 | |
br label %invertL501_phirc177_phimerge | |
invertL501_phirc177_phirc182: ; preds = %invertL501_phirc177 | |
%272 = extractvalue { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i64, {} addrspace(10)*, i1, i64, i64, i64, i64 } addrspace(10)*, { {} addrspace(10)*, i64, i64 } addrspace(10)*, { {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64 }, i1 } addrspace(10)*, { {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64 }, i1 } addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, i64*, i64*, i64**, { i64, i64, {} addrspace(10)*, {} addrspace(10)* }, { i64, i64, {} addrspace(10)*, {} addrspace(10)* } addrspace(10)* } %tapeArg, 16 | |
%273 = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)* addrspace(10)* %272, i64 %251 | |
%274 = load {} addrspace(10)*, {} addrspace(10)* addrspace(10)* %273, align 8, !invariant.group !9199 | |
%275 = extractvalue { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i64, {} addrspace(10)*, i1, i64, i64, i64, i64 } addrspace(10)*, { {} addrspace(10)*, i64, i64 } addrspace(10)*, { {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64 }, i1 } addrspace(10)*, { {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64 }, i1 } addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, i64*, i64*, i64**, { i64, i64, {} addrspace(10)*, {} addrspace(10)* }, { i64, i64, {} addrspace(10)*, {} addrspace(10)* } addrspace(10)* } %tapeArg, 17 | |
%276 = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)* addrspace(10)* %275, i64 %251 | |
%277 = load {} addrspace(10)*, {} addrspace(10)* addrspace(10)* %276, align 8, !invariant.group !9200 | |
%278 = load i64*, i64** %unbox202.unpack241_cache, align 8, !dereferenceable !410, !invariant.group !9185 | |
%279 = getelementptr inbounds i64, i64* %278, i64 %251 | |
%280 = load i64, i64* %279, align 8, !tbaa !63, !alias.scope !97, !noalias !98, !invariant.group !9198 | |
%281 = load i64*, i64** %unbox202.unpack_cache, align 8, !dereferenceable !410, !invariant.group !9188 | |
%282 = getelementptr inbounds i64, i64* %281, i64 %251 | |
%283 = load i64, i64* %282, align 8, !tbaa !63, !alias.scope !97, !noalias !98, !invariant.group !9197 | |
%"'ipiv79_unwrap183" = insertvalue { i64, i64, {} addrspace(10)*, {} addrspace(10)* } undef, i64 %283, 0 | |
%"'ipiv80_unwrap184" = insertvalue { i64, i64, {} addrspace(10)*, {} addrspace(10)* } %"'ipiv79_unwrap183", i64 %280, 1 | |
%"'ipiv81_unwrap185" = insertvalue { i64, i64, {} addrspace(10)*, {} addrspace(10)* } %"'ipiv80_unwrap184", {} addrspace(10)* %277, 2 | |
%"unbox202246'ipiv_unwrap186" = insertvalue { i64, i64, {} addrspace(10)*, {} addrspace(10)* } %"'ipiv81_unwrap185", {} addrspace(10)* %274, 3 | |
br label %invertL501_phirc177_phimerge | |
invertL501_phirc177_phimerge: ; preds = %invertL501_phirc177_phirc182, %invertL501_phirc177_phirc | |
%284 = phi { i64, i64, {} addrspace(10)*, {} addrspace(10)* } [ zeroinitializer, %invertL501_phirc177_phirc ], [ %"unbox202246'ipiv_unwrap186", %invertL501_phirc177_phirc182 ] | |
br label %invertL501_phimerge | |
invertL569.loopexit: ; preds = %invertL569 | |
%285 = load i64, i64* %"iv'ac", align 8 | |
%286 = extractvalue { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i64, {} addrspace(10)*, i1, i64, i64, i64, i64 } addrspace(10)*, { {} addrspace(10)*, i64, i64 } addrspace(10)*, { {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64 }, i1 } addrspace(10)*, { {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64 }, i1 } addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, i64*, i64*, i64**, { i64, i64, {} addrspace(10)*, {} addrspace(10)* }, { i64, i64, {} addrspace(10)*, {} addrspace(10)* } addrspace(10)* } %tapeArg, 18 | |
%287 = getelementptr inbounds i64, i64* %286, i64 %285 | |
%288 = load i64, i64* %287, align 8, !dbg !9058, !tbaa !158, !range !96, !alias.scope !9208, !noalias !9209, !invariant.group !9212 | |
%_unwrap201 = add nsw i64 %288, -1 | |
br label %mergeinvertL501_L569.loopexit | |
mergeinvertL501_L569.loopexit: ; preds = %invertL569.loopexit | |
store i64 %_unwrap201, i64* %"iv1'ac", align 8 | |
br label %invertL501 | |
invertL569: ; preds = %invertpass, %mergeinvertL47_L589 | |
%289 = load i8*, i8** %_cache203, align 8, !dereferenceable !410, !invariant.group !9090 | |
%290 = load i64, i64* %"iv'ac", align 8 | |
%291 = getelementptr inbounds i8, i8* %289, i64 %290 | |
%292 = load i8, i8* %291, align 1, !invariant.group !9091 | |
switch i8 %292, label %invertL569.loopexit [ | |
i8 0, label %invertL468 | |
i8 1, label %invertL479 | |
i8 2, label %invertL475 | |
] | |
invertL583: ; preds = %incinvertL47 | |
%293 = load i64, i64* %"iv'ac", align 8 | |
%_unwrap216 = add i64 %293, 2 | |
%_unwrap217 = add nsw i64 %_unwrap216, -1 | |
%_unwrap218 = getelementptr inbounds { i64, [2 x { i64, i64, {} addrspace(10)*, {} addrspace(10)* }], {} addrspace(10)* }, { i64, [2 x { i64, i64, {} addrspace(10)*, {} addrspace(10)* }], {} addrspace(10)* } addrspace(11)* %0, i64 0, i32 1, i64 %_unwrap217 | |
%.not239_unwrap219 = icmp eq { i64, i64, {} addrspace(10)*, {} addrspace(10)* } addrspace(11)* %_unwrap218, null | |
br i1 %.not239_unwrap219, label %invertpass, label %invertguard_pass200 | |
invertL589: ; preds = %L589 | |
br label %mergeinvertL47_L589 | |
mergeinvertL47_L589: ; preds = %invertL589 | |
store i64 1, i64* %"iv'ac", align 8 | |
br label %invertL569 | |
invertpass: ; preds = %invertguard_pass200, %invertL583 | |
br label %invertL569 | |
invertguard_pass193: ; preds = %invertguard_exit194 | |
br label %inverttop | |
invertguard_exit194: ; preds = %invertL47.lr.ph | |
br i1 %.not, label %inverttop, label %invertguard_pass193 | |
invertL47.lr.ph: ; preds = %invertL47 | |
%294 = load i64, i64* %"iv'ac", align 8 | |
%295 = extractvalue { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i64, {} addrspace(10)*, i1, i64, i64, i64, i64 } addrspace(10)*, { {} addrspace(10)*, i64, i64 } addrspace(10)*, { {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64 }, i1 } addrspace(10)*, { {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64 }, i1 } addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, i64*, i64*, i64**, { i64, i64, {} addrspace(10)*, {} addrspace(10)* }, { i64, i64, {} addrspace(10)*, {} addrspace(10)* } addrspace(10)* } %tapeArg, 22 | |
%296 = load i64, i64* %"iv'ac", align 8 | |
%297 = extractvalue { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i64, {} addrspace(10)*, i1, i64, i64, i64, i64 } addrspace(10)*, { {} addrspace(10)*, i64, i64 } addrspace(10)*, { {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64 }, i1 } addrspace(10)*, { {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64 }, i1 } addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, i64*, i64*, i64**, { i64, i64, {} addrspace(10)*, {} addrspace(10)* }, { i64, i64, {} addrspace(10)*, {} addrspace(10)* } addrspace(10)* } %tapeArg, 16 | |
%298 = load i64, i64* %"iv'ac", align 8 | |
%299 = extractvalue { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i64, {} addrspace(10)*, i1, i64, i64, i64, i64 } addrspace(10)*, { {} addrspace(10)*, i64, i64 } addrspace(10)*, { {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64 }, i1 } addrspace(10)*, { {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64 }, i1 } addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)*, i64*, i64*, i64**, { i64, i64, {} addrspace(10)*, {} addrspace(10)* }, { i64, i64, {} addrspace(10)*, {} addrspace(10)* } addrspace(10)* } %tapeArg, 17 | |
%300 = load i64, i64* %"iv'ac", align 8 | |
%forfree91 = load i64*, i64** %unbox202.unpack241_cache, align 8, !dereferenceable !410, !invariant.group !9185 | |
%301 = bitcast i64* %forfree91 to i8* | |
call void @free(i8* nonnull %301), !dbg !9202, !enzyme_cache_free !9183 | |
%302 = load i64, i64* %"iv'ac", align 8 | |
%forfree92 = load i64*, i64** %unbox202.unpack_cache, align 8, !dereferenceable !410, !invariant.group !9188 | |
%303 = bitcast i64* %forfree92 to i8* | |
call void @free(i8* nonnull %303), !dbg !9202, !enzyme_cache_free !9186 | |
%304 = load i64, i64* %"iv'ac", align 8 | |
%forfree95 = load { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i64, {} addrspace(10)*, i1, i64, i64, i64, i64 } addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64, i64, {} addrspace(10)*, i1, i64, i64, i64, i64 } addrspace(10)** %mdyncache_fromtape_cache, align 8, !dereferenceable !9213, !invariant.group !9046 | |
%305 = load i64, i64* %"iv'ac", align 8 | |
%forfree126 = load { {} addrspace(10)*, i64, i64 } addrspace(10)*, { {} addrspace(10)*, i64, i64 } addrspace(10)** %mdyncache_fromtape_cache125, align 8, !dereferenceable !9214, !invariant.group !9096 | |
%306 = load i64, i64* %"iv'ac", align 8 | |
%forfree134 = load { {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64 }, i1 } addrspace(10)*, { {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64 }, i1 } addrspace(10)** %mdyncache_fromtape_cache133, align 8, !dereferenceable !9215, !invariant.group !9093 | |
%307 = load i64, i64* %"iv'ac", align 8 | |
%forfree166 = load { {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64 }, i1 } addrspace(10)*, { {} addrspace(10)*, { {} addrspace(10)*, {} addrspace(10)*, {} addrspace(10)*, i64 }, i1 } addrspace(10)** %mdyncache_fromtape_cache165, align 8, !dereferenceable !9215, !invariant.group !9103 | |
%308 = load i64, i64* %"iv'ac", align 8 | |
%forfree176 = load {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)** %mdyncache_fromtape_cache175, align 8, !dereferenceable !410, !invariant.group !9118 | |
%309 = load i64, i64* %"iv'ac", align 8 | |
%310 = load i64, i64* %"iv'ac", align 8 | |
%311 = load i64, i64* %"iv'ac", align 8 | |
%forfree205 = load i8*, i8** %_cache203, align 8, !dereferenceable !9216, !invariant.group !9090 | |
call void @free(i8* nonnull %forfree205), !dbg !9202, !enzyme_cache_free !9189 | |
%312 = load i64, i64* %"iv'ac", align 8 | |
%forfree236 = load {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)** %mdyncache_fromtape_cache235, align 8, !dereferenceable !410, !invariant.group !9193 | |
%313 = load i64, i64* %"iv'ac", align 8 | |
%forfree239 = load {} addrspace(10)* addrspace(10)*, {} addrspace(10)* addrspace(10)** %mdyncache_fromtape_cache238, align 8, !dereferenceable !410, !invariant.group !9191 | |
%314 = load i64, i64* %"iv'ac", align 8 | |
%forfree243 = load i64*, i64** %mdyncache_fromtape_cache242, align 8, !dereferenceable !410, !invariant.group !9060 | |
%315 = bitcast i64* %forfree243 to i8* | |
call void @free(i8* nonnull %315), !dbg !9202 | |
%316 = load i64, i64* %"iv'ac", align 8 | |
%forfree245 = load i64*, i64** %mdyncache_fromtape_cache244, align 8, !dereferenceable !410, !invariant.group !9073 | |
%317 = bitcast i64* %forfree245 to i8* | |
call void @free(i8* nonnull %317), !dbg !9202 | |
%318 = load i64, i64* %"iv'ac", align 8 | |
%forfree247 = load { i64, i64, {} addrspace(10)*, {} addrspace(10)* } addrspace(10)*, { i64, i64, {} addrspace(10)*, {} addrspace(10)* } addrspace(10)** %mdyncache_fromtape_cache246, align 8, !dereferenceable !9217, !invariant.group !9195 | |
%319 = load i64, i64* %"iv'ac", align 8 | |
%forfree = load i64**, i64*** %mdyncache_fromtape_cache248, align 8, !dereferenceable !410, !invariant.group !9145 | |
%320 = bitcast i64** %forfree to i8* | |
call void @free(i8* nonnull %320), !dbg !9202 | |
br label %invertguard_exit194 | |
invertguard_pass200: ; preds = %invertL583 | |
br label %invertpass | |
} | |
LLVM.LoadInst(%unbox202.unpack = load i64, i64 addrspace(11)* %unbox202.elt, align 8, !tbaa !64, !alias.scope !98, !noalias !99) | |
LLVM.PHIInst(%unbox202.unpack_replacementA = phi i64 ) | |
Stacktrace: | |
[1] julia_error(cstr::Cstring, val::Ptr{LLVM.API.LLVMOpaqueValue}, errtype::Enzyme.API.ErrorType, data::Ptr{Nothing}, data2::Ptr{LLVM.API.LLVMOpaqueValue}, B::Ptr{LLVM.API.LLVMOpaqueBuilder}) | |
@ Enzyme.Compiler ~/.julia/packages/Enzyme/R8qo4/src/compiler.jl:1734 | |
[2] EnzymeCreatePrimalAndGradient(logic::Enzyme.Logic, todiff::LLVM.Function, retType::Enzyme.API.CDIFFE_TYPE, constant_args::Vector{…}, TA::Enzyme.TypeAnalysis, returnValue::Bool, dretUsed::Bool, mode::Enzyme.API.CDerivativeMode, width::Int64, additionalArg::Ptr{…}, forceAnonymousTape::Bool, typeInfo::Enzyme.FnTypeInfo, uncacheable_args::Vector{…}, augmented::Ptr{…}, atomicAdd::Bool) | |
@ Enzyme.API ~/.julia/packages/Enzyme/R8qo4/src/api.jl:141 | |
[3] enzyme!(job::GPUCompiler.CompilerJob{…}, mod::LLVM.Module, primalf::LLVM.Function, TT::Type, mode::Enzyme.API.CDerivativeMode, width::Int64, parallel::Bool, actualRetType::Type, wrap::Bool, modifiedBetween::NTuple{…}, returnPrimal::Bool, jlrules::Vector{…}, expectedTapeType::Type, loweredArgs::Set{…}, boxedArgs::Set{…}) | |
@ Enzyme.Compiler ~/.julia/packages/Enzyme/R8qo4/src/compiler.jl:3074 | |
[4] codegen(output::Symbol, job::GPUCompiler.CompilerJob{…}; libraries::Bool, deferred_codegen::Bool, optimize::Bool, toplevel::Bool, strip::Bool, validate::Bool, only_entry::Bool, parent_job::Nothing) | |
@ Enzyme.Compiler ~/.julia/packages/Enzyme/R8qo4/src/compiler.jl:4698 | |
[5] codegen | |
@ ~/.julia/packages/Enzyme/R8qo4/src/compiler.jl:4281 [inlined] | |
[6] _thunk(job::GPUCompiler.CompilerJob{Enzyme.Compiler.EnzymeTarget, Enzyme.Compiler.EnzymeCompilerParams}, postopt::Bool) (repeats 2 times) | |
@ Enzyme.Compiler ~/.julia/packages/Enzyme/R8qo4/src/compiler.jl:5272 | |
[7] cached_compilation | |
@ ~/.julia/packages/Enzyme/R8qo4/src/compiler.jl:5306 [inlined] | |
[8] (::Enzyme.Compiler.var"#485#486"{DataType, UnionAll, DataType, Enzyme.API.CDerivativeMode, NTuple{5, Bool}, Int64, Bool, Bool, UInt64, DataType})(ctx::LLVM.Context) | |
@ Enzyme.Compiler ~/.julia/packages/Enzyme/R8qo4/src/compiler.jl:5372 | |
[9] JuliaContext(f::Enzyme.Compiler.var"#485#486"{DataType, UnionAll, DataType, Enzyme.API.CDerivativeMode, NTuple{5, Bool}, Int64, Bool, Bool, UInt64, DataType}) | |
@ GPUCompiler ~/.julia/packages/GPUCompiler/U36Ed/src/driver.jl:47 | |
[10] #s1038#484 | |
@ ~/.julia/packages/Enzyme/R8qo4/src/compiler.jl:5324 [inlined] | |
[11] var"#s1038#484"(FA::Any, A::Any, TT::Any, Mode::Any, ModifiedBetween::Any, width::Any, ReturnPrimal::Any, ShadowInit::Any, World::Any, ABI::Any, ::Any, ::Type, ::Type, ::Type, tt::Any, ::Type, ::Type, ::Type, ::Type, ::Type, ::Any) | |
@ Enzyme.Compiler ./none:0 | |
[12] (::Core.GeneratedFunctionStub)(::UInt64, ::LineNumberNode, ::Any, ::Vararg{Any}) | |
@ Core ./boot.jl:602 | |
[13] autodiff(::ReverseMode{false, FFIABI}, ::Duplicated{var"#dfunc#68"{System, NN{…}, Vector{…}, Vector{…}, Vector{…}, Matrix{…}, Vector{…}, UnitRange{…}, UnitRange{…}}}, ::Type{Const}, ::Duplicated{Vector{Float64}}, ::Vararg{Any}) | |
@ Enzyme ~/.julia/packages/Enzyme/R8qo4/src/Enzyme.jl:209 | |
[14] top-level scope | |
@ REPL[234]:1 | |
Some type information was truncated. Use `show(err)` to see complete types. |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment