Skip to content

Instantly share code, notes, and snippets.

@pagnani
Created February 12, 2024 07:55
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save pagnani/b0eda7b3e4607374ce75a6f86165ae49 to your computer and use it in GitHub Desktop.
Save pagnani/b0eda7b3e4607374ce75a6f86165ae49 to your computer and use it in GitHub Desktop.
julia> gradenzyme(provatullio,A,B)
ERROR: Enzyme compilation failed due to illegal type analysis.
Current scope:
; Function Attrs: mustprogress willreturn
define double @preprocess_julia_Eval_34935({} addrspace(10)* noundef nonnull align 16 dereferenceable(40) %0, {} addrspace(10)* noundef nonnull align 16 dereferenceable(40) %1) local_unnamed_addr #72 !dbg !2617 {
top:
%2 = call {}*** @julia.get_pgcstack()
%3 = call noalias nonnull dereferenceable(32) dereferenceable_or_null(32) i8* @malloc(i64 32), !enzyme_fromstack !450
%newstruct32 = bitcast i8* %3 to [2 x [2 x i64]]*, !enzyme_caststack !55
%4 = bitcast {}*** %2 to {}**
%5 = getelementptr inbounds {}*, {}** %4, i64 -14
%6 = getelementptr inbounds {}*, {}** %5, i64 16
%7 = bitcast {}** %6 to i8**
%8 = load i8*, i8** %7, align 8
%9 = call noalias nonnull dereferenceable(16) dereferenceable_or_null(16) {} addrspace(10)* @julia.gc_alloc_obj({}** %5, i64 16, {} addrspace(10)* addrspacecast ({}* inttoptr (i64 6424501648 to {}*) to {} addrspace(10)*)), !enzyme_fromstack !450
call void @zeroType({} addrspace(10)* %9, i8 0, i64 16), !enzyme_zerostack !55
%10 = bitcast {} addrspace(10)* %9 to [2 x {} addrspace(10)*] addrspace(10)*, !enzyme_caststack !55
%11 = call {}*** @julia.get_pgcstack() #74
%ptls_field255 = getelementptr inbounds {}**, {}*** %11, i64 2
%12 = bitcast {}*** %ptls_field255 to i64***
%ptls_load256257 = load i64**, i64*** %12, align 8, !tbaa !59
%13 = getelementptr inbounds i64*, i64** %ptls_load256257, i64 2
%safepoint = load i64*, i64** %13, align 8, !tbaa !63, !invariant.load !55
fence syncscope("singlethread") seq_cst
call void @julia.safepoint(i64* %safepoint) #74, !dbg !2618
fence syncscope("singlethread") seq_cst
%14 = addrspacecast {} addrspace(10)* %0 to {} addrspace(11)*, !dbg !2619
%15 = addrspacecast {} addrspace(10)* %0 to {} addrspace(10)* addrspace(11)*, !dbg !2619
%arraysize_ptr = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %15, i64 4, !dbg !2619
%16 = bitcast {} addrspace(10)* addrspace(11)* %arraysize_ptr to i64 addrspace(11)*, !dbg !2619
%arraysize = load i64, i64 addrspace(11)* %16, align 16, !dbg !2619, !tbaa !63, !range !112, !invariant.load !55, !alias.scope !240, !noalias !241
%17 = addrspacecast {} addrspace(10)* %1 to {} addrspace(11)*, !dbg !2619
%18 = addrspacecast {} addrspace(10)* %1 to {} addrspace(10)* addrspace(11)*, !dbg !2619
%arraysize_ptr4 = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %18, i64 3, !dbg !2619
%19 = bitcast {} addrspace(10)* addrspace(11)* %arraysize_ptr4 to i64 addrspace(11)*, !dbg !2619
%arraysize5 = load i64, i64 addrspace(11)* %19, align 8, !dbg !2619, !tbaa !63, !range !112, !invariant.load !55, !alias.scope !240, !noalias !241
%.not = icmp eq i64 %arraysize5, %arraysize, !dbg !2623
br i1 %.not, label %L15, label %L338, !dbg !2622
L15: ; preds = %top
%arraysize_ptr10 = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %15, i64 3, !dbg !2619
%20 = bitcast {} addrspace(10)* addrspace(11)* %arraysize_ptr10 to i64 addrspace(11)*, !dbg !2619
%arraysize11 = load i64, i64 addrspace(11)* %20, align 8, !dbg !2619, !tbaa !63, !range !112, !invariant.load !55, !alias.scope !240, !noalias !241
%arraysize_ptr14 = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %18, i64 4, !dbg !2619
%21 = bitcast {} addrspace(10)* addrspace(11)* %arraysize_ptr14 to i64 addrspace(11)*, !dbg !2619
%arraysize15 = load i64, i64 addrspace(11)* %21, align 16, !dbg !2619, !tbaa !63, !range !112, !invariant.load !55, !alias.scope !240, !noalias !241
%.not258 = icmp eq i64 %arraysize15, %arraysize11, !dbg !2623
br i1 %.not258, label %L27, label %L336, !dbg !2622
L27: ; preds = %L15
%newstruct27.sroa.0.0..sroa_idx = getelementptr inbounds [2 x [2 x i64]], [2 x [2 x i64]]* %newstruct32, i64 0, i64 0, i64 0, !dbg !2625
store i64 1, i64* %newstruct27.sroa.0.0..sroa_idx, align 8, !dbg !2625, !tbaa !136, !alias.scope !138, !noalias !2628
%newstruct27.sroa.2.0..sroa_idx247 = getelementptr inbounds [2 x [2 x i64]], [2 x [2 x i64]]* %newstruct32, i64 0, i64 0, i64 1, !dbg !2625
store i64 %arraysize11, i64* %newstruct27.sroa.2.0..sroa_idx247, align 8, !dbg !2625, !tbaa !136, !alias.scope !138, !noalias !2628
%newstruct30.sroa.0.0..sroa_idx = getelementptr inbounds [2 x [2 x i64]], [2 x [2 x i64]]* %newstruct32, i64 0, i64 1, i64 0, !dbg !2625
store i64 1, i64* %newstruct30.sroa.0.0..sroa_idx, align 8, !dbg !2625, !tbaa !136, !alias.scope !138, !noalias !2628
%newstruct30.sroa.2.0..sroa_idx246 = getelementptr inbounds [2 x [2 x i64]], [2 x [2 x i64]]* %newstruct32, i64 0, i64 1, i64 1, !dbg !2625
store i64 %arraysize, i64* %newstruct30.sroa.2.0..sroa_idx246, align 8, !dbg !2625, !tbaa !136, !alias.scope !138, !noalias !2628
%22 = call i64 @julia_nthreads_35283() #75, !dbg !2631
%23 = mul i64 %arraysize11, %arraysize, !dbg !2632
%24 = sdiv i64 %23, 262144, !dbg !2636
%25 = icmp sgt i64 %23, 0, !dbg !2640
%26 = shl nsw i64 %24, 18, !dbg !2643
%27 = icmp ne i64 %26, %23, !dbg !2644
%28 = and i1 %25, %27, !dbg !2646
%29 = zext i1 %28 to i64, !dbg !2647
%30 = add nsw i64 %24, %29, !dbg !2652
%31 = call i64 @llvm.smin.i64(i64 %30, i64 %22) #74, !dbg !2654
%32 = call i64 @llvm.smin.i64(i64 %23, i64 %31) #74, !dbg !2654
%33 = icmp sgt i64 %32, 1, !dbg !2657
br i1 %33, label %L332, label %L115.preheader, !dbg !2658
L115.preheader: ; preds = %L27
%34 = call nonnull {}* @julia.pointer_from_objref({} addrspace(11)* noundef %14) #76, !dbg !2659
%35 = bitcast {}* %34 to i8**, !dbg !2659
%arrayptr = load i8*, i8** %35, align 8, !dbg !2659, !tbaa !63, !invariant.load !55, !alias.scope !240, !noalias !241, !nonnull !55
%36 = shl i64 %arraysize11, 3, !dbg !2667
%37 = call nonnull {}* @julia.pointer_from_objref({} addrspace(11)* noundef %17) #76, !dbg !2659
%38 = bitcast {}* %37 to i8**, !dbg !2659
%arrayptr50 = load i8*, i8** %38, align 8, !dbg !2659, !tbaa !63, !invariant.load !55, !alias.scope !240, !noalias !241, !nonnull !55
%39 = shl i64 %arraysize, 3, !dbg !2667
%40 = ptrtoint i8* %arrayptr to i64, !dbg !2674
%41 = ptrtoint i8* %arrayptr50 to i64, !dbg !2674
%42 = call token (...) @llvm.julia.gc_preserve_begin({} addrspace(10)* nofree nonnull %0, {} addrspace(10)* nofree nonnull %1) #74, !dbg !2664
%43 = icmp ne i64 %arraysize, 0, !dbg !2681
call void @llvm.assume(i1 noundef %43) #74, !dbg !2686
%44 = icmp ne i64 %arraysize11, 0, !dbg !2681
call void @llvm.assume(i1 noundef %44) #74, !dbg !2686
%res.i240 = add nuw i64 %arraysize, 3, !dbg !2687
%45 = and i64 %res.i240, 3, !dbg !2694
%ie.i238 = insertelement <4 x i64> undef, i64 %45, i64 0, !dbg !2697
%v.i239 = shufflevector <4 x i64> %ie.i238, <4 x i64> undef, <4 x i32> zeroinitializer, !dbg !2697
%m.i = icmp uge <4 x i64> %v.i239, <i64 0, i64 1, i64 2, i64 3>, !dbg !2707
%res.i232 = add nsw i64 %arraysize, -8, !dbg !2709
%res.i231 = mul nsw i64 %36, %res.i232, !dbg !2712
%ptr.1.i229 = getelementptr inbounds i8, i8* %arrayptr, i64 %res.i231, !dbg !2721
%ptr.0.i225 = bitcast i8* %ptr.1.i229 to double*, !dbg !2724
%ptr.1.i226 = getelementptr inbounds double, double* %ptr.0.i225, i64 %36, !dbg !2724
%ptr.0.i222 = bitcast i8* %ptr.1.i229 to i32*, !dbg !2724
%ptr.1.i223 = getelementptr inbounds i32, i32* %ptr.0.i222, i64 %36, !dbg !2724
%46 = icmp ult i64 %arraysize, 8, !dbg !2681
br i1 %46, label %L256, label %L212.preheader, !dbg !2684
L212.preheader: ; preds = %L115.preheader
%res.i218 = add nsw i64 %arraysize11, -1
%ie.i213 = insertelement <4 x i64> undef, i64 %36, i64 0
%v.i214 = shufflevector <4 x i64> %ie.i213, <4 x i64> undef, <4 x i32> zeroinitializer
%res.i212 = mul nsw <4 x i64> %v.i214, <i64 0, i64 1, i64 2, i64 3>
%res.i205 = mul nsw <4 x i64> %v.i214, <i64 4, i64 5, i64 6, i64 7>
br label %L220, !dbg !2684
L220: ; preds = %L247, %L212.preheader
%iv = phi i64 [ %iv.next, %L247 ], [ 0, %L212.preheader ]
%value_phi59293 = phi <4 x double> [ zeroinitializer, %L212.preheader ], [ %res.i192, %L247 ]
%value_phi58292 = phi <4 x double> [ zeroinitializer, %L212.preheader ], [ %res.i193, %L247 ]
%value_phi56291 = phi i64 [ %41, %L212.preheader ], [ %ptr.2.i180, %L247 ]
%value_phi55290 = phi i64 [ %40, %L212.preheader ], [ %ptr.2.i183, %L247 ]
%iv.next = add nuw nsw i64 %iv, 1, !dbg !2724
%ptr.0.i215 = inttoptr i64 %value_phi55290 to double*, !dbg !2724
%ptr.1.i216 = getelementptr inbounds double, double* %ptr.0.i215, i64 %res.i218, !dbg !2724
br label %L231, !dbg !2684
L231: ; preds = %L231, %L220
%iv1 = phi i64 [ %iv.next2, %L231 ], [ 0, %L220 ]
%value_phi67289 = phi i64 [ %value_phi56291, %L220 ], [ %ptr.2.i188, %L231 ]
%value_phi66288 = phi i64 [ %value_phi55290, %L220 ], [ %ptr.2.i191, %L231 ]
%value_phi63287 = phi <4 x double> [ %value_phi59293, %L220 ], [ %res.i192, %L231 ]
%value_phi62286 = phi <4 x double> [ %value_phi58292, %L220 ], [ %res.i193, %L231 ]
%iv.next2 = add nuw nsw i64 %iv1, 1, !dbg !2726
%ptr.0.i208 = inttoptr i64 %value_phi66288 to i8*, !dbg !2726
%ptr.1.i209 = getelementptr inbounds i8, i8* %ptr.0.i208, <4 x i64> %res.i212, !dbg !2726
%ptr.2.i210 = bitcast <4 x i8*> %ptr.1.i209 to <4 x double*>, !dbg !2726
%res.i211 = call <4 x double> @llvm.masked.gather.v4f64.v4p0f64(<4 x double*> %ptr.2.i210, i32 noundef 8, <4 x i1> noundef <i1 true, i1 true, i1 true, i1 true>, <4 x double> undef) #74, !dbg !2726, !alias.scope !682
%ptr.1.i202 = getelementptr inbounds i8, i8* %ptr.0.i208, <4 x i64> %res.i205, !dbg !2726
%ptr.2.i203 = bitcast <4 x i8*> %ptr.1.i202 to <4 x double*>, !dbg !2726
%res.i204 = call <4 x double> @llvm.masked.gather.v4f64.v4p0f64(<4 x double*> %ptr.2.i203, i32 noundef 8, <4 x i1> noundef <i1 true, i1 true, i1 true, i1 true>, <4 x double> undef) #74, !dbg !2726, !alias.scope !682
%ptr.0.i198 = inttoptr i64 %value_phi67289 to double*, !dbg !2732
%ptr.1.i199 = inttoptr i64 %value_phi67289 to <4 x double>*, !dbg !2732
%res.i200 = load <4 x double>, <4 x double>* %ptr.1.i199, align 8, !dbg !2732, !alias.scope !682
%ptr.1.i195 = getelementptr inbounds double, double* %ptr.0.i198, i64 4, !dbg !2732
%ptr.2.i196 = bitcast double* %ptr.1.i195 to <4 x double>*, !dbg !2732
%res.i197 = load <4 x double>, <4 x double>* %ptr.2.i196, align 8, !dbg !2732, !alias.scope !682
%res.i193 = call reassoc nsz arcp contract afn <4 x double> @llvm.fmuladd.v4f64(<4 x double> %res.i211, <4 x double> %res.i200, <4 x double> %value_phi62286) #74, !dbg !2737
%res.i192 = call reassoc nsz arcp contract afn <4 x double> @llvm.fmuladd.v4f64(<4 x double> %res.i204, <4 x double> %res.i197, <4 x double> %value_phi63287) #74, !dbg !2737
%ptr.0.i189 = inttoptr i64 %value_phi66288 to double*, !dbg !2743
%ptr.1.i190 = getelementptr inbounds double, double* %ptr.0.i189, i64 1, !dbg !2743
%ptr.2.i191 = ptrtoint double* %ptr.1.i190 to i64, !dbg !2743
%ptr.0.i186 = inttoptr i64 %value_phi67289 to i8*, !dbg !2721
%ptr.1.i187 = getelementptr inbounds i8, i8* %ptr.0.i186, i64 %39, !dbg !2721
%ptr.2.i188 = ptrtoint i8* %ptr.1.i187 to i64, !dbg !2721
%cmpi1.i184.not = icmp ugt double* %ptr.1.i190, %ptr.1.i216, !dbg !2745
br i1 %cmpi1.i184.not, label %L247, label %L231, !dbg !2684
L247: ; preds = %L231
%ptr.1.i182 = getelementptr inbounds double, double* %ptr.0.i215, i64 %36, !dbg !2724
%ptr.2.i183 = ptrtoint double* %ptr.1.i182 to i64, !dbg !2724
%ptr.0.i178 = inttoptr i64 %value_phi56291 to double*, !dbg !2743
%ptr.1.i179 = getelementptr inbounds double, double* %ptr.0.i178, i64 8, !dbg !2743
%ptr.2.i180 = ptrtoint double* %ptr.1.i179 to i64, !dbg !2743
%bitcast_coercion70 = bitcast double* %ptr.1.i182 to i8*, !dbg !2748
%cmpi1.i176.not = icmp ult i8* %ptr.1.i229, %bitcast_coercion70, !dbg !2745
br i1 %cmpi1.i176.not, label %L253, label %L220, !dbg !2684
L253: ; preds = %L247
%res.i175 = fadd nsz contract <4 x double> %res.i193, %res.i192, !dbg !2750
br label %L256, !dbg !2754
L256: ; preds = %L253, %L115.preheader
%value_phi72 = phi i64 [ %ptr.2.i183, %L253 ], [ %40, %L115.preheader ]
%value_phi73 = phi i64 [ %ptr.2.i180, %L253 ], [ %41, %L115.preheader ]
%value_phi74 = phi <4 x double> [ %res.i175, %L253 ], [ zeroinitializer, %L115.preheader ]
%bitcast_coercion84276 = inttoptr i64 %value_phi72 to i8*, !dbg !2748
%bitcast_coercion85 = bitcast i32* %ptr.1.i223 to i8*, !dbg !2748
%cmpi1.i173.not277 = icmp ugt i8* %bitcast_coercion84276, %bitcast_coercion85, !dbg !2745
br i1 %cmpi1.i173.not277, label %L297, label %L272.lr.ph, !dbg !2684
L272.lr.ph: ; preds = %L256
%res.i169 = add nsw i64 %arraysize11, -1
%ie.i164 = insertelement <4 x i64> undef, i64 %36, i64 0
%v.i165 = shufflevector <4 x i64> %ie.i164, <4 x i64> undef, <4 x i32> zeroinitializer
%res.i163 = mul nsw <4 x i64> %v.i165, <i64 0, i64 1, i64 2, i64 3>
br label %L272, !dbg !2684
L272: ; preds = %L294, %L272.lr.ph
%iv3 = phi i64 [ %iv.next4, %L294 ], [ 0, %L272.lr.ph ]
%value_phi83280 = phi i64 [ %value_phi73, %L272.lr.ph ], [ %ptr.2.i143, %L294 ]
%value_phi82279 = phi i64 [ %value_phi72, %L272.lr.ph ], [ %ptr.2.i146, %L294 ]
%value_phi78278 = phi <4 x double> [ %value_phi74, %L272.lr.ph ], [ %res.i155, %L294 ]
%iv.next4 = add nuw nsw i64 %iv3, 1, !dbg !2724
%ptr.0.i166 = inttoptr i64 %value_phi82279 to double*, !dbg !2724
%ptr.1.i167 = getelementptr inbounds double, double* %ptr.0.i166, i64 %res.i169, !dbg !2724
br label %L283, !dbg !2684
L283: ; preds = %L283, %L272
%iv5 = phi i64 [ %iv.next6, %L283 ], [ 0, %L272 ]
%value_phi91275 = phi i64 [ %value_phi83280, %L272 ], [ %ptr.2.i151, %L283 ]
%value_phi90274 = phi i64 [ %value_phi82279, %L272 ], [ %ptr.2.i154, %L283 ]
%value_phi86273 = phi <4 x double> [ %value_phi78278, %L272 ], [ %res.i155, %L283 ]
%iv.next6 = add nuw nsw i64 %iv5, 1, !dbg !2760
%ptr.0.i159 = inttoptr i64 %value_phi90274 to i8*, !dbg !2760
%ptr.1.i160 = getelementptr inbounds i8, i8* %ptr.0.i159, <4 x i64> %res.i163, !dbg !2760
%ptr.2.i161 = bitcast <4 x i8*> %ptr.1.i160 to <4 x double*>, !dbg !2760
%res.i162 = call <4 x double> @llvm.masked.gather.v4f64.v4p0f64(<4 x double*> %ptr.2.i161, i32 noundef 8, <4 x i1> noundef <i1 true, i1 true, i1 true, i1 true>, <4 x double> undef) #74, !dbg !2760, !alias.scope !682
%ptr.1.i157 = inttoptr i64 %value_phi91275 to <4 x double>*, !dbg !2760
%res.i158 = load <4 x double>, <4 x double>* %ptr.1.i157, align 8, !dbg !2760, !alias.scope !682
%res.i155 = call reassoc nsz arcp contract afn <4 x double> @llvm.fmuladd.v4f64(<4 x double> %res.i162, <4 x double> %res.i158, <4 x double> %value_phi86273) #74, !dbg !2763
%ptr.0.i152 = inttoptr i64 %value_phi90274 to double*, !dbg !2743
%ptr.1.i153 = getelementptr inbounds double, double* %ptr.0.i152, i64 1, !dbg !2743
%ptr.2.i154 = ptrtoint double* %ptr.1.i153 to i64, !dbg !2743
%ptr.0.i149 = inttoptr i64 %value_phi91275 to i8*, !dbg !2721
%ptr.1.i150 = getelementptr inbounds i8, i8* %ptr.0.i149, i64 %39, !dbg !2721
%ptr.2.i151 = ptrtoint i8* %ptr.1.i150 to i64, !dbg !2721
%cmpi1.i147.not = icmp ugt double* %ptr.1.i153, %ptr.1.i167, !dbg !2745
br i1 %cmpi1.i147.not, label %L294, label %L283, !dbg !2684
L294: ; preds = %L283
%ptr.0.i144 = inttoptr i64 %value_phi82279 to i32*, !dbg !2724
%ptr.1.i145 = getelementptr inbounds i32, i32* %ptr.0.i144, i64 %36, !dbg !2724
%ptr.2.i146 = ptrtoint i32* %ptr.1.i145 to i64, !dbg !2724
%ptr.0.i141 = inttoptr i64 %value_phi83280 to double*, !dbg !2743
%ptr.1.i142 = getelementptr inbounds double, double* %ptr.0.i141, i64 4, !dbg !2743
%ptr.2.i143 = ptrtoint double* %ptr.1.i142 to i64, !dbg !2743
%cmpi1.i173.not = icmp ugt i32* %ptr.0.i144, %ptr.0.i222, !dbg !2745
br i1 %cmpi1.i173.not, label %L262.L297_crit_edge, label %L272, !dbg !2684
L262.L297_crit_edge: ; preds = %L294
%bitcast_coercion84.le = bitcast i32* %ptr.1.i145 to i8*, !dbg !2748
br label %L297, !dbg !2684
L297: ; preds = %L262.L297_crit_edge, %L256
%value_phi81.lcssa = phi <4 x double> [ %res.i155, %L262.L297_crit_edge ], [ %value_phi74, %L256 ]
%value_phi82.lcssa = phi i64 [ %ptr.2.i146, %L262.L297_crit_edge ], [ %value_phi72, %L256 ]
%value_phi83.lcssa = phi i64 [ %ptr.2.i143, %L262.L297_crit_edge ], [ %value_phi73, %L256 ]
%bitcast_coercion84.lcssa = phi i8* [ %bitcast_coercion84.le, %L262.L297_crit_edge ], [ %bitcast_coercion84276, %L256 ], !dbg !2748
%bitcast_coercion96 = bitcast double* %ptr.1.i226 to i8*, !dbg !2768
%cmpi1.i139.not = icmp ult i8* %bitcast_coercion84.lcssa, %bitcast_coercion96, !dbg !2771
br i1 %cmpi1.i139.not, label %L301, label %L327, !dbg !2684
L301: ; preds = %L297
%res.i135 = add nsw i64 %arraysize11, -1, !dbg !2709
%ptr.0.i132 = inttoptr i64 %value_phi82.lcssa to double*, !dbg !2724
%ptr.1.i133 = getelementptr inbounds double, double* %ptr.0.i132, i64 %res.i135, !dbg !2724
%ie.i = insertelement <4 x i64> undef, i64 %36, i64 0
%v.i = shufflevector <4 x i64> %ie.i, <4 x i64> undef, <4 x i32> zeroinitializer
%res.i131 = mul nsw <4 x i64> %v.i, <i64 0, i64 1, i64 2, i64 3>
br label %L311, !dbg !2684
L311: ; preds = %L311, %L301
%iv7 = phi i64 [ %iv.next8, %L311 ], [ 0, %L301 ]
%value_phi101272 = phi i64 [ %value_phi83.lcssa, %L301 ], [ %ptr.2.i114, %L311 ]
%value_phi100271 = phi i64 [ %value_phi82.lcssa, %L301 ], [ %ptr.2.i117, %L311 ]
%value_phi97269 = phi <4 x double> [ %value_phi81.lcssa, %L301 ], [ %res.i118, %L311 ]
%iv.next8 = add nuw nsw i64 %iv7, 1, !dbg !2773
%ptr.0.i125 = inttoptr i64 %value_phi100271 to i8*, !dbg !2773
%ptr.1.i126 = getelementptr inbounds i8, i8* %ptr.0.i125, <4 x i64> %res.i131, !dbg !2773
%ptr.2.i127 = bitcast <4 x i8*> %ptr.1.i126 to <4 x double*>, !dbg !2773
%res.i130 = call <4 x double> @llvm.masked.gather.v4f64.v4p0f64(<4 x double*> %ptr.2.i127, i32 noundef 8, <4 x i1> %m.i, <4 x double> noundef zeroinitializer) #74, !dbg !2773, !alias.scope !682
%ptr.1.i121 = inttoptr i64 %value_phi101272 to <4 x double>*, !dbg !2773
%res.i124 = call <4 x double> @llvm.masked.load.v4f64.p0v4f64(<4 x double>* %ptr.1.i121, i32 noundef 8, <4 x i1> %m.i, <4 x double> noundef zeroinitializer) #74, !dbg !2773, !alias.scope !682
%res.i119 = call reassoc nsz arcp contract afn <4 x double> @llvm.fmuladd.v4f64(<4 x double> %res.i130, <4 x double> %res.i124, <4 x double> %value_phi97269) #74, !dbg !2776
%res.i118 = select reassoc nsz arcp contract <4 x i1> %m.i, <4 x double> %res.i119, <4 x double> %value_phi97269, !dbg !2782
%ptr.0.i115 = inttoptr i64 %value_phi100271 to double*, !dbg !2743
%ptr.1.i116 = getelementptr inbounds double, double* %ptr.0.i115, i64 1, !dbg !2743
%ptr.2.i117 = ptrtoint double* %ptr.1.i116 to i64, !dbg !2743
%ptr.0.i112 = inttoptr i64 %value_phi101272 to i8*, !dbg !2721
%ptr.1.i113 = getelementptr inbounds i8, i8* %ptr.0.i112, i64 %39, !dbg !2721
%ptr.2.i114 = ptrtoint i8* %ptr.1.i113 to i64, !dbg !2721
%cmpi1.i.not = icmp ugt double* %ptr.1.i116, %ptr.1.i133, !dbg !2745
br i1 %cmpi1.i.not, label %L327.loopexit, label %L311, !dbg !2684
L327.loopexit: ; preds = %L311
br label %L327, !dbg !2664
L327: ; preds = %L327.loopexit, %L297
%value_phi105 = phi <4 x double> [ %value_phi81.lcssa, %L297 ], [ %res.i118, %L327.loopexit ]
call void @llvm.julia.gc_preserve_end(token %42) #74, !dbg !2664
%res.i = call reassoc nsz arcp contract afn double @llvm.vector.reduce.fadd.v4f64(double noundef 0.000000e+00, <4 x double> %value_phi105) #74, !dbg !2784
br label %L340, !dbg !2754
L332: ; preds = %L27
%.fca.0.gep = getelementptr [2 x {} addrspace(10)*], [2 x {} addrspace(10)*] addrspace(10)* %10, i64 0, i64 0, !dbg !2787
store {} addrspace(10)* %0, {} addrspace(10)* addrspace(10)* %.fca.0.gep, align 8, !dbg !2787, !noalias !2788
call void ({} addrspace(10)*, ...) @julia.write_barrier({} addrspace(10)* %9, {} addrspace(10)* %0), !dbg !2787
%.fca.1.gep = getelementptr [2 x {} addrspace(10)*], [2 x {} addrspace(10)*] addrspace(10)* %10, i64 0, i64 1, !dbg !2787
store {} addrspace(10)* %1, {} addrspace(10)* addrspace(10)* %.fca.1.gep, align 8, !dbg !2787, !noalias !2788
call void ({} addrspace(10)*, ...) @julia.write_barrier({} addrspace(10)* %9, {} addrspace(10)* %1), !dbg !2787
%47 = addrspacecast [2 x {} addrspace(10)*] addrspace(10)* %10 to [2 x {} addrspace(10)*] addrspace(11)*, !dbg !2787
%48 = addrspacecast [2 x [2 x i64]]* %newstruct32 to [2 x [2 x i64]] addrspace(11)*, !dbg !2787
%49 = call fastcc double @julia_scalar_halves_35016([2 x {} addrspace(10)*] addrspace(11)* nocapture nofree noundef nonnull readonly align 8 dereferenceable(16) %47, [2 x [2 x i64]] addrspace(11)* nocapture nofree noundef nonnull readonly align 8 dereferenceable(32) %48, i64 signext %32) #74, !dbg !2787
br label %L340, !dbg !2754
L336: ; preds = %L15
call void @ijl_throw({} addrspace(12)* noundef addrspacecast ({}* inttoptr (i64 6190367648 to {}*) to {} addrspace(12)*)) #77, !dbg !2622
unreachable, !dbg !2622
L338: ; preds = %top
call void @ijl_throw({} addrspace(12)* noundef addrspacecast ({}* inttoptr (i64 6190248672 to {}*) to {} addrspace(12)*)) #77, !dbg !2622
unreachable, !dbg !2622
L340: ; preds = %L332, %L327
%value_phi106 = phi double [ %res.i, %L327 ], [ %49, %L332 ]
ret double %value_phi106, !dbg !2618
}
Type analysis state:
<analysis>
%ptr.1.i216 = getelementptr inbounds double, double* %ptr.0.i215, i64 %res.i218, !dbg !281: {[-1]:Pointer}, intvals: {}
%ptr.1.i202 = getelementptr inbounds i8, i8* %ptr.0.i208, <4 x i64> %res.i205, !dbg !283: {[-1]:Pointer}, intvals: {}
%res.i204 = call <4 x double> @llvm.masked.gather.v4f64.v4p0f64(<4 x double*> %ptr.2.i203, i32 noundef 8, <4 x i1> noundef <i1 true, i1 true, i1 true, i1 true>, <4 x double> undef) #74, !dbg !283, !alias.scope !296: {[-1]:Float@double}, intvals: {}
%ptr.0.i198 = inttoptr i64 %value_phi67289 to double*, !dbg !299: {[-1]:Pointer, [-1,0]:Float@double, [-1,8]:Float@double, [-1,16]:Float@double, [-1,24]:Float@double, [-1,32]:Float@double, [-1,40]:Float@double, [-1,48]:Float@double, [-1,56]:Float@double}, intvals: {}
%ptr.1.i199 = inttoptr i64 %value_phi67289 to <4 x double>*, !dbg !299: {[-1]:Pointer, [-1,0]:Float@double, [-1,8]:Float@double, [-1,16]:Float@double, [-1,24]:Float@double, [-1,32]:Float@double, [-1,40]:Float@double, [-1,48]:Float@double, [-1,56]:Float@double}, intvals: {}
%res.i200 = load <4 x double>, <4 x double>* %ptr.1.i199, align 8, !dbg !299, !alias.scope !296: {[-1]:Float@double}, intvals: {}
%ptr.1.i195 = getelementptr inbounds double, double* %ptr.0.i198, i64 4, !dbg !299: {[-1]:Pointer, [-1,0]:Float@double, [-1,8]:Float@double, [-1,16]:Float@double, [-1,24]:Float@double}, intvals: {}
%ptr.2.i196 = bitcast double* %ptr.1.i195 to <4 x double>*, !dbg !299: {[-1]:Pointer, [-1,0]:Float@double, [-1,8]:Float@double, [-1,16]:Float@double, [-1,24]:Float@double}, intvals: {}
%res.i197 = load <4 x double>, <4 x double>* %ptr.2.i196, align 8, !dbg !299, !alias.scope !296: {[-1]:Float@double}, intvals: {}
%res.i193 = call reassoc nsz arcp contract afn <4 x double> @llvm.fmuladd.v4f64(<4 x double> %res.i211, <4 x double> %res.i200, <4 x double> %value_phi62286) #74, !dbg !304: {[-1]:Float@double}, intvals: {}
%res.i192 = call reassoc nsz arcp contract afn <4 x double> @llvm.fmuladd.v4f64(<4 x double> %res.i204, <4 x double> %res.i197, <4 x double> %value_phi63287) #74, !dbg !304: {[-1]:Float@double}, intvals: {}
%ptr.0.i189 = inttoptr i64 %value_phi66288 to double*, !dbg !317: {[-1]:Pointer}, intvals: {}
%ptr.1.i190 = getelementptr inbounds double, double* %ptr.0.i189, i64 1, !dbg !317: {[-1]:Pointer}, intvals: {}
%ptr.2.i191 = ptrtoint double* %ptr.1.i190 to i64, !dbg !317: {[-1]:Pointer}, intvals: {}
%ptr.0.i186 = inttoptr i64 %value_phi67289 to i8*, !dbg !276: {[-1]:Pointer, [-1,0]:Float@double, [-1,8]:Float@double, [-1,16]:Float@double, [-1,24]:Float@double, [-1,32]:Float@double, [-1,40]:Float@double, [-1,48]:Float@double, [-1,56]:Float@double}, intvals: {}
%ptr.1.i187 = getelementptr inbounds i8, i8* %ptr.0.i186, i64 %39, !dbg !276: {[-1]:Pointer}, intvals: {}
%ptr.2.i188 = ptrtoint i8* %ptr.1.i187 to i64, !dbg !276: {[-1]:Pointer}, intvals: {}
%cmpi1.i184.not = icmp ugt double* %ptr.1.i190, %ptr.1.i216, !dbg !319: {[-1]:Integer}, intvals: {}
%ptr.1.i182 = getelementptr inbounds double, double* %ptr.0.i215, i64 %36, !dbg !281: {[-1]:Pointer}, intvals: {}
%ptr.2.i183 = ptrtoint double* %ptr.1.i182 to i64, !dbg !281: {[-1]:Pointer}, intvals: {}
%ptr.0.i178 = inttoptr i64 %value_phi56291 to double*, !dbg !317: {[-1]:Pointer, [-1,0]:Float@double, [-1,8]:Float@double, [-1,16]:Float@double, [-1,24]:Float@double, [-1,32]:Float@double, [-1,40]:Float@double, [-1,48]:Float@double, [-1,56]:Float@double, [-1,64]:Float@double, [-1,72]:Float@double, [-1,80]:Float@double, [-1,88]:Float@double}, intvals: {}
%ptr.1.i179 = getelementptr inbounds double, double* %ptr.0.i178, i64 8, !dbg !317: {[-1]:Pointer, [-1,0]:Float@double, [-1,8]:Float@double, [-1,16]:Float@double, [-1,24]:Float@double}, intvals: {}
%ptr.2.i180 = ptrtoint double* %ptr.1.i179 to i64, !dbg !317: {[-1]:Pointer, [-1,0]:Float@double, [-1,8]:Float@double, [-1,16]:Float@double, [-1,24]:Float@double}, intvals: {}
%bitcast_coercion70 = bitcast double* %ptr.1.i182 to i8*, !dbg !324: {[-1]:Pointer}, intvals: {}
%cmpi1.i176.not = icmp ult i8* %ptr.1.i229, %bitcast_coercion70, !dbg !319: {[-1]:Integer}, intvals: {}
%res.i175 = fadd nsz contract <4 x double> %res.i193, %res.i192, !dbg !328: {[-1]:Float@double}, intvals: {}
%value_phi72 = phi i64 [ %ptr.2.i183, %L253 ], [ %40, %L115.preheader ]: {[-1]:Pointer}, intvals: {}
%value_phi73 = phi i64 [ %ptr.2.i180, %L253 ], [ %41, %L115.preheader ]: {[-1]:Pointer, [-1,0]:Float@double, [-1,8]:Float@double, [-1,16]:Float@double, [-1,24]:Float@double}, intvals: {}
%value_phi74 = phi <4 x double> [ %res.i175, %L253 ], [ zeroinitializer, %L115.preheader ]: {[-1]:Float@double}, intvals: {}
%bitcast_coercion84276 = inttoptr i64 %value_phi72 to i8*, !dbg !324: {[-1]:Pointer}, intvals: {}
%bitcast_coercion85 = bitcast i32* %ptr.1.i223 to i8*, !dbg !324: {[-1]:Pointer, [-1,-1]:Float@double}, intvals: {}
%cmpi1.i173.not277 = icmp ugt i8* %bitcast_coercion84276, %bitcast_coercion85, !dbg !319: {[-1]:Integer}, intvals: {}
%res.i169 = add nsw i64 %arraysize11, -1: {[-1]:Integer}, intvals: {}
%ie.i164 = insertelement <4 x i64> undef, i64 %36, i64 0: {[0]:Integer, [1]:Integer, [2]:Integer, [3]:Integer, [4]:Integer, [5]:Integer, [6]:Integer, [7]:Integer, [8]:Anything, [9]:Anything, [10]:Anything, [11]:Anything, [12]:Anything, [13]:Anything, [14]:Anything, [15]:Anything, [16]:Anything, [17]:Anything, [18]:Anything, [19]:Anything, [20]:Anything, [21]:Anything, [22]:Anything, [23]:Anything, [24]:Anything, [25]:Anything, [26]:Anything, [27]:Anything, [28]:Anything, [29]:Anything, [30]:Anything, [31]:Anything}, intvals: {}
%v.i165 = shufflevector <4 x i64> %ie.i164, <4 x i64> undef, <4 x i32> zeroinitializer: {[-1]:Integer}, intvals: {}
%res.i163 = mul nsw <4 x i64> %v.i165, <i64 0, i64 1, i64 2, i64 3>: {[-1]:Integer}, intvals: {}
%value_phi83280 = phi i64 [ %value_phi73, %L272.lr.ph ], [ %ptr.2.i143, %L294 ]: {[-1]:Pointer, [-1,0]:Float@double, [-1,8]:Float@double, [-1,16]:Float@double, [-1,24]:Float@double}, intvals: {}
%value_phi82279 = phi i64 [ %value_phi72, %L272.lr.ph ], [ %ptr.2.i146, %L294 ]: {[-1]:Pointer}, intvals: {}
%value_phi78278 = phi <4 x double> [ %value_phi74, %L272.lr.ph ], [ %res.i155, %L294 ]: {[-1]:Float@double}, intvals: {}
%ptr.0.i166 = inttoptr i64 %value_phi82279 to double*, !dbg !281: {[-1]:Pointer}, intvals: {}
%ptr.1.i167 = getelementptr inbounds double, double* %ptr.0.i166, i64 %res.i169, !dbg !281: {[-1]:Pointer}, intvals: {}
%value_phi91275 = phi i64 [ %value_phi83280, %L272 ], [ %ptr.2.i151, %L283 ]: {[-1]:Pointer, [-1,0]:Float@double, [-1,8]:Float@double, [-1,16]:Float@double, [-1,24]:Float@double}, intvals: {}
%value_phi90274 = phi i64 [ %value_phi82279, %L272 ], [ %ptr.2.i154, %L283 ]: {[-1]:Pointer}, intvals: {}
%value_phi86273 = phi <4 x double> [ %value_phi78278, %L272 ], [ %res.i155, %L283 ]: {[-1]:Float@double}, intvals: {}
%ptr.0.i159 = inttoptr i64 %value_phi90274 to i8*, !dbg !347: {[-1]:Pointer}, intvals: {}
%ptr.1.i160 = getelementptr inbounds i8, i8* %ptr.0.i159, <4 x i64> %res.i163, !dbg !347: {[-1]:Pointer}, intvals: {}
%ptr.2.i161 = bitcast <4 x i8*> %ptr.1.i160 to <4 x double*>, !dbg !347: {[-1]:Pointer}, intvals: {}
%res.i162 = call <4 x double> @llvm.masked.gather.v4f64.v4p0f64(<4 x double*> %ptr.2.i161, i32 noundef 8, <4 x i1> noundef <i1 true, i1 true, i1 true, i1 true>, <4 x double> undef) #74, !dbg !347, !alias.scope !296: {[-1]:Float@double}, intvals: {}
%ptr.1.i157 = inttoptr i64 %value_phi91275 to <4 x double>*, !dbg !347: {[-1]:Pointer, [-1,0]:Float@double, [-1,8]:Float@double, [-1,16]:Float@double, [-1,24]:Float@double}, intvals: {}
%res.i158 = load <4 x double>, <4 x double>* %ptr.1.i157, align 8, !dbg !347, !alias.scope !296: {[-1]:Float@double}, intvals: {}
%res.i155 = call reassoc nsz arcp contract afn <4 x double> @llvm.fmuladd.v4f64(<4 x double> %res.i162, <4 x double> %res.i158, <4 x double> %value_phi86273) #74, !dbg !350: {[-1]:Float@double}, intvals: {}
%ptr.0.i152 = inttoptr i64 %value_phi90274 to double*, !dbg !317: {[-1]:Pointer}, intvals: {}
%ptr.1.i153 = getelementptr inbounds double, double* %ptr.0.i152, i64 1, !dbg !317: {[-1]:Pointer}, intvals: {}
%ptr.2.i154 = ptrtoint double* %ptr.1.i153 to i64, !dbg !317: {[-1]:Pointer}, intvals: {}
%ptr.0.i149 = inttoptr i64 %value_phi91275 to i8*, !dbg !276: {[-1]:Pointer, [-1,0]:Float@double, [-1,8]:Float@double, [-1,16]:Float@double, [-1,24]:Float@double}, intvals: {}
%ptr.1.i150 = getelementptr inbounds i8, i8* %ptr.0.i149, i64 %39, !dbg !276: {[-1]:Pointer}, intvals: {}
%ptr.2.i151 = ptrtoint i8* %ptr.1.i150 to i64, !dbg !276: {[-1]:Pointer}, intvals: {}
%cmpi1.i147.not = icmp ugt double* %ptr.1.i153, %ptr.1.i167, !dbg !319: {[-1]:Integer}, intvals: {}
%ptr.0.i144 = inttoptr i64 %value_phi82279 to i32*, !dbg !281: {[-1]:Pointer}, intvals: {}
%ptr.1.i145 = getelementptr inbounds i32, i32* %ptr.0.i144, i64 %36, !dbg !281: {[-1]:Pointer}, intvals: {}
%ptr.2.i146 = ptrtoint i32* %ptr.1.i145 to i64, !dbg !281: {[-1]:Pointer}, intvals: {}
%ptr.0.i141 = inttoptr i64 %value_phi83280 to double*, !dbg !317: {[-1]:Pointer, [-1,0]:Float@double, [-1,8]:Float@double, [-1,16]:Float@double, [-1,24]:Float@double}, intvals: {}
%ptr.1.i142 = getelementptr inbounds double, double* %ptr.0.i141, i64 4, !dbg !317: {[-1]:Pointer}, intvals: {}
%ptr.2.i143 = ptrtoint double* %ptr.1.i142 to i64, !dbg !317: {[-1]:Pointer}, intvals: {}
%cmpi1.i173.not = icmp ugt i32* %ptr.0.i144, %ptr.0.i222, !dbg !319: {[-1]:Integer}, intvals: {}
%bitcast_coercion84.le = bitcast i32* %ptr.1.i145 to i8*, !dbg !324: {[-1]:Pointer}, intvals: {}
%value_phi81.lcssa = phi <4 x double> [ %res.i155, %L262.L297_crit_edge ], [ %value_phi74, %L256 ]: {[-1]:Float@double}, intvals: {}
%value_phi82.lcssa = phi i64 [ %ptr.2.i146, %L262.L297_crit_edge ], [ %value_phi72, %L256 ]: {[-1]:Pointer}, intvals: {}
%value_phi83.lcssa = phi i64 [ %ptr.2.i143, %L262.L297_crit_edge ], [ %value_phi73, %L256 ]: {[-1]:Pointer}, intvals: {}
%bitcast_coercion84.lcssa = phi i8* [ %bitcast_coercion84.le, %L262.L297_crit_edge ], [ %bitcast_coercion84276, %L256 ], !dbg !324: {[-1]:Pointer}, intvals: {}
%bitcast_coercion96 = bitcast double* %ptr.1.i226 to i8*, !dbg !358: {[-1]:Pointer, [-1,-1]:Float@double}, intvals: {}
%cmpi1.i139.not = icmp ult i8* %bitcast_coercion84.lcssa, %bitcast_coercion96, !dbg !362: {[-1]:Integer}, intvals: {}
%res.i135 = add nsw i64 %arraysize11, -1, !dbg !256: {[-1]:Integer}, intvals: {}
%ptr.0.i132 = inttoptr i64 %value_phi82.lcssa to double*, !dbg !281: {[-1]:Pointer}, intvals: {}
%ptr.1.i133 = getelementptr inbounds double, double* %ptr.0.i132, i64 %res.i135, !dbg !281: {[-1]:Pointer}, intvals: {}
%ie.i = insertelement <4 x i64> undef, i64 %36, i64 0: {[0]:Integer, [1]:Integer, [2]:Integer, [3]:Integer, [4]:Integer, [5]:Integer, [6]:Integer, [7]:Integer, [8]:Anything, [9]:Anything, [10]:Anything, [11]:Anything, [12]:Anything, [13]:Anything, [14]:Anything, [15]:Anything, [16]:Anything, [17]:Anything, [18]:Anything, [19]:Anything, [20]:Anything, [21]:Anything, [22]:Anything, [23]:Anything, [24]:Anything, [25]:Anything, [26]:Anything, [27]:Anything, [28]:Anything, [29]:Anything, [30]:Anything, [31]:Anything}, intvals: {}
%v.i = shufflevector <4 x i64> %ie.i, <4 x i64> undef, <4 x i32> zeroinitializer: {[-1]:Integer}, intvals: {}
%res.i131 = mul nsw <4 x i64> %v.i, <i64 0, i64 1, i64 2, i64 3>: {[-1]:Integer}, intvals: {}
%value_phi101272 = phi i64 [ %value_phi83.lcssa, %L301 ], [ %ptr.2.i114, %L311 ]: {[-1]:Integer}, intvals: {}
%value_phi100271 = phi i64 [ %value_phi82.lcssa, %L301 ], [ %ptr.2.i117, %L311 ]: {[-1]:Pointer}, intvals: {}
%value_phi97269 = phi <4 x double> [ %value_phi81.lcssa, %L301 ], [ %res.i118, %L311 ]: {[-1]:Float@double}, intvals: {}
%ptr.0.i125 = inttoptr i64 %value_phi100271 to i8*, !dbg !364: {[-1]:Pointer}, intvals: {}
%ptr.1.i126 = getelementptr inbounds i8, i8* %ptr.0.i125, <4 x i64> %res.i131, !dbg !364: {[-1]:Pointer}, intvals: {}
%ptr.2.i127 = bitcast <4 x i8*> %ptr.1.i126 to <4 x double*>, !dbg !364: {[-1]:Pointer}, intvals: {}
%res.i130 = call <4 x double> @llvm.masked.gather.v4f64.v4p0f64(<4 x double*> %ptr.2.i127, i32 noundef 8, <4 x i1> %m.i, <4 x double> noundef zeroinitializer) #74, !dbg !364, !alias.scope !296: {[-1]:Float@double}, intvals: {}
%ptr.1.i121 = inttoptr i64 %value_phi101272 to <4 x double>*, !dbg !364: {[-1]:Integer}, intvals: {}
%res.i124 = call <4 x double> @llvm.masked.load.v4f64.p0v4f64(<4 x double>* %ptr.1.i121, i32 noundef 8, <4 x i1> %m.i, <4 x double> noundef zeroinitializer) #74, !dbg !364, !alias.scope !296: {[-1]:Float@double}, intvals: {}
%res.i119 = call reassoc nsz arcp contract afn <4 x double> @llvm.fmuladd.v4f64(<4 x double> %res.i130, <4 x double> %res.i124, <4 x double> %value_phi97269) #74, !dbg !367: {[-1]:Float@double}, intvals: {}
%res.i118 = select reassoc nsz arcp contract <4 x i1> %m.i, <4 x double> %res.i119, <4 x double> %value_phi97269, !dbg !375: {[-1]:Float@double}, intvals: {}
%ptr.0.i115 = inttoptr i64 %value_phi100271 to double*, !dbg !317: {[-1]:Pointer}, intvals: {}
%ptr.1.i116 = getelementptr inbounds double, double* %ptr.0.i115, i64 1, !dbg !317: {[-1]:Pointer}, intvals: {}
%ptr.2.i117 = ptrtoint double* %ptr.1.i116 to i64, !dbg !317: {[-1]:Pointer}, intvals: {}
%ptr.0.i112 = inttoptr i64 %value_phi101272 to i8*, !dbg !276: {[-1]:Integer}, intvals: {}
%ptr.1.i113 = getelementptr inbounds i8, i8* %ptr.0.i112, i64 %39, !dbg !276: {}, intvals: {}
%ptr.2.i114 = ptrtoint i8* %ptr.1.i113 to i64, !dbg !276: {}, intvals: {}
%cmpi1.i.not = icmp ugt double* %ptr.1.i116, %ptr.1.i133, !dbg !319: {[-1]:Integer}, intvals: {}
%value_phi105 = phi <4 x double> [ %value_phi81.lcssa, %L297 ], [ %res.i118, %L327.loopexit ]: {[-1]:Float@double}, intvals: {}
%res.i = call reassoc nsz arcp contract afn double @llvm.vector.reduce.fadd.v4f64(double noundef 0.000000e+00, <4 x double> %value_phi105) #74, !dbg !377: {[-1]:Float@double}, intvals: {}
%47 = addrspacecast [2 x {} addrspace(10)*] addrspace(10)* %10 to [2 x {} addrspace(10)*] addrspace(11)*, !dbg !382: {[-1]:Pointer, [-1,0]:Pointer, [-1,0,0]:Pointer, [-1,0,0,-1]:Float@double, [-1,0,8]:Integer, [-1,0,9]:Integer, [-1,0,10]:Integer, [-1,0,11]:Integer, [-1,0,12]:Integer, [-1,0,13]:Integer, [-1,0,14]:Integer, [-1,0,15]:Integer, [-1,0,16]:Integer, [-1,0,17]:Integer, [-1,0,18]:Integer, [-1,0,19]:Integer, [-1,0,20]:Integer, [-1,0,21]:Integer, [-1,0,22]:Integer, [-1,0,23]:Integer, [-1,0,24]:Integer, [-1,0,25]:Integer, [-1,0,26]:Integer, [-1,0,27]:Integer, [-1,0,28]:Integer, [-1,0,29]:Integer, [-1,0,30]:Integer, [-1,0,31]:Integer, [-1,0,32]:Integer, [-1,0,33]:Integer, [-1,0,34]:Integer, [-1,0,35]:Integer, [-1,0,36]:Integer, [-1,0,37]:Integer, [-1,0,38]:Integer, [-1,0,39]:Integer, [-1,8]:Pointer, [-1,8,0]:Pointer, [-1,8,0,-1]:Float@double, [-1,8,8]:Integer, [-1,8,9]:Integer, [-1,8,10]:Integer, [-1,8,11]:Integer, [-1,8,12]:Integer, [-1,8,13]:Integer, [-1,8,14]:Integer, [-1,8,15]:Integer, [-1,8,16]:Integer, [-1,8,17]:Integer, [-1,8,18]:Integer, [-1,8,19]:Integer, [-1,8,20]:Integer, [-1,8,21]:Integer, [-1,8,22]:Integer, [-1,8,23]:Integer, [-1,8,24]:Integer, [-1,8,25]:Integer, [-1,8,26]:Integer, [-1,8,27]:Integer, [-1,8,28]:Integer, [-1,8,29]:Integer, [-1,8,30]:Integer, [-1,8,31]:Integer, [-1,8,32]:Integer, [-1,8,33]:Integer, [-1,8,34]:Integer, [-1,8,35]:Integer, [-1,8,36]:Integer, [-1,8,37]:Integer, [-1,8,38]:Integer, [-1,8,39]:Integer}, intvals: {}
%48 = addrspacecast [2 x [2 x i64]]* %newstruct32 to [2 x [2 x i64]] addrspace(11)*, !dbg !382: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {}
%49 = call fastcc double @julia_scalar_halves_35016([2 x {} addrspace(10)*] addrspace(11)* nocapture nofree noundef nonnull readonly align 8 dereferenceable(16) %47, [2 x [2 x i64]] addrspace(11)* nocapture nofree noundef nonnull readonly align 8 dereferenceable(32) %48, i64 signext %32) #74, !dbg !382: {[-1]:Float@double}, intvals: {}
%value_phi106 = phi double [ %res.i, %L327 ], [ %49, %L332 ]: {[-1]:Float@double}, intvals: {}
%3 = call noalias nonnull dereferenceable(32) dereferenceable_or_null(32) i8* @malloc(i64 32), !enzyme_fromstack !56: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {}
%newstruct32 = bitcast i8* %3 to [2 x [2 x i64]]*, !enzyme_caststack !55: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {}
{}* inttoptr (i64 6424501648 to {}*): {[-1]:Anything}, intvals: {}
{} addrspace(10)* addrspacecast ({}* inttoptr (i64 6424501648 to {}*) to {} addrspace(10)*): {[-1]:Anything}, intvals: {}
%4 = bitcast {}*** %2 to {}**: {[-1]:Pointer}, intvals: {}
%5 = getelementptr inbounds {}*, {}** %4, i64 -14: {[-1]:Pointer}, intvals: {}
%6 = getelementptr inbounds {}*, {}** %5, i64 16: {[-1]:Pointer}, intvals: {}
%7 = bitcast {}** %6 to i8**: {[-1]:Pointer}, intvals: {}
%8 = load i8*, i8** %7, align 8: {}, intvals: {}
%9 = call noalias nonnull dereferenceable(16) dereferenceable_or_null(16) {} addrspace(10)* @julia.gc_alloc_obj({}** %5, i64 16, {} addrspace(10)* addrspacecast ({}* inttoptr (i64 6424501648 to {}*) to {} addrspace(10)*)), !enzyme_fromstack !56: {[-1]:Pointer, [-1,0]:Pointer, [-1,0,0]:Pointer, [-1,0,0,-1]:Float@double, [-1,0,8]:Integer, [-1,0,9]:Integer, [-1,0,10]:Integer, [-1,0,11]:Integer, [-1,0,12]:Integer, [-1,0,13]:Integer, [-1,0,14]:Integer, [-1,0,15]:Integer, [-1,0,16]:Integer, [-1,0,17]:Integer, [-1,0,18]:Integer, [-1,0,19]:Integer, [-1,0,20]:Integer, [-1,0,21]:Integer, [-1,0,22]:Integer, [-1,0,23]:Integer, [-1,0,24]:Integer, [-1,0,25]:Integer, [-1,0,26]:Integer, [-1,0,27]:Integer, [-1,0,28]:Integer, [-1,0,29]:Integer, [-1,0,30]:Integer, [-1,0,31]:Integer, [-1,0,32]:Integer, [-1,0,33]:Integer, [-1,0,34]:Integer, [-1,0,35]:Integer, [-1,0,36]:Integer, [-1,0,37]:Integer, [-1,0,38]:Integer, [-1,0,39]:Integer, [-1,8]:Pointer, [-1,8,0]:Pointer, [-1,8,0,-1]:Float@double, [-1,8,8]:Integer, [-1,8,9]:Integer, [-1,8,10]:Integer, [-1,8,11]:Integer, [-1,8,12]:Integer, [-1,8,13]:Integer, [-1,8,14]:Integer, [-1,8,15]:Integer, [-1,8,16]:Integer, [-1,8,17]:Integer, [-1,8,18]:Integer, [-1,8,19]:Integer, [-1,8,20]:Integer, [-1,8,21]:Integer, [-1,8,22]:Integer, [-1,8,23]:Integer, [-1,8,24]:Integer, [-1,8,25]:Integer, [-1,8,26]:Integer, [-1,8,27]:Integer, [-1,8,28]:Integer, [-1,8,29]:Integer, [-1,8,30]:Integer, [-1,8,31]:Integer, [-1,8,32]:Integer, [-1,8,33]:Integer, [-1,8,34]:Integer, [-1,8,35]:Integer, [-1,8,36]:Integer, [-1,8,37]:Integer, [-1,8,38]:Integer, [-1,8,39]:Integer}, intvals: {}
call void @zeroType({} addrspace(10)* %9, i8 0, i64 16), !enzyme_zerostack !55: {}, intvals: {}
%10 = bitcast {} addrspace(10)* %9 to [2 x {} addrspace(10)*] addrspace(10)*, !enzyme_caststack !55: {[-1]:Pointer, [-1,0]:Pointer, [-1,0,0]:Pointer, [-1,0,0,-1]:Float@double, [-1,0,8]:Integer, [-1,0,9]:Integer, [-1,0,10]:Integer, [-1,0,11]:Integer, [-1,0,12]:Integer, [-1,0,13]:Integer, [-1,0,14]:Integer, [-1,0,15]:Integer, [-1,0,16]:Integer, [-1,0,17]:Integer, [-1,0,18]:Integer, [-1,0,19]:Integer, [-1,0,20]:Integer, [-1,0,21]:Integer, [-1,0,22]:Integer, [-1,0,23]:Integer, [-1,0,24]:Integer, [-1,0,25]:Integer, [-1,0,26]:Integer, [-1,0,27]:Integer, [-1,0,28]:Integer, [-1,0,29]:Integer, [-1,0,30]:Integer, [-1,0,31]:Integer, [-1,0,32]:Integer, [-1,0,33]:Integer, [-1,0,34]:Integer, [-1,0,35]:Integer, [-1,0,36]:Integer, [-1,0,37]:Integer, [-1,0,38]:Integer, [-1,0,39]:Integer, [-1,8]:Pointer, [-1,8,0]:Pointer, [-1,8,0,-1]:Float@double, [-1,8,8]:Integer, [-1,8,9]:Integer, [-1,8,10]:Integer, [-1,8,11]:Integer, [-1,8,12]:Integer, [-1,8,13]:Integer, [-1,8,14]:Integer, [-1,8,15]:Integer, [-1,8,16]:Integer, [-1,8,17]:Integer, [-1,8,18]:Integer, [-1,8,19]:Integer, [-1,8,20]:Integer, [-1,8,21]:Integer, [-1,8,22]:Integer, [-1,8,23]:Integer, [-1,8,24]:Integer, [-1,8,25]:Integer, [-1,8,26]:Integer, [-1,8,27]:Integer, [-1,8,28]:Integer, [-1,8,29]:Integer, [-1,8,30]:Integer, [-1,8,31]:Integer, [-1,8,32]:Integer, [-1,8,33]:Integer, [-1,8,34]:Integer, [-1,8,35]:Integer, [-1,8,36]:Integer, [-1,8,37]:Integer, [-1,8,38]:Integer, [-1,8,39]:Integer}, intvals: {}
%.fca.0.gep = getelementptr [2 x {} addrspace(10)*], [2 x {} addrspace(10)*] addrspace(10)* %10, i64 0, i64 0, !dbg !382: {[-1]:Pointer, [-1,0]:Pointer, [-1,0,0]:Pointer, [-1,0,0,-1]:Float@double, [-1,0,8]:Integer, [-1,0,9]:Integer, [-1,0,10]:Integer, [-1,0,11]:Integer, [-1,0,12]:Integer, [-1,0,13]:Integer, [-1,0,14]:Integer, [-1,0,15]:Integer, [-1,0,16]:Integer, [-1,0,17]:Integer, [-1,0,18]:Integer, [-1,0,19]:Integer, [-1,0,20]:Integer, [-1,0,21]:Integer, [-1,0,22]:Integer, [-1,0,23]:Integer, [-1,0,24]:Integer, [-1,0,25]:Integer, [-1,0,26]:Integer, [-1,0,27]:Integer, [-1,0,28]:Integer, [-1,0,29]:Integer, [-1,0,30]:Integer, [-1,0,31]:Integer, [-1,0,32]:Integer, [-1,0,33]:Integer, [-1,0,34]:Integer, [-1,0,35]:Integer, [-1,0,36]:Integer, [-1,0,37]:Integer, [-1,0,38]:Integer, [-1,0,39]:Integer}, intvals: {}
%.fca.1.gep = getelementptr [2 x {} addrspace(10)*], [2 x {} addrspace(10)*] addrspace(10)* %10, i64 0, i64 1, !dbg !382: {[-1]:Pointer, [-1,0]:Pointer, [-1,0,0]:Pointer, [-1,0,0,-1]:Float@double, [-1,0,8]:Integer, [-1,0,9]:Integer, [-1,0,10]:Integer, [-1,0,11]:Integer, [-1,0,12]:Integer, [-1,0,13]:Integer, [-1,0,14]:Integer, [-1,0,15]:Integer, [-1,0,16]:Integer, [-1,0,17]:Integer, [-1,0,18]:Integer, [-1,0,19]:Integer, [-1,0,20]:Integer, [-1,0,21]:Integer, [-1,0,22]:Integer, [-1,0,23]:Integer, [-1,0,24]:Integer, [-1,0,25]:Integer, [-1,0,26]:Integer, [-1,0,27]:Integer, [-1,0,28]:Integer, [-1,0,29]:Integer, [-1,0,30]:Integer, [-1,0,31]:Integer, [-1,0,32]:Integer, [-1,0,33]:Integer, [-1,0,34]:Integer, [-1,0,35]:Integer, [-1,0,36]:Integer, [-1,0,37]:Integer, [-1,0,38]:Integer, [-1,0,39]:Integer}, intvals: {}
%iv = phi i64 [ %iv.next, %L247 ], [ 0, %L212.preheader ]: {[-1]:Integer}, intvals: {0,}
%iv.next = add nuw nsw i64 %iv, 1, !dbg !281: {[-1]:Integer}, intvals: {1,}
%iv5 = phi i64 [ %iv.next6, %L283 ], [ 0, %L272 ]: {[-1]:Integer}, intvals: {0,}
%iv1 = phi i64 [ %iv.next2, %L231 ], [ 0, %L220 ]: {[-1]:Integer}, intvals: {0,}
%iv.next2 = add nuw nsw i64 %iv1, 1, !dbg !283: {[-1]:Integer}, intvals: {1,}
%iv3 = phi i64 [ %iv.next4, %L294 ], [ 0, %L272.lr.ph ]: {[-1]:Integer}, intvals: {0,}
%iv.next4 = add nuw nsw i64 %iv3, 1, !dbg !281: {[-1]:Integer}, intvals: {1,}
%iv.next6 = add nuw nsw i64 %iv5, 1, !dbg !347: {[-1]:Integer}, intvals: {1,}
%iv7 = phi i64 [ %iv.next8, %L311 ], [ 0, %L301 ]: {[-1]:Integer}, intvals: {0,}
%iv.next8 = add nuw nsw i64 %iv7, 1, !dbg !364: {[-1]:Integer}, intvals: {1,}
{} addrspace(10)* %0: {[-1]:Pointer, [-1,0]:Pointer, [-1,0,-1]:Float@double, [-1,8]:Integer, [-1,9]:Integer, [-1,10]:Integer, [-1,11]:Integer, [-1,12]:Integer, [-1,13]:Integer, [-1,14]:Integer, [-1,15]:Integer, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer, [-1,24]:Integer, [-1,25]:Integer, [-1,26]:Integer, [-1,27]:Integer, [-1,28]:Integer, [-1,29]:Integer, [-1,30]:Integer, [-1,31]:Integer, [-1,32]:Integer, [-1,33]:Integer, [-1,34]:Integer, [-1,35]:Integer, [-1,36]:Integer, [-1,37]:Integer, [-1,38]:Integer, [-1,39]:Integer}, intvals: {}
{} addrspace(10)* %1: {[-1]:Pointer, [-1,0]:Pointer, [-1,0,-1]:Float@double, [-1,8]:Integer, [-1,9]:Integer, [-1,10]:Integer, [-1,11]:Integer, [-1,12]:Integer, [-1,13]:Integer, [-1,14]:Integer, [-1,15]:Integer, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer, [-1,24]:Integer, [-1,25]:Integer, [-1,26]:Integer, [-1,27]:Integer, [-1,28]:Integer, [-1,29]:Integer, [-1,30]:Integer, [-1,31]:Integer, [-1,32]:Integer, [-1,33]:Integer, [-1,34]:Integer, [-1,35]:Integer, [-1,36]:Integer, [-1,37]:Integer, [-1,38]:Integer, [-1,39]:Integer}, intvals: {}
%35 = bitcast {}* %34 to i8**, !dbg !155: {[-1]:Pointer, [-1,0]:Pointer, [-1,0,-1]:Float@double, [-1,8]:Integer, [-1,9]:Integer, [-1,10]:Integer, [-1,11]:Integer, [-1,12]:Integer, [-1,13]:Integer, [-1,14]:Integer, [-1,15]:Integer, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer, [-1,24]:Integer, [-1,25]:Integer, [-1,26]:Integer, [-1,27]:Integer, [-1,28]:Integer, [-1,29]:Integer, [-1,30]:Integer, [-1,31]:Integer, [-1,32]:Integer, [-1,33]:Integer, [-1,34]:Integer, [-1,35]:Integer, [-1,36]:Integer, [-1,37]:Integer, [-1,38]:Integer, [-1,39]:Integer}, intvals: {}
%11 = call {}*** @julia.get_pgcstack() #74: {[-1]:Pointer, [-1,16]:Pointer}, intvals: {}
%12 = bitcast {}*** %ptls_field255 to i64***: {[-1]:Pointer, [-1,0]:Pointer}, intvals: {}
%ie.i238 = insertelement <4 x i64> undef, i64 %45, i64 0, !dbg !231: {[0]:Integer, [1]:Integer, [2]:Integer, [3]:Integer, [4]:Integer, [5]:Integer, [6]:Integer, [7]:Integer, [8]:Anything, [9]:Anything, [10]:Anything, [11]:Anything, [12]:Anything, [13]:Anything, [14]:Anything, [15]:Anything, [16]:Anything, [17]:Anything, [18]:Anything, [19]:Anything, [20]:Anything, [21]:Anything, [22]:Anything, [23]:Anything, [24]:Anything, [25]:Anything, [26]:Anything, [27]:Anything, [28]:Anything, [29]:Anything, [30]:Anything, [31]:Anything}, intvals: {}
%v.i239 = shufflevector <4 x i64> %ie.i238, <4 x i64> undef, <4 x i32> zeroinitializer, !dbg !231: {[-1]:Integer}, intvals: {}
%arraysize15 = load i64, i64 addrspace(11)* %21, align 16, !dbg !64, !tbaa !61, !range !74, !invariant.load !55, !alias.scope !75, !noalias !78: {[-1]:Integer}, intvals: {}
%.not258 = icmp eq i64 %arraysize15, %arraysize11, !dbg !83: {[-1]:Integer}, intvals: {}
%ptls_field255 = getelementptr inbounds {}**, {}*** %11, i64 2: {[-1]:Pointer, [-1,0]:Pointer}, intvals: {}
%ptls_load256257 = load i64**, i64*** %12, align 8, !tbaa !57: {[-1]:Pointer}, intvals: {}
%13 = getelementptr inbounds i64*, i64** %ptls_load256257, i64 2: {[-1]:Pointer}, intvals: {}
%safepoint = load i64*, i64** %13, align 8, !tbaa !61, !invariant.load !55: {}, intvals: {}
%14 = addrspacecast {} addrspace(10)* %0 to {} addrspace(11)*, !dbg !64: {[-1]:Pointer, [-1,0]:Pointer, [-1,0,-1]:Float@double, [-1,8]:Integer, [-1,9]:Integer, [-1,10]:Integer, [-1,11]:Integer, [-1,12]:Integer, [-1,13]:Integer, [-1,14]:Integer, [-1,15]:Integer, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer, [-1,24]:Integer, [-1,25]:Integer, [-1,26]:Integer, [-1,27]:Integer, [-1,28]:Integer, [-1,29]:Integer, [-1,30]:Integer, [-1,31]:Integer, [-1,32]:Integer, [-1,33]:Integer, [-1,34]:Integer, [-1,35]:Integer, [-1,36]:Integer, [-1,37]:Integer, [-1,38]:Integer, [-1,39]:Integer}, intvals: {}
%v.i214 = shufflevector <4 x i64> %ie.i213, <4 x i64> undef, <4 x i32> zeroinitializer: {[-1]:Integer}, intvals: {}
%res.i205 = mul nsw <4 x i64> %v.i214, <i64 4, i64 5, i64 6, i64 7>: {[-1]:Integer}, intvals: {}
%value_phi56291 = phi i64 [ %41, %L212.preheader ], [ %ptr.2.i180, %L247 ]: {[-1]:Pointer, [-1,0]:Float@double, [-1,8]:Float@double, [-1,16]:Float@double, [-1,24]:Float@double, [-1,32]:Float@double, [-1,40]:Float@double, [-1,48]:Float@double, [-1,56]:Float@double, [-1,64]:Float@double, [-1,72]:Float@double, [-1,80]:Float@double, [-1,88]:Float@double}, intvals: {}
%value_phi55290 = phi i64 [ %40, %L212.preheader ], [ %ptr.2.i183, %L247 ]: {[-1]:Pointer}, intvals: {}
%ptr.0.i215 = inttoptr i64 %value_phi55290 to double*, !dbg !281: {[-1]:Pointer}, intvals: {}
%20 = bitcast {} addrspace(10)* addrspace(11)* %arraysize_ptr10 to i64 addrspace(11)*, !dbg !64: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer, [-1,8]:Integer, [-1,9]:Integer, [-1,10]:Integer, [-1,11]:Integer, [-1,12]:Integer, [-1,13]:Integer, [-1,14]:Integer, [-1,15]:Integer}, intvals: {}
%arraysize11 = load i64, i64 addrspace(11)* %20, align 8, !dbg !64, !tbaa !61, !range !74, !invariant.load !55, !alias.scope !75, !noalias !78: {[-1]:Integer}, intvals: {}
%arraysize_ptr14 = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %18, i64 4, !dbg !64: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer}, intvals: {}
%21 = bitcast {} addrspace(10)* addrspace(11)* %arraysize_ptr14 to i64 addrspace(11)*, !dbg !64: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer}, intvals: {}
%value_phi59293 = phi <4 x double> [ zeroinitializer, %L212.preheader ], [ %res.i192, %L247 ]: {[-1]:Float@double}, intvals: {}
i64 18: {[-1]:Integer}, intvals: {18,}
i64 -8: {[-1]:Integer}, intvals: {-8,}
%2 = call {}*** @julia.get_pgcstack(): {[-1]:Pointer}, intvals: {}
%44 = icmp ne i64 %arraysize11, 0, !dbg !197: {[-1]:Integer}, intvals: {}
%res.i240 = add nuw i64 %arraysize, 3, !dbg !211: {[-1]:Integer}, intvals: {}
%m.i = icmp uge <4 x i64> %v.i239, <i64 0, i64 1, i64 2, i64 3>, !dbg !254: {[-1]:Integer}, intvals: {}
%res.i232 = add nsw i64 %arraysize, -8, !dbg !256: {[-1]:Integer}, intvals: {}
%res.i231 = mul nsw i64 %36, %res.i232, !dbg !262: {[-1]:Integer}, intvals: {}
%ptr.1.i229 = getelementptr inbounds i8, i8* %arrayptr, i64 %res.i231, !dbg !276: {[-1]:Pointer, [-1,-1]:Float@double}, intvals: {}
%ptr.1.i209 = getelementptr inbounds i8, i8* %ptr.0.i208, <4 x i64> %res.i212, !dbg !283: {[-1]:Pointer}, intvals: {}
%ptr.2.i210 = bitcast <4 x i8*> %ptr.1.i209 to <4 x double*>, !dbg !283: {[-1]:Pointer}, intvals: {}
%res.i211 = call <4 x double> @llvm.masked.gather.v4f64.v4p0f64(<4 x double*> %ptr.2.i210, i32 noundef 8, <4 x i1> noundef <i1 true, i1 true, i1 true, i1 true>, <4 x double> undef) #74, !dbg !283, !alias.scope !296: {[-1]:Float@double}, intvals: {}
%ptr.2.i203 = bitcast <4 x i8*> %ptr.1.i202 to <4 x double*>, !dbg !283: {[-1]:Pointer}, intvals: {}
%43 = icmp ne i64 %arraysize, 0, !dbg !197: {[-1]:Integer}, intvals: {}
%ptr.0.i222 = bitcast i8* %ptr.1.i229 to i32*, !dbg !281: {[-1]:Pointer, [-1,-1]:Float@double}, intvals: {}
%36 = shl i64 %arraysize11, 3, !dbg !170: {[-1]:Integer}, intvals: {}
%38 = bitcast {}* %37 to i8**, !dbg !155: {[-1]:Pointer, [-1,0]:Pointer, [-1,0,-1]:Float@double, [-1,8]:Integer, [-1,9]:Integer, [-1,10]:Integer, [-1,11]:Integer, [-1,12]:Integer, [-1,13]:Integer, [-1,14]:Integer, [-1,15]:Integer, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer, [-1,24]:Integer, [-1,25]:Integer, [-1,26]:Integer, [-1,27]:Integer, [-1,28]:Integer, [-1,29]:Integer, [-1,30]:Integer, [-1,31]:Integer, [-1,32]:Integer, [-1,33]:Integer, [-1,34]:Integer, [-1,35]:Integer, [-1,36]:Integer, [-1,37]:Integer, [-1,38]:Integer, [-1,39]:Integer}, intvals: {}
%arrayptr50 = load i8*, i8** %38, align 8, !dbg !155, !tbaa !61, !invariant.load !55, !alias.scope !75, !noalias !78, !nonnull !55: {[-1]:Pointer, [-1,-1]:Float@double}, intvals: {}
%40 = ptrtoint i8* %arrayptr to i64, !dbg !180: {[-1]:Pointer, [-1,-1]:Float@double}, intvals: {}
%39 = shl i64 %arraysize, 3, !dbg !170: {[-1]:Integer}, intvals: {}
%41 = ptrtoint i8* %arrayptr50 to i64, !dbg !180: {[-1]:Pointer, [-1,-1]:Float@double}, intvals: {}
%ptr.1.i226 = getelementptr inbounds double, double* %ptr.0.i225, i64 %36, !dbg !281: {[-1]:Pointer, [-1,-1]:Float@double}, intvals: {}
%ptr.1.i223 = getelementptr inbounds i32, i32* %ptr.0.i222, i64 %36, !dbg !281: {[-1]:Pointer, [-1,-1]:Float@double}, intvals: {}
%46 = icmp ult i64 %arraysize, 8, !dbg !197: {[-1]:Integer}, intvals: {}
%res.i218 = add nsw i64 %arraysize11, -1: {[-1]:Integer}, intvals: {}
%ie.i213 = insertelement <4 x i64> undef, i64 %36, i64 0: {[0]:Integer, [1]:Integer, [2]:Integer, [3]:Integer, [4]:Integer, [5]:Integer, [6]:Integer, [7]:Integer, [8]:Anything, [9]:Anything, [10]:Anything, [11]:Anything, [12]:Anything, [13]:Anything, [14]:Anything, [15]:Anything, [16]:Anything, [17]:Anything, [18]:Anything, [19]:Anything, [20]:Anything, [21]:Anything, [22]:Anything, [23]:Anything, [24]:Anything, [25]:Anything, [26]:Anything, [27]:Anything, [28]:Anything, [29]:Anything, [30]:Anything, [31]:Anything}, intvals: {}
%res.i212 = mul nsw <4 x i64> %v.i214, <i64 0, i64 1, i64 2, i64 3>: {[-1]:Integer}, intvals: {}
%30 = add nsw i64 %24, %29, !dbg !144: {[-1]:Anything}, intvals: {}
%32 = call i64 @llvm.smin.i64(i64 %23, i64 %31) #74, !dbg !146: {[-1]:Integer}, intvals: {}
%33 = icmp sgt i64 %32, 1, !dbg !153: {[-1]:Integer}, intvals: {}
%37 = call nonnull {}* @julia.pointer_from_objref({} addrspace(11)* noundef %17) #76, !dbg !155: {[-1]:Pointer, [-1,0]:Pointer, [-1,0,-1]:Float@double, [-1,8]:Integer, [-1,9]:Integer, [-1,10]:Integer, [-1,11]:Integer, [-1,12]:Integer, [-1,13]:Integer, [-1,14]:Integer, [-1,15]:Integer, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer, [-1,24]:Integer, [-1,25]:Integer, [-1,26]:Integer, [-1,27]:Integer, [-1,28]:Integer, [-1,29]:Integer, [-1,30]:Integer, [-1,31]:Integer, [-1,32]:Integer, [-1,33]:Integer, [-1,34]:Integer, [-1,35]:Integer, [-1,36]:Integer, [-1,37]:Integer, [-1,38]:Integer, [-1,39]:Integer}, intvals: {}
%newstruct27.sroa.0.0..sroa_idx = getelementptr inbounds [2 x [2 x i64]], [2 x [2 x i64]]* %newstruct32, i64 0, i64 0, i64 0, !dbg !89: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {}
%newstruct27.sroa.2.0..sroa_idx247 = getelementptr inbounds [2 x [2 x i64]], [2 x [2 x i64]]* %newstruct32, i64 0, i64 0, i64 1, !dbg !89: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {}
%newstruct30.sroa.0.0..sroa_idx = getelementptr inbounds [2 x [2 x i64]], [2 x [2 x i64]]* %newstruct32, i64 0, i64 1, i64 0, !dbg !89: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {}
%29 = zext i1 %28 to i64, !dbg !132: {[-1]:Anything}, intvals: {}
%newstruct30.sroa.2.0..sroa_idx246 = getelementptr inbounds [2 x [2 x i64]], [2 x [2 x i64]]* %newstruct32, i64 0, i64 1, i64 1, !dbg !89: {[-1]:Pointer, [-1,-1]:Integer}, intvals: {}
%22 = call i64 @julia_nthreads_35283() #75, !dbg !102: {[-1]:Integer}, intvals: {}
%34 = call nonnull {}* @julia.pointer_from_objref({} addrspace(11)* noundef %14) #76, !dbg !155: {[-1]:Pointer, [-1,0]:Pointer, [-1,0,-1]:Float@double, [-1,8]:Integer, [-1,9]:Integer, [-1,10]:Integer, [-1,11]:Integer, [-1,12]:Integer, [-1,13]:Integer, [-1,14]:Integer, [-1,15]:Integer, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer, [-1,24]:Integer, [-1,25]:Integer, [-1,26]:Integer, [-1,27]:Integer, [-1,28]:Integer, [-1,29]:Integer, [-1,30]:Integer, [-1,31]:Integer, [-1,32]:Integer, [-1,33]:Integer, [-1,34]:Integer, [-1,35]:Integer, [-1,36]:Integer, [-1,37]:Integer, [-1,38]:Integer, [-1,39]:Integer}, intvals: {}
%23 = mul i64 %arraysize11, %arraysize, !dbg !103: {[-1]:Integer}, intvals: {}
%arrayptr = load i8*, i8** %35, align 8, !dbg !155, !tbaa !61, !invariant.load !55, !alias.scope !75, !noalias !78, !nonnull !55: {[-1]:Pointer, [-1,-1]:Float@double}, intvals: {}
%value_phi67289 = phi i64 [ %value_phi56291, %L220 ], [ %ptr.2.i188, %L231 ]: {[-1]:Pointer, [-1,0]:Float@double, [-1,8]:Float@double, [-1,16]:Float@double, [-1,24]:Float@double, [-1,32]:Float@double, [-1,40]:Float@double, [-1,48]:Float@double, [-1,56]:Float@double}, intvals: {}
%value_phi66288 = phi i64 [ %value_phi55290, %L220 ], [ %ptr.2.i191, %L231 ]: {[-1]:Pointer}, intvals: {}
%value_phi63287 = phi <4 x double> [ %value_phi59293, %L220 ], [ %res.i192, %L231 ]: {[-1]:Float@double}, intvals: {}
%value_phi62286 = phi <4 x double> [ %value_phi58292, %L220 ], [ %res.i193, %L231 ]: {[-1]:Float@double}, intvals: {}
%ptr.0.i208 = inttoptr i64 %value_phi66288 to i8*, !dbg !283: {[-1]:Pointer}, intvals: {}
%45 = and i64 %res.i240, 3, !dbg !226: {[-1]:Integer}, intvals: {}
%ptr.0.i225 = bitcast i8* %ptr.1.i229 to double*, !dbg !281: {[-1]:Pointer, [-1,-1]:Float@double}, intvals: {}
%17 = addrspacecast {} addrspace(10)* %1 to {} addrspace(11)*, !dbg !64: {[-1]:Pointer, [-1,0]:Pointer, [-1,0,-1]:Float@double, [-1,8]:Integer, [-1,9]:Integer, [-1,10]:Integer, [-1,11]:Integer, [-1,12]:Integer, [-1,13]:Integer, [-1,14]:Integer, [-1,15]:Integer, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer, [-1,24]:Integer, [-1,25]:Integer, [-1,26]:Integer, [-1,27]:Integer, [-1,28]:Integer, [-1,29]:Integer, [-1,30]:Integer, [-1,31]:Integer, [-1,32]:Integer, [-1,33]:Integer, [-1,34]:Integer, [-1,35]:Integer, [-1,36]:Integer, [-1,37]:Integer, [-1,38]:Integer, [-1,39]:Integer}, intvals: {}
%18 = addrspacecast {} addrspace(10)* %1 to {} addrspace(10)* addrspace(11)*, !dbg !64: {[-1]:Pointer, [-1,0]:Pointer, [-1,0,-1]:Float@double, [-1,8]:Integer, [-1,9]:Integer, [-1,10]:Integer, [-1,11]:Integer, [-1,12]:Integer, [-1,13]:Integer, [-1,14]:Integer, [-1,15]:Integer, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer, [-1,24]:Integer, [-1,25]:Integer, [-1,26]:Integer, [-1,27]:Integer, [-1,28]:Integer, [-1,29]:Integer, [-1,30]:Integer, [-1,31]:Integer, [-1,32]:Integer, [-1,33]:Integer, [-1,34]:Integer, [-1,35]:Integer, [-1,36]:Integer, [-1,37]:Integer, [-1,38]:Integer, [-1,39]:Integer}, intvals: {}
%19 = bitcast {} addrspace(10)* addrspace(11)* %arraysize_ptr4 to i64 addrspace(11)*, !dbg !64: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer, [-1,8]:Integer, [-1,9]:Integer, [-1,10]:Integer, [-1,11]:Integer, [-1,12]:Integer, [-1,13]:Integer, [-1,14]:Integer, [-1,15]:Integer}, intvals: {}
%arraysize5 = load i64, i64 addrspace(11)* %19, align 8, !dbg !64, !tbaa !61, !range !74, !invariant.load !55, !alias.scope !75, !noalias !78: {[-1]:Integer}, intvals: {}
%arraysize_ptr10 = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %15, i64 3, !dbg !64: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer, [-1,8]:Integer, [-1,9]:Integer, [-1,10]:Integer, [-1,11]:Integer, [-1,12]:Integer, [-1,13]:Integer, [-1,14]:Integer, [-1,15]:Integer}, intvals: {}
%.not = icmp eq i64 %arraysize5, %arraysize, !dbg !83: {[-1]:Integer}, intvals: {}
%24 = sdiv i64 %23, 262144, !dbg !111: {[-1]:Integer}, intvals: {}
%25 = icmp sgt i64 %23, 0, !dbg !119: {[-1]:Integer}, intvals: {}
%26 = shl nsw i64 %24, 18, !dbg !125: {[-1]:Integer}, intvals: {}
%27 = icmp ne i64 %26, %23, !dbg !126: {[-1]:Integer}, intvals: {}
%28 = and i1 %25, %27, !dbg !129: {[-1]:Anything}, intvals: {}
%15 = addrspacecast {} addrspace(10)* %0 to {} addrspace(10)* addrspace(11)*, !dbg !64: {[-1]:Pointer, [-1,0]:Pointer, [-1,0,-1]:Float@double, [-1,8]:Integer, [-1,9]:Integer, [-1,10]:Integer, [-1,11]:Integer, [-1,12]:Integer, [-1,13]:Integer, [-1,14]:Integer, [-1,15]:Integer, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer, [-1,24]:Integer, [-1,25]:Integer, [-1,26]:Integer, [-1,27]:Integer, [-1,28]:Integer, [-1,29]:Integer, [-1,30]:Integer, [-1,31]:Integer, [-1,32]:Integer, [-1,33]:Integer, [-1,34]:Integer, [-1,35]:Integer, [-1,36]:Integer, [-1,37]:Integer, [-1,38]:Integer, [-1,39]:Integer}, intvals: {}
%arraysize_ptr = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %15, i64 4, !dbg !64: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer}, intvals: {}
%16 = bitcast {} addrspace(10)* addrspace(11)* %arraysize_ptr to i64 addrspace(11)*, !dbg !64: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer}, intvals: {}
%arraysize = load i64, i64 addrspace(11)* %16, align 16, !dbg !64, !tbaa !61, !range !74, !invariant.load !55, !alias.scope !75, !noalias !78: {[-1]:Integer}, intvals: {}
%arraysize_ptr4 = getelementptr inbounds {} addrspace(10)*, {} addrspace(10)* addrspace(11)* %18, i64 3, !dbg !64: {[-1]:Pointer, [-1,0]:Integer, [-1,1]:Integer, [-1,2]:Integer, [-1,3]:Integer, [-1,4]:Integer, [-1,5]:Integer, [-1,6]:Integer, [-1,7]:Integer, [-1,8]:Integer, [-1,9]:Integer, [-1,10]:Integer, [-1,11]:Integer, [-1,12]:Integer, [-1,13]:Integer, [-1,14]:Integer, [-1,15]:Integer}, intvals: {}
%value_phi58292 = phi <4 x double> [ zeroinitializer, %L212.preheader ], [ %res.i193, %L247 ]: {[-1]:Float@double}, intvals: {}
i64 2: {[-1]:Integer}, intvals: {2,}
i64 8: {[-1]:Integer}, intvals: {8,}
<4 x double> zeroinitializer: {[-1]:Anything}, intvals: {}
i64 16: {[-1]:Integer}, intvals: {16,}
i64 0: {[-1]:Anything}, intvals: {0,}
i64 1: {[-1]:Integer}, intvals: {1,}
i64 3: {[-1]:Integer}, intvals: {3,}
i64 262144: {[-1]:Anything}, intvals: {262144,}
i64 -1: {[-1]:Anything}, intvals: {-1,}
<4 x i64> undef: {[-1]:Anything}, intvals: {}
<4 x i64> <i64 0, i64 1, i64 2, i64 3>: {[-1]:Anything}, intvals: {}
i64 5: {[-1]:Integer}, intvals: {5,}
i64 7: {[-1]:Integer}, intvals: {7,}
<4 x i64> <i64 4, i64 5, i64 6, i64 7>: {[-1]:Anything}, intvals: {}
i64 6: {[-1]:Integer}, intvals: {6,}
i64 4: {[-1]:Integer}, intvals: {4,}
{}* inttoptr (i64 6190367648 to {}*): {[-1]:Anything}, intvals: {}
{} addrspace(12)* addrspacecast ({}* inttoptr (i64 6190367648 to {}*) to {} addrspace(12)*): {[-1]:Anything}, intvals: {}
{}* inttoptr (i64 6190248672 to {}*): {[-1]:Anything}, intvals: {}
{} addrspace(12)* addrspacecast ({}* inttoptr (i64 6190248672 to {}*) to {} addrspace(12)*): {[-1]:Anything}, intvals: {}
</analysis>
Could not keep minus one
MethodInstance for (::Tullio.Eval{var"#ℳ𝒢𝓀ℯ#8"{var"#π’œπ’Έπ“‰!#5"}, var"#92#βˆ‡β„³π’Άπ“€β„―#7"{var"#βˆ‡π’œπ’Έπ“‰!#6"}})(::Matrix{Float64}, ::Matrix{Float64})
Caused by:
Stacktrace:
[1] macro expansion
@ ~/.julia/packages/VectorizationBase/xE5Tx/src/llvm_intrin/memory_addr.jl:400
[2] _gep
@ ~/.julia/packages/VectorizationBase/xE5Tx/src/llvm_intrin/memory_addr.jl:400
[3] increment_ptr
@ ~/.julia/packages/VectorizationBase/xE5Tx/src/llvm_intrin/memory_addr.jl:442
[4] increment_ptr
@ ~/.julia/packages/VectorizationBase/xE5Tx/src/llvm_intrin/memory_addr.jl:456
[5] macro expansion
@ ~/.julia/packages/LoopVectorization/7gWfp/src/reconstruct_loopset.jl:1107
[6] _turbo_!
@ ~/.julia/packages/LoopVectorization/7gWfp/src/reconstruct_loopset.jl:1107
[7] π’œπ’Έπ“‰!
@ ~/.julia/packages/Tullio/vChiX/src/macro.jl:1093
[8] π’œπ’Έπ“‰!
@ ~/.julia/packages/Tullio/vChiX/src/macro.jl:1090
[9] thread_scalar
@ ~/.julia/packages/Tullio/vChiX/src/threads.jl:237
[10] ℳ𝒢𝓀ℯ
@ ~/.julia/packages/Tullio/vChiX/src/macro.jl:807
[11] Eval
@ ~/.julia/packages/Tullio/vChiX/src/eval.jl:20
Stacktrace:
[1] julia_error(cstr::Cstring, val::Ptr{…}, errtype::Enzyme.API.ErrorType, data::Ptr{…}, data2::Ptr{…}, B::Ptr{…})
@ Enzyme.Compiler ~/.julia/packages/Enzyme/KJgKj/src/compiler.jl:1696
[2] EnzymeCreateAugmentedPrimal(logic::Enzyme.Logic, todiff::LLVM.Function, retType::Enzyme.API.CDIFFE_TYPE, constant_args::Vector{…}, TA::Enzyme.TypeAnalysis, returnUsed::Bool, shadowReturnUsed::Bool, typeInfo::Enzyme.FnTypeInfo, uncacheable_args::Vector{…}, forceAnonymousTape::Bool, width::Int64, atomicAdd::Bool)
@ Enzyme.API ~/.julia/packages/Enzyme/KJgKj/src/api.jl:177
[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::Tuple{…}, returnPrimal::Bool, jlrules::Vector{…}, expectedTapeType::Type, loweredArgs::Set{…}, boxedArgs::Set{…})
@ Enzyme.Compiler ~/.julia/packages/Enzyme/KJgKj/src/compiler.jl:3093
[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/KJgKj/src/compiler.jl:4767
[5] codegen
@ ~/.julia/packages/Enzyme/KJgKj/src/compiler.jl:4348 [inlined]
[6] _thunk(job::GPUCompiler.CompilerJob{Enzyme.Compiler.EnzymeTarget, Enzyme.Compiler.EnzymeCompilerParams}, postopt::Bool) (repeats 2 times)
@ Enzyme.Compiler ~/.julia/packages/Enzyme/KJgKj/src/compiler.jl:5362
[7] cached_compilation
@ ~/.julia/packages/Enzyme/KJgKj/src/compiler.jl:5396 [inlined]
[8] (::Enzyme.Compiler.var"#509#510"{…})(ctx::LLVM.Context)
@ Enzyme.Compiler ~/.julia/packages/Enzyme/KJgKj/src/compiler.jl:5462
[9] JuliaContext(f::Enzyme.Compiler.var"#509#510"{…})
@ GPUCompiler ~/.julia/packages/GPUCompiler/U36Ed/src/driver.jl:47
[10] #s1056#508
@ ~/.julia/packages/Enzyme/KJgKj/src/compiler.jl:5414 [inlined]
[11]
@ Enzyme.Compiler ./none:0
[12] (::Core.GeneratedFunctionStub)(::UInt64, ::LineNumberNode, ::Any, ::Vararg{Any})
@ Core ./boot.jl:602
[13] runtime_generic_augfwd(activity::Type{…}, width::Val{…}, ModifiedBetween::Val{…}, RT::Val{…}, f::Tullio.Eval{…}, df::Nothing, primal_1::Matrix{…}, shadow_1_1::Matrix{…}, primal_2::Matrix{…}, shadow_2_1::Nothing)
@ Enzyme.Compiler ~/.julia/packages/Enzyme/KJgKj/src/rules/jitrules.jl:175
[14] macro expansion
@ ~/.julia/packages/Tullio/vChiX/src/macro.jl:976 [inlined]
[15] provatullio
@ ~/SCRA/TEST_ENZYME/prova.jl:5 [inlined]
[16] fA
@ ~/SCRA/TEST_ENZYME/prova.jl:44 [inlined]
[17] fA
@ ~/SCRA/TEST_ENZYME/prova.jl:0 [inlined]
[18] diffejulia_fA_30873_inner_1wrap
@ ~/SCRA/TEST_ENZYME/prova.jl:0
[19] macro expansion
@ ~/.julia/packages/Enzyme/KJgKj/src/compiler.jl:5310 [inlined]
[20] enzyme_call
@ ~/.julia/packages/Enzyme/KJgKj/src/compiler.jl:4988 [inlined]
[21] CombinedAdjointThunk
@ ~/.julia/packages/Enzyme/KJgKj/src/compiler.jl:4930 [inlined]
[22] autodiff
@ ~/.julia/packages/Enzyme/KJgKj/src/Enzyme.jl:215 [inlined]
[23] autodiff
@ ~/.julia/packages/Enzyme/KJgKj/src/Enzyme.jl:224 [inlined]
[24] gradient
@ ~/.julia/packages/Enzyme/KJgKj/src/Enzyme.jl:805 [inlined]
[25] gradenzyme(f::typeof(provatullio), A::Matrix{Float64}, B::Matrix{Float64})
@ Main ~/SCRA/TEST_ENZYME/prova.jl:46
[26] top-level scope
@ REPL[101]: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