Created
February 12, 2024 07:55
-
-
Save pagnani/b0eda7b3e4607374ce75a6f86165ae49 to your computer and use it in GitHub Desktop.
complete stacktrace https://github.com/EnzymeAD/Enzyme.jl/issues/1279
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> 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