You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I'm on Julia 1.11.2, the error persists both on Enzyme v0.13.21 and on main (1d3b801).
I use ForwardDiff to compute small 3x3 gradients stored in SMatrix, and then differentiate the kernel with Enzyme. The error seems to be similar to #2011.
MWE:
using Enzyme, ForwardDiff, DiffResults, StaticArrays
d_dx(S::StaticMatrix{3,<:Any}) = S[SVector(2, 3), :] - S[SVector(1, 2), :]
F(x) =sum(d_dx(x))
functionfoo(A, B)
Bl =@SMatrix [B[1] for _ in1:3, _ in1:3]
dr = ForwardDiff.gradient!(DiffResults.GradientResult(Bl), F, Bl)
A[1] = DiffResults.value(dr) /sum(DiffResults.gradient(dr))
# A[1] = F(Bl) / sum(ForwardDiff.gradient(F, Bl)) # this worksreturnend
A =zeros(1)
B =zeros(1)
dA =zeros(1)
dB =zeros(1)
foo(A, B)
Enzyme.autodiff(Enzyme.Reverse, Const(foo), Const, Duplicated(A, dA), Duplicated(B, dB)) # error
Running this code yields:
Error log
ERROR: Enzyme cannot deduce type
Current scope:
; Function Attrs: mustprogress willreturn
define void @preprocess_julia_foo_28711({} addrspace(10)* noundef nonnull align 8 dereferenceable(24) "enzyme_type"="{[-1]:Pointer, [-1,0]:Pointer, [-1,0,-1]:Float@double, [-1,8]:Pointer, [-1,8,0]:Integer, [-1,8,1]:Integer, [-1,8,2]:Integer, [-1,8,3]:Integer, [-1,8,4]:Integer, [-1,8,5]:Integer, [-1,8,6]:Integer, [-1,8,7]:Integer, [-1,8,8]:Pointer, [-1,8,8,-1]:Float@double, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer}" "enzymejl_parmtype"="139820028775248" "enzymejl_parmtype_ref"="2" %0, {} addrspace(10)* noundef nonnull align 8 dereferenceable(24) "enzyme_type"="{[-1]:Pointer, [-1,0]:Pointer, [-1,0,-1]:Float@double, [-1,8]:Pointer, [-1,8,0]:Integer, [-1,8,1]:Integer, [-1,8,2]:Integer, [-1,8,3]:Integer, [-1,8,4]:Integer, [-1,8,5]:Integer, [-1,8,6]:Integer, [-1,8,7]:Integer, [-1,8,8]:Pointer, [-1,8,8,-1]:Float@double, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer}" "enzymejl_parmtype"="139820028775248" "enzymejl_parmtype_ref"="2" %1) local_unnamed_addr #11 !dbg !164 {
top:%2= alloca [1 x [9 x { double, [1 x [9 x double]] }]], align 8%3= alloca [1 x [6 x { double, [1 x [9 x double]] }]], align 8, !enzymejl_allocart !64, !enzyme_type !65, !enzymejl_source_type_SMatrix\7B2\2C\203\2C\20ForwardDiff.Dual\7BForwardDiff.Tag\7Btypeof\28F\29\2C\20Float64\7D\2C\20Float64\2C\209\7D\2C\206\7D !0, !enzymejl_byref_MUT_REF !0
%4= alloca [1 x i64], align 8%5= alloca [1 x i64], align 8%pgcstack = call {}***@julia.get_pgcstack() #15%ptls_field49 = getelementptr inbounds {}**, {}***%pgcstack, i64 2%6= bitcast {}***%ptls_field49 to i64***%ptls_load5051 = load i64**, i64***%6, align 8, !tbaa !10
%7= getelementptr inbounds i64*, i64**%ptls_load5051, i64 2%safepoint = load i64*, i64**%7, align 8, !tbaa !14
fence syncscope("singlethread") seq_cst
call void @julia.safepoint(i64*%safepoint) #15, !dbg !165
fence syncscope("singlethread") seq_cst
%8= bitcast {} addrspace(10)*%1 to i8 addrspace(10)*, !dbg !166
%9= addrspacecast i8 addrspace(10)*%8 to i8 addrspace(11)*, !dbg !166
%10= getelementptr inbounds i8, i8 addrspace(11)*%9, i64 16, !dbg !166
%11= bitcast i8 addrspace(11)*%10 to i64 addrspace(11)*, !dbg !166
%12= load i64, i64 addrspace(11)*%11, align 8, !dbg !166, !tbaa !79, !alias.scope !82, !noalias !83, !enzyme_inactive !0, !enzyme_type !84, !enzymejl_byref_BITS_VALUE !0, !enzymejl_source_type_Int64 !0
%.not = icmp eq i64 %12, 0, !dbg !167
br i1 %.not, label %L12, label %L15, !dbg !167
L12: ; preds =%top
%13= getelementptr inbounds [1 x i64], [1 x i64]*%5, i64 0, i64 0, !dbg !167
store i64 1, i64*%13, align 8, !dbg !167, !tbaa !86, !alias.scope !88, !noalias !171
%14= addrspacecast [1 x i64]*%5 to [1 x i64] addrspace(11)*, !dbg !167
call fastcc void @julia_throw_boundserror_28728({} addrspace(10)* nofree noundef nonnull align 8dereferenceable(24) %1, [1 x i64] addrspace(11)* nocapture nofree noundef nonnull readonly align 8dereferenceable(8) %14) #16, !dbg !167
unreachable, !dbg !167
L15: ; preds =%top
%15= bitcast {} addrspace(10)*%1 to { i8*, {} addrspace(10)* } addrspace(10)*, !dbg !174
%16= addrspacecast { i8*, {} addrspace(10)* } addrspace(10)*%15 to { i8*, {} addrspace(10)* } addrspace(11)*, !dbg !174
%17= bitcast {} addrspace(10)*%1 to {} addrspace(10)**addrspace(10)*, !dbg !174
%18= addrspacecast {} addrspace(10)**addrspace(10)*%17 to {} addrspace(10)**addrspace(11)*, !dbg !174
%19= load {} addrspace(10)**, {} addrspace(10)**addrspace(11)*%18, align 8, !dbg !174, !tbaa !91, !alias.scope !82, !noalias !83, !enzyme_type !65, !enzymejl_byref_BITS_VALUE !0, !enzymejl_source_type_Ptr\7BFloat64\7D !0, !enzyme_nocache !0
%20= getelementptr inbounds { i8*, {} addrspace(10)* }, { i8*, {} addrspace(10)* } addrspace(11)*%16, i64 0, i32 1, !dbg !174
%21= load {} addrspace(10)*, {} addrspace(10)*addrspace(11)*%20, align 8, !dbg !174, !tbaa !91, !alias.scope !82, !noalias !83, !dereferenceable_or_null !93, !align !94, !enzyme_type !95, !enzymejl_byref_MUT_REF !0, !enzymejl_source_type_Memory\7BFloat64\7D !0
%22= call "enzyme_type"="{[-1]:Pointer, [-1,-1]:Float@double}" {} addrspace(10)*addrspace(13)*@julia.gc_loaded({} addrspace(10)* noundef %21, {} addrspace(10)** noundef %19) #15, !dbg !174%23= bitcast {} addrspace(10)*addrspace(13)*%22 to double addrspace(13)*, !dbg !174
%24= load double, double addrspace(13)*%23, align 8, !dbg !174, !tbaa !97, !alias.scope !100, !noalias !101, !enzyme_type !47, !enzymejl_source_type_Float64 !0, !enzymejl_byref_BITS_VALUE !0
%25= getelementptr inbounds [1 x [9 x { double, [1 x [9 x double]] }]], [1 x [9 x { double, [1 x [9 x double]] }]]*%2, i64 0, i64 0, i64 0, i32 0, !dbg !175
store double %24, double*%25, align 8, !dbg !175, !tbaa !86, !alias.scope !88, !noalias !171
%26= getelementptr inbounds [1 x [9 x { double, [1 x [9 x double]] }]], [1 x [9 x { double, [1 x [9 x double]] }]]*%2, i64 0, i64 0, i64 0, i32 1, !dbg !175
%27= bitcast [1 x [9 x double]]*%26 to i8*, !dbg !175
call void @llvm.memcpy.p0i8.p0i8.i64(i8* noundef nonnull align 8dereferenceable(72) %27, i8* noundef nonnull align 8dereferenceable(72) bitcast ([1 x [9 x double]]*@_j_const_1 to i8*), i64 noundef 72, i1 noundef false) #15, !dbg !175, !tbaa !118, !alias.scope !119, !noalias !184%28= getelementptr inbounds [1 x [9 x { double, [1 x [9 x double]] }]], [1 x [9 x { double, [1 x [9 x double]] }]]*%2, i64 0, i64 0, i64 1, i32 0, !dbg !175
store double %24, double*%28, align 8, !dbg !175, !tbaa !86, !alias.scope !88, !noalias !171
%29= getelementptr inbounds [1 x [9 x { double, [1 x [9 x double]] }]], [1 x [9 x { double, [1 x [9 x double]] }]]*%2, i64 0, i64 0, i64 1, i32 1, !dbg !175
%30= bitcast [1 x [9 x double]]*%29 to i8*, !dbg !175
call void @llvm.memcpy.p0i8.p0i8.i64(i8* noundef nonnull align 8dereferenceable(72) %30, i8* noundef nonnull align 8dereferenceable(72) bitcast ([1 x [9 x double]]*@_j_const_2 to i8*), i64 noundef 72, i1 noundef false) #15, !dbg !175, !tbaa !118, !alias.scope !119, !noalias !184%31= getelementptr inbounds [1 x [9 x { double, [1 x [9 x double]] }]], [1 x [9 x { double, [1 x [9 x double]] }]]*%2, i64 0, i64 0, i64 2, i32 0, !dbg !175
store double %24, double*%31, align 8, !dbg !175, !tbaa !86, !alias.scope !88, !noalias !171
%32= getelementptr inbounds [1 x [9 x { double, [1 x [9 x double]] }]], [1 x [9 x { double, [1 x [9 x double]] }]]*%2, i64 0, i64 0, i64 2, i32 1, !dbg !175
%33= bitcast [1 x [9 x double]]*%32 to i8*, !dbg !175
call void @llvm.memcpy.p0i8.p0i8.i64(i8* noundef nonnull align 8dereferenceable(72) %33, i8* noundef nonnull align 8dereferenceable(72) bitcast ([1 x [9 x double]]*@_j_const_3 to i8*), i64 noundef 72, i1 noundef false) #15, !dbg !175, !tbaa !118, !alias.scope !119, !noalias !184%34= getelementptr inbounds [1 x [9 x { double, [1 x [9 x double]] }]], [1 x [9 x { double, [1 x [9 x double]] }]]*%2, i64 0, i64 0, i64 3, i32 0, !dbg !175
store double %24, double*%34, align 8, !dbg !175, !tbaa !86, !alias.scope !88, !noalias !171
%35= getelementptr inbounds [1 x [9 x { double, [1 x [9 x double]] }]], [1 x [9 x { double, [1 x [9 x double]] }]]*%2, i64 0, i64 0, i64 3, i32 1, !dbg !175
%36= bitcast [1 x [9 x double]]*%35 to i8*, !dbg !175
call void @llvm.memcpy.p0i8.p0i8.i64(i8* noundef nonnull align 8dereferenceable(72) %36, i8* noundef nonnull align 8dereferenceable(72) bitcast ([1 x [9 x double]]*@_j_const_4 to i8*), i64 noundef 72, i1 noundef false) #15, !dbg !175, !tbaa !118, !alias.scope !119, !noalias !184%37= getelementptr inbounds [1 x [9 x { double, [1 x [9 x double]] }]], [1 x [9 x { double, [1 x [9 x double]] }]]*%2, i64 0, i64 0, i64 4, i32 0, !dbg !175
store double %24, double*%37, align 8, !dbg !175, !tbaa !86, !alias.scope !88, !noalias !171
%38= getelementptr inbounds [1 x [9 x { double, [1 x [9 x double]] }]], [1 x [9 x { double, [1 x [9 x double]] }]]*%2, i64 0, i64 0, i64 4, i32 1, !dbg !175
%39= bitcast [1 x [9 x double]]*%38 to i8*, !dbg !175
call void @llvm.memcpy.p0i8.p0i8.i64(i8* noundef nonnull align 8dereferenceable(72) %39, i8* noundef nonnull align 8dereferenceable(72) bitcast ([1 x [9 x double]]*@_j_const_5 to i8*), i64 noundef 72, i1 noundef false) #15, !dbg !175, !tbaa !118, !alias.scope !119, !noalias !184%40= getelementptr inbounds [1 x [9 x { double, [1 x [9 x double]] }]], [1 x [9 x { double, [1 x [9 x double]] }]]*%2, i64 0, i64 0, i64 5, i32 0, !dbg !175
store double %24, double*%40, align 8, !dbg !175, !tbaa !86, !alias.scope !88, !noalias !171
%41= getelementptr inbounds [1 x [9 x { double, [1 x [9 x double]] }]], [1 x [9 x { double, [1 x [9 x double]] }]]*%2, i64 0, i64 0, i64 5, i32 1, !dbg !175
%42= bitcast [1 x [9 x double]]*%41 to i8*, !dbg !175
call void @llvm.memcpy.p0i8.p0i8.i64(i8* noundef nonnull align 8dereferenceable(72) %42, i8* noundef nonnull align 8dereferenceable(72) bitcast ([1 x [9 x double]]*@_j_const_6 to i8*), i64 noundef 72, i1 noundef false) #15, !dbg !175, !tbaa !118, !alias.scope !119, !noalias !184%43= getelementptr inbounds [1 x [9 x { double, [1 x [9 x double]] }]], [1 x [9 x { double, [1 x [9 x double]] }]]*%2, i64 0, i64 0, i64 6, i32 0, !dbg !175
store double %24, double*%43, align 8, !dbg !175, !tbaa !86, !alias.scope !88, !noalias !171
%44= getelementptr inbounds [1 x [9 x { double, [1 x [9 x double]] }]], [1 x [9 x { double, [1 x [9 x double]] }]]*%2, i64 0, i64 0, i64 6, i32 1, !dbg !175
%45= bitcast [1 x [9 x double]]*%44 to i8*, !dbg !175
call void @llvm.memcpy.p0i8.p0i8.i64(i8* noundef nonnull align 8dereferenceable(72) %45, i8* noundef nonnull align 8dereferenceable(72) bitcast ([1 x [9 x double]]*@_j_const_7 to i8*), i64 noundef 72, i1 noundef false) #15, !dbg !175, !tbaa !118, !alias.scope !119, !noalias !184%46= getelementptr inbounds [1 x [9 x { double, [1 x [9 x double]] }]], [1 x [9 x { double, [1 x [9 x double]] }]]*%2, i64 0, i64 0, i64 7, i32 0, !dbg !175
store double %24, double*%46, align 8, !dbg !175, !tbaa !86, !alias.scope !88, !noalias !171
%47= getelementptr inbounds [1 x [9 x { double, [1 x [9 x double]] }]], [1 x [9 x { double, [1 x [9 x double]] }]]*%2, i64 0, i64 0, i64 7, i32 1, !dbg !175
%48= bitcast [1 x [9 x double]]*%47 to i8*, !dbg !175
call void @llvm.memcpy.p0i8.p0i8.i64(i8* noundef nonnull align 8dereferenceable(72) %48, i8* noundef nonnull align 8dereferenceable(72) bitcast ([1 x [9 x double]]*@_j_const_8 to i8*), i64 noundef 72, i1 noundef false) #15, !dbg !175, !tbaa !118, !alias.scope !119, !noalias !184%49= getelementptr inbounds [1 x [9 x { double, [1 x [9 x double]] }]], [1 x [9 x { double, [1 x [9 x double]] }]]*%2, i64 0, i64 0, i64 8, i32 0, !dbg !175
store double %24, double*%49, align 8, !dbg !175, !tbaa !86, !alias.scope !88, !noalias !171
%50= getelementptr inbounds [1 x [9 x { double, [1 x [9 x double]] }]], [1 x [9 x { double, [1 x [9 x double]] }]]*%2, i64 0, i64 0, i64 8, i32 1, !dbg !175
%51= bitcast [1 x [9 x double]]*%50 to i8*, !dbg !175
call void @llvm.memcpy.p0i8.p0i8.i64(i8* noundef nonnull align 8dereferenceable(72) %51, i8* noundef nonnull align 8dereferenceable(72) bitcast ([1 x [9 x double]]*@_j_const_9 to i8*), i64 noundef 72, i1 noundef false) #15, !dbg !175, !tbaa !118, !alias.scope !119, !noalias !184%52= addrspacecast [1 x [9 x { double, [1 x [9 x double]] }]]*%2 to [1 x [9 x { double, [1 x [9 x double]] }]] addrspace(11)*, !dbg !185
call fastcc void @julia_d_dx_28735([1 x [6 x { double, [1 x [9 x double]] }]]* noalias nocapture nofree noundef nonnull writeonly sret([1 x [6 x { double, [1 x [9 x double]] }]]) align 8dereferenceable(480) %3, [1 x [9 x { double, [1 x [9 x double]] }]] addrspace(11)* nocapture nofree noundef nonnull readonly align 8dereferenceable(720) %52) #15, !dbg !185%53= bitcast {} addrspace(10)*%0 to i8 addrspace(10)*, !dbg !186
%54= addrspacecast i8 addrspace(10)*%53 to i8 addrspace(11)*, !dbg !186
%55= getelementptr inbounds i8, i8 addrspace(11)*%54, i64 16, !dbg !186
%56= bitcast i8 addrspace(11)*%55 to i64 addrspace(11)*, !dbg !186
%57= load i64, i64 addrspace(11)*%56, align 8, !dbg !186, !tbaa !79, !alias.scope !82, !noalias !83, !enzyme_inactive !0, !enzyme_type !84, !enzymejl_byref_BITS_VALUE !0, !enzymejl_source_type_Int64 !0
%.not52 = icmp eq i64 %57, 0, !dbg !189
br i1 %.not52, label %L236, label %L239, !dbg !187
L236: ; preds =%L15
%58= getelementptr inbounds [1 x i64], [1 x i64]*%4, i64 0, i64 0, !dbg !187
store i64 1, i64*%58, align 8, !dbg !187, !tbaa !86, !alias.scope !88, !noalias !171
%59= addrspacecast [1 x i64]*%4 to [1 x i64] addrspace(11)*, !dbg !187
call fastcc void @julia_throw_boundserror_28728({} addrspace(10)* nofree noundef nonnull align 8dereferenceable(24) %0, [1 x i64] addrspace(11)* nocapture nofree noundef nonnull readonly align 8dereferenceable(8) %59) #16, !dbg !187
unreachable, !dbg !187
L239: ; preds =%L15
%60= getelementptr inbounds [1 x [6 x { double, [1 x [9 x double]] }]], [1 x [6 x { double, [1 x [9 x double]] }]]*%3, i64 0, i64 0, i64 0, i32 0, !dbg !190
%61= load double, double*%60, align 8, !dbg !199, !tbaa !86, !alias.scope !88, !noalias !152, !enzyme_type !47, !enzymejl_source_type_Float64 !0, !enzymejl_byref_BITS_VALUE !0
%62= getelementptr inbounds [1 x [6 x { double, [1 x [9 x double]] }]], [1 x [6 x { double, [1 x [9 x double]] }]]*%3, i64 0, i64 0, i64 1, i32 0, !dbg !190
%63= load double, double*%62, align 8, !dbg !199, !tbaa !86, !alias.scope !88, !noalias !152, !enzyme_type !47, !enzymejl_source_type_Float64 !0, !enzymejl_byref_BITS_VALUE !0
%64= fadd double %61, %63, !dbg !199
%65= getelementptr inbounds [1 x [6 x { double, [1 x [9 x double]] }]], [1 x [6 x { double, [1 x [9 x double]] }]]*%3, i64 0, i64 0, i64 2, i32 0, !dbg !190
%66= load double, double*%65, align 8, !dbg !199, !tbaa !86, !alias.scope !88, !noalias !152, !enzyme_type !47, !enzymejl_source_type_Float64 !0, !enzymejl_byref_BITS_VALUE !0
%67= fadd double %64, %66, !dbg !199
%68= getelementptr inbounds [1 x [6 x { double, [1 x [9 x double]] }]], [1 x [6 x { double, [1 x [9 x double]] }]]*%3, i64 0, i64 0, i64 3, i32 0, !dbg !190
%69= load double, double*%68, align 8, !dbg !199, !tbaa !86, !alias.scope !88, !noalias !152, !enzyme_type !47, !enzymejl_source_type_Float64 !0, !enzymejl_byref_BITS_VALUE !0
%70= fadd double %67, %69, !dbg !199
%71= getelementptr inbounds [1 x [6 x { double, [1 x [9 x double]] }]], [1 x [6 x { double, [1 x [9 x double]] }]]*%3, i64 0, i64 0, i64 4, i32 0, !dbg !190
%72= load double, double*%71, align 8, !dbg !199, !tbaa !86, !alias.scope !88, !noalias !152, !enzyme_type !47, !enzymejl_source_type_Float64 !0, !enzymejl_byref_BITS_VALUE !0
%73= fadd double %70, %72, !dbg !199
%74= getelementptr inbounds [1 x [6 x { double, [1 x [9 x double]] }]], [1 x [6 x { double, [1 x [9 x double]] }]]*%3, i64 0, i64 0, i64 5, i32 0, !dbg !190
%75= load double, double*%74, align 8, !dbg !199, !tbaa !86, !alias.scope !88, !noalias !152, !enzyme_type !47, !enzymejl_source_type_Float64 !0, !enzymejl_byref_BITS_VALUE !0
%76= fadd double %73, %75, !dbg !199
%77= fdiv double %76, 0.000000e+00, !dbg !201
%78= bitcast {} addrspace(10)*%0 to { i8*, {} addrspace(10)* } addrspace(10)*, !dbg !202
%79= addrspacecast { i8*, {} addrspace(10)* } addrspace(10)*%78 to { i8*, {} addrspace(10)* } addrspace(11)*, !dbg !202
%80= bitcast {} addrspace(10)*%0 to {} addrspace(10)**addrspace(10)*, !dbg !202
%81= addrspacecast {} addrspace(10)**addrspace(10)*%80 to {} addrspace(10)**addrspace(11)*, !dbg !202
%82= load {} addrspace(10)**, {} addrspace(10)**addrspace(11)*%81, align 8, !dbg !202, !tbaa !91, !alias.scope !82, !noalias !83, !enzyme_type !65, !enzymejl_byref_BITS_VALUE !0, !enzymejl_source_type_Ptr\7BFloat64\7D !0, !enzyme_nocache !0
%83= getelementptr inbounds { i8*, {} addrspace(10)* }, { i8*, {} addrspace(10)* } addrspace(11)*%79, i64 0, i32 1, !dbg !202
%84= load {} addrspace(10)*, {} addrspace(10)*addrspace(11)*%83, align 8, !dbg !202, !tbaa !91, !alias.scope !82, !noalias !83, !dereferenceable_or_null !93, !align !94, !enzyme_type !95, !enzymejl_byref_MUT_REF !0, !enzymejl_source_type_Memory\7BFloat64\7D !0
%85= call "enzyme_type"="{[-1]:Pointer, [-1,-1]:Float@double}" {} addrspace(10)*addrspace(13)*@julia.gc_loaded({} addrspace(10)* noundef %84, {} addrspace(10)** noundef %82) #15, !dbg !203%86= bitcast {} addrspace(10)*addrspace(13)*%85 to double addrspace(13)*, !dbg !203
store double %77, double addrspace(13)*%86, align 8, !dbg !203, !tbaa !97, !alias.scope !100, !noalias !204
ret void, !dbg !205
}
Type analysis state:<analysis>%13= getelementptr inbounds [1 x i64], [1 x i64]*%5, i64 0, i64 0, !dbg !24: {}, intvals: {}
%32= getelementptr inbounds [1 x [9 x { double, [1 x [9 x double]] }]], [1 x [9 x { double, [1 x [9 x double]] }]]*%2, i64 0, i64 0, i64 2, i32 1, !dbg !64: {[-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}, intvals: {}
%64= fadd double %61, %63, !dbg !114: {[-1]:Float@double}, intvals: {}
%80= bitcast {} addrspace(10)*%0 to {} addrspace(10)**addrspace(10)*, !dbg !121: {[-1]:Pointer, [-1,0]:Pointer, [-1,0,-1]:Float@double, [-1,8]:Pointer, [-1,8,0]:Integer, [-1,8,1]:Integer, [-1,8,2]:Integer, [-1,8,3]:Integer, [-1,8,4]:Integer, [-1,8,5]:Integer, [-1,8,6]:Integer, [-1,8,7]:Integer, [-1,8,8]:Pointer, [-1,8,8,-1]:Float@double, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer}, intvals: {}
%2 = alloca [1 x [9 x { double, [1 x [9 x double]] }]], align 8: {[-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, [-1,96]:Float@double, [-1,104]:Float@double, [-1,112]:Float@double, [-1,120]:Float@double, [-1,128]:Float@double, [-1,136]:Float@double, [-1,144]:Float@double, [-1,152]:Float@double, [-1,160]:Float@double, [-1,168]:Float@double, [-1,176]:Float@double, [-1,184]:Float@double, [-1,192]:Float@double, [-1,200]:Float@double, [-1,208]:Float@double, [-1,216]:Float@double, [-1,224]:Float@double, [-1,232]:Float@double, [-1,240]:Float@double, [-1,248]:Float@double, [-1,256]:Float@double, [-1,264]:Float@double, [-1,272]:Float@double, [-1,280]:Float@double, [-1,288]:Float@double, [-1,296]:Float@double, [-1,304]:Float@double, [-1,312]:Float@double, [-1,320]:Float@double, [-1,328]:Float@double, [-1,336]:Float@double, [-1,344]:Float@double, [-1,352]:Float@double, [-1,360]:Float@double, [-1,368]:Float@double, [-1,376]:Float@double, [-1,384]:Float@double, [-1,392]:Float@double, [-1,400]:Float@double, [-1,408]:Float@double, [-1,416]:Float@double, [-1,424]:Float@double, [-1,432]:Float@double, [-1,440]:Float@double, [-1,448]:Float@double, [-1,456]:Float@double, [-1,464]:Float@double, [-1,472]:Float@double, [-1,480]:Float@double, [-1,488]:Float@double, [-1,496]:Float@double}, intvals: {}
%65= getelementptr inbounds [1 x [6 x { double, [1 x [9 x double]] }]], [1 x [6 x { double, [1 x [9 x double]] }]]*%3, i64 0, i64 0, i64 2, i32 0, !dbg !94: {[-1]:Pointer, [-1,-1]:Float@double}, intvals: {}
%27= bitcast [1 x [9 x double]]*%26 to i8*, !dbg !64: {[-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}, intvals: {}
i64 0: {[-1]:Anything}, intvals: {0,}
%9= addrspacecast i8 addrspace(10)*%8 to i8 addrspace(11)*, !dbg !21: {[-1]:Pointer, [-1,0]:Pointer, [-1,0,-1]:Float@double, [-1,8]:Pointer, [-1,8,0]:Integer, [-1,8,1]:Integer, [-1,8,2]:Integer, [-1,8,3]:Integer, [-1,8,4]:Integer, [-1,8,5]:Integer, [-1,8,6]:Integer, [-1,8,7]:Integer, [-1,8,8]:Pointer, [-1,8,8,-1]:Float@double, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer}, intvals: {}
[1 x [9 x double]] [[9 x double] [double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 1.000000e+00, double 0.000000e+00, double 0.000000e+00]]: {[-1]:Anything}, intvals: {}
i8* bitcast ([1 x [9 x double]]*@_j_const_7 to i8*): {[-1]:Pointer, [-1,-1]:Anything}, intvals: {}
%52 = addrspacecast [1 x [9 x { double, [1 x [9 x double]] }]]* %2 to [1 x [9 x { double, [1 x [9 x double]] }]] addrspace(11)*, !dbg !84: {[-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, [-1,96]:Float@double, [-1,104]:Float@double, [-1,112]:Float@double, [-1,120]:Float@double, [-1,128]:Float@double, [-1,136]:Float@double, [-1,144]:Float@double, [-1,152]:Float@double, [-1,160]:Float@double, [-1,168]:Float@double, [-1,176]:Float@double, [-1,184]:Float@double, [-1,192]:Float@double, [-1,200]:Float@double, [-1,208]:Float@double, [-1,216]:Float@double, [-1,224]:Float@double, [-1,232]:Float@double, [-1,240]:Float@double, [-1,248]:Float@double, [-1,256]:Float@double, [-1,264]:Float@double, [-1,272]:Float@double, [-1,280]:Float@double, [-1,288]:Float@double, [-1,296]:Float@double, [-1,304]:Float@double, [-1,312]:Float@double, [-1,320]:Float@double, [-1,328]:Float@double, [-1,336]:Float@double, [-1,344]:Float@double, [-1,352]:Float@double, [-1,360]:Float@double, [-1,368]:Float@double, [-1,376]:Float@double, [-1,384]:Float@double, [-1,392]:Float@double, [-1,400]:Float@double, [-1,408]:Float@double, [-1,416]:Float@double, [-1,424]:Float@double, [-1,432]:Float@double, [-1,440]:Float@double, [-1,448]:Float@double, [-1,456]:Float@double, [-1,464]:Float@double, [-1,472]:Float@double, [-1,480]:Float@double, [-1,488]:Float@double, [-1,496]:Float@double}, intvals: {}
%34= getelementptr inbounds [1 x [9 x { double, [1 x [9 x double]] }]], [1 x [9 x { double, [1 x [9 x double]] }]]*%2, i64 0, i64 0, i64 3, i32 0, !dbg !64: {[-1]:Pointer, [-1,0]:Float@double}, intvals: {}
%53= bitcast {} addrspace(10)*%0 to i8 addrspace(10)*, !dbg !86: {[-1]:Pointer, [-1,0]:Pointer, [-1,0,-1]:Float@double, [-1,8]:Pointer, [-1,8,0]:Integer, [-1,8,1]:Integer, [-1,8,2]:Integer, [-1,8,3]:Integer, [-1,8,4]:Integer, [-1,8,5]:Integer, [-1,8,6]:Integer, [-1,8,7]:Integer, [-1,8,8]:Pointer, [-1,8,8,-1]:Float@double, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer}, intvals: {}
double 1.000000e+00: {[-1]:Float@double}, intvals: {}
[9 x double] [double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 1.000000e+00, double 0.000000e+00]: {[-1]:Anything}, intvals: {}
{} addrspace(10)*%0: {[-1]:Pointer, [-1,0]:Pointer, [-1,0,-1]:Float@double, [-1,8]:Pointer, [-1,8,0]:Integer, [-1,8,1]:Integer, [-1,8,2]:Integer, [-1,8,3]:Integer, [-1,8,4]:Integer, [-1,8,5]:Integer, [-1,8,6]:Integer, [-1,8,7]:Integer, [-1,8,8]:Pointer, [-1,8,8,-1]:Float@double, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer}, intvals: {}
{} addrspace(10)*%1: {[-1]:Pointer, [-1,0]:Pointer, [-1,0,-1]:Float@double, [-1,8]:Pointer, [-1,8,0]:Integer, [-1,8,1]:Integer, [-1,8,2]:Integer, [-1,8,3]:Integer, [-1,8,4]:Integer, [-1,8,5]:Integer, [-1,8,6]:Integer, [-1,8,7]:Integer, [-1,8,8]:Pointer, [-1,8,8,-1]:Float@double, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer}, intvals: {}
%30= bitcast [1 x [9 x double]]*%29 to i8*, !dbg !64: {[-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}, intvals: {}
%ptls_field49 = getelementptr inbounds {}**, {}***%pgcstack, i64 2: {[-1]:Pointer, [-1,0]:Pointer}, intvals: {}
%49= getelementptr inbounds [1 x [9 x { double, [1 x [9 x double]] }]], [1 x [9 x { double, [1 x [9 x double]] }]]*%2, i64 0, i64 0, i64 8, i32 0, !dbg !64: {[-1]:Pointer, [-1,0]:Float@double}, intvals: {}
[1 x [9 x double]] [[9 x double] [double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 1.000000e+00, double 0.000000e+00]]: {[-1]:Anything}, intvals: {}
[9 x double] [double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 1.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00]: {[-1]:Anything}, intvals: {}
%70= fadd double %67, %69, !dbg !114: {[-1]:Float@double}, intvals: {}
%84= load {} addrspace(10)*, {} addrspace(10)*addrspace(11)*%83, align 8, !dbg !121, !tbaa !52, !alias.scope !35, !noalias !38, !dereferenceable_or_null !54, !align !55, !enzyme_type !56, !enzymejl_byref_MUT_REF !0, !enzymejl_source_type_Memory\7BFloat64\7D !0: {[-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]:Pointer, [-1,8,-1]:Float@double}, intvals: {}
%61= load double, double*%60, align 8, !dbg !114, !tbaa !45, !alias.scope !47, !noalias !118, !enzyme_type !63, !enzymejl_source_type_Float64 !0, !enzymejl_byref_BITS_VALUE !0: {[-1]:Float@double}, intvals: {}
%25= getelementptr inbounds [1 x [9 x { double, [1 x [9 x double]] }]], [1 x [9 x { double, [1 x [9 x double]] }]]*%2, i64 0, i64 0, i64 0, i32 0, !dbg !64: {[-1]:Pointer, [-1,0]:Float@double}, intvals: {}
%16= addrspacecast { i8*, {} addrspace(10)* } addrspace(10)*%15 to { i8*, {} addrspace(10)* } addrspace(11)*, !dbg !51: {[-1]:Pointer, [-1,0]:Pointer, [-1,0,-1]:Float@double, [-1,8]:Pointer, [-1,8,0]:Integer, [-1,8,1]:Integer, [-1,8,2]:Integer, [-1,8,3]:Integer, [-1,8,4]:Integer, [-1,8,5]:Integer, [-1,8,6]:Integer, [-1,8,7]:Integer, [-1,8,8]:Pointer, [-1,8,8,-1]:Float@double, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer}, intvals: {}
%28= getelementptr inbounds [1 x [9 x { double, [1 x [9 x double]] }]], [1 x [9 x { double, [1 x [9 x double]] }]]*%2, i64 0, i64 0, i64 1, i32 0, !dbg !64: {[-1]:Pointer, [-1,0]:Float@double}, intvals: {}
%74= getelementptr inbounds [1 x [6 x { double, [1 x [9 x double]] }]], [1 x [6 x { double, [1 x [9 x double]] }]]*%3, i64 0, i64 0, i64 5, i32 0, !dbg !94: {[-1]:Pointer, [-1,-1]:Float@double}, intvals: {}
@_j_const_3= private unnamed_addr constant [1 x [9 x double]] [[9 x double] [double 0.000000e+00, double 0.000000e+00, double 1.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00]], align 8: {[-1]:Pointer, [-1,-1]:Anything}, intvals: {}
i8* bitcast ([1 x [9 x double]]*@_j_const_3 to i8*): {[-1]:Pointer, [-1,-1]:Anything}, intvals: {}
%29= getelementptr inbounds [1 x [9 x { double, [1 x [9 x double]] }]], [1 x [9 x { double, [1 x [9 x double]] }]]*%2, i64 0, i64 0, i64 1, i32 1, !dbg !64: {[-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}, intvals: {}
%6= bitcast {}***%ptls_field49 to i64***: {[-1]:Pointer, [-1,0]:Pointer}, intvals: {}
%62= getelementptr inbounds [1 x [6 x { double, [1 x [9 x double]] }]], [1 x [6 x { double, [1 x [9 x double]] }]]*%3, i64 0, i64 0, i64 1, i32 0, !dbg !94: {[-1]:Pointer, [-1,-1]:Float@double}, intvals: {}
%14= addrspacecast [1 x i64]*%5 to [1 x i64] addrspace(11)*, !dbg !24: {[-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: {}
%63= load double, double*%62, align 8, !dbg !114, !tbaa !45, !alias.scope !47, !noalias !118, !enzyme_type !63, !enzymejl_source_type_Float64 !0, !enzymejl_byref_BITS_VALUE !0: {[-1]:Float@double}, intvals: {}
%58= getelementptr inbounds [1 x i64], [1 x i64]*%4, i64 0, i64 0, !dbg !87: {}, intvals: {}
[1 x [9 x double]] [[9 x double] [double 0.000000e+00, double 0.000000e+00, double 1.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00]]: {[-1]:Anything}, intvals: {}
@_j_const_4= private unnamed_addr constant [1 x [9 x double]] [[9 x double] [double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 1.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00]], align 8: {[-1]:Pointer, [-1,-1]:Anything}, intvals: {}
i8* bitcast ([1 x [9 x double]]*@_j_const_4 to i8*): {[-1]:Pointer, [-1,-1]:Anything}, intvals: {}
%68= getelementptr inbounds [1 x [6 x { double, [1 x [9 x double]] }]], [1 x [6 x { double, [1 x [9 x double]] }]]*%3, i64 0, i64 0, i64 3, i32 0, !dbg !94: {[-1]:Pointer, [-1,-1]:Float@double}, intvals: {}
[1 x [9 x double]] [[9 x double] [double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 1.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00]]: {[-1]:Anything}, intvals: {}
%23= bitcast {} addrspace(10)*addrspace(13)*%22 to double addrspace(13)*, !dbg !51: {[-1]:Pointer, [-1,-1]:Float@double}, intvals: {}
%31= getelementptr inbounds [1 x [9 x { double, [1 x [9 x double]] }]], [1 x [9 x { double, [1 x [9 x double]] }]]*%2, i64 0, i64 0, i64 2, i32 0, !dbg !64: {[-1]:Pointer, [-1,0]:Float@double}, intvals: {}
%11= bitcast i8 addrspace(11)*%10 to i64 addrspace(11)*, !dbg !21: {[-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: {}
%60= getelementptr inbounds [1 x [6 x { double, [1 x [9 x double]] }]], [1 x [6 x { double, [1 x [9 x double]] }]]*%3, i64 0, i64 0, i64 0, i32 0, !dbg !94: {[-1]:Pointer, [-1,-1]:Float@double}, intvals: {}
%71= getelementptr inbounds [1 x [6 x { double, [1 x [9 x double]] }]], [1 x [6 x { double, [1 x [9 x double]] }]]*%3, i64 0, i64 0, i64 4, i32 0, !dbg !94: {[-1]:Pointer, [-1,-1]:Float@double}, intvals: {}
[1 x [9 x double]] [[9 x double] [double 0.000000e+00, double 1.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00]]: {[-1]:Anything}, intvals: {}
%43= getelementptr inbounds [1 x [9 x { double, [1 x [9 x double]] }]], [1 x [9 x { double, [1 x [9 x double]] }]]*%2, i64 0, i64 0, i64 6, i32 0, !dbg !64: {[-1]:Pointer, [-1,0]:Float@double}, intvals: {}
%78= bitcast {} addrspace(10)*%0 to { i8*, {} addrspace(10)* } addrspace(10)*, !dbg !121: {[-1]:Pointer, [-1,0]:Pointer, [-1,0,-1]:Float@double, [-1,8]:Pointer, [-1,8,0]:Integer, [-1,8,1]:Integer, [-1,8,2]:Integer, [-1,8,3]:Integer, [-1,8,4]:Integer, [-1,8,5]:Integer, [-1,8,6]:Integer, [-1,8,7]:Integer, [-1,8,8]:Pointer, [-1,8,8,-1]:Float@double, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer}, intvals: {}
%pgcstack = call {}***@julia.get_pgcstack() #15: {[-1]:Pointer, [-1,16]:Pointer}, intvals: {}%57= load i64, i64 addrspace(11)*%56, align 8, !dbg !86, !tbaa !32, !alias.scope !35, !noalias !38, !enzyme_inactive !0, !enzyme_type !43, !enzymejl_byref_BITS_VALUE !0, !enzymejl_source_type_Int64 !0: {[-1]:Integer}, intvals: {}
@_j_const_8= private unnamed_addr constant [1 x [9 x double]] [[9 x double] [double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 1.000000e+00, double 0.000000e+00]], align 8: {[-1]:Pointer, [-1,-1]:Anything}, intvals: {}
%72= load double, double*%71, align 8, !dbg !114, !tbaa !45, !alias.scope !47, !noalias !118, !enzyme_type !63, !enzymejl_source_type_Float64 !0, !enzymejl_byref_BITS_VALUE !0: {[-1]:Float@double}, intvals: {}
i8* bitcast ([1 x [9 x double]]*@_j_const_1 to i8*): {[-1]:Pointer, [-1,-1]:Anything}, intvals: {}
%41= getelementptr inbounds [1 x [9 x { double, [1 x [9 x double]] }]], [1 x [9 x { double, [1 x [9 x double]] }]]*%2, i64 0, i64 0, i64 5, i32 1, !dbg !64: {[-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}, intvals: {}
%40= getelementptr inbounds [1 x [9 x { double, [1 x [9 x double]] }]], [1 x [9 x { double, [1 x [9 x double]] }]]*%2, i64 0, i64 0, i64 5, i32 0, !dbg !64: {[-1]:Pointer, [-1,0]:Float@double}, intvals: {}
@_j_const_6= private unnamed_addr constant [1 x [9 x double]] [[9 x double] [double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 1.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00]], align 8: {[-1]:Pointer, [-1,-1]:Anything}, intvals: {}
%35= getelementptr inbounds [1 x [9 x { double, [1 x [9 x double]] }]], [1 x [9 x { double, [1 x [9 x double]] }]]*%2, i64 0, i64 0, i64 3, i32 1, !dbg !64: {[-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}, intvals: {}
%77= fdiv double %76, 0.000000e+00, !dbg !119: {[-1]:Float@double}, intvals: {}
%12= load i64, i64 addrspace(11)*%11, align 8, !dbg !21, !tbaa !32, !alias.scope !35, !noalias !38, !enzyme_inactive !0, !enzyme_type !43, !enzymejl_byref_BITS_VALUE !0, !enzymejl_source_type_Int64 !0: {[-1]:Integer}, intvals: {}
[1 x [9 x double]] [[9 x double] [double 1.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00]]: {[-1]:Anything}, intvals: {}
@_j_const_1= private unnamed_addr constant [1 x [9 x double]] [[9 x double] [double 1.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00]], align 8: {[-1]:Pointer, [-1,-1]:Anything}, intvals: {}
%37= getelementptr inbounds [1 x [9 x { double, [1 x [9 x double]] }]], [1 x [9 x { double, [1 x [9 x double]] }]]*%2, i64 0, i64 0, i64 4, i32 0, !dbg !64: {[-1]:Pointer, [-1,0]:Float@double}, intvals: {}
%ptls_load5051 = load i64**, i64***%6, align 8, !tbaa !14: {[-1]:Pointer}, intvals: {}
%83= getelementptr inbounds { i8*, {} addrspace(10)* }, { i8*, {} addrspace(10)* } addrspace(11)*%79, i64 0, i32 1, !dbg !121: {[-1]:Pointer, [-1,0]:Pointer, [-1,0,0]:Integer, [-1,0,1]:Integer, [-1,0,2]:Integer, [-1,0,3]:Integer, [-1,0,4]:Integer, [-1,0,5]:Integer, [-1,0,6]:Integer, [-1,0,7]:Integer, [-1,0,8]:Pointer, [-1,0,8,-1]:Float@double}, intvals: {}
%19= load {} addrspace(10)**, {} addrspace(10)**addrspace(11)*%18, align 8, !dbg !51, !tbaa !52, !alias.scope !35, !noalias !38, !enzyme_type !11, !enzymejl_byref_BITS_VALUE !0, !enzymejl_source_type_Ptr\7BFloat64\7D !0, !enzyme_nocache !0: {[-1]:Pointer, [-1,-1]:Float@double}, intvals: {}
%24= load double, double addrspace(13)*%23, align 8, !dbg !51, !tbaa !58, !alias.scope !61, !noalias !62, !enzyme_type !63, !enzymejl_source_type_Float64 !0, !enzymejl_byref_BITS_VALUE !0: {[-1]:Float@double}, intvals: {}
%20= getelementptr inbounds { i8*, {} addrspace(10)* }, { i8*, {} addrspace(10)* } addrspace(11)*%16, i64 0, i32 1, !dbg !51: {[-1]:Pointer, [-1,0]:Pointer, [-1,0,0]:Integer, [-1,0,1]:Integer, [-1,0,2]:Integer, [-1,0,3]:Integer, [-1,0,4]:Integer, [-1,0,5]:Integer, [-1,0,6]:Integer, [-1,0,7]:Integer, [-1,0,8]:Pointer, [-1,0,8,-1]:Float@double}, intvals: {}
%55= getelementptr inbounds i8, i8 addrspace(11)*%54, i64 16, !dbg !86: {[-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: {}
%38= getelementptr inbounds [1 x [9 x { double, [1 x [9 x double]] }]], [1 x [9 x { double, [1 x [9 x double]] }]]*%2, i64 0, i64 0, i64 4, i32 1, !dbg !64: {[-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}, intvals: {}
%5= alloca [1 x i64], align 8: {[-1]:Pointer}, intvals: {}
i8* bitcast ([1 x [9 x double]]*@_j_const_9 to i8*): {[-1]:Pointer, [-1,-1]:Anything}, intvals: {}
%.not52 = icmp eq i64 %57, 0, !dbg !91: {[-1]:Integer}, intvals: {}
%75= load double, double*%74, align 8, !dbg !114, !tbaa !45, !alias.scope !47, !noalias !118, !enzyme_type !63, !enzymejl_source_type_Float64 !0, !enzymejl_byref_BITS_VALUE !0: {[-1]:Float@double}, intvals: {}
[9 x double] [double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 1.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00]: {[-1]:Anything}, intvals: {}
[9 x double] [double 0.000000e+00, double 1.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00]: {[-1]:Anything}, intvals: {}
call fastcc void @julia_d_dx_28735([1 x [6 x { double, [1 x [9 x double]] }]]* noalias nocapture nofree noundef nonnull writeonly sret([1 x [6 x { double, [1 x [9 x double]] }]]) align 8dereferenceable(480) %3, [1 x [9 x { double, [1 x [9 x double]] }]] addrspace(11)* nocapture nofree noundef nonnull readonly align 8dereferenceable(720) %52) #15, !dbg !84: {}, intvals: {}%22= call "enzyme_type"="{[-1]:Pointer, [-1,-1]:Float@double}" {} addrspace(10)*addrspace(13)*@julia.gc_loaded({} addrspace(10)* noundef %21, {} addrspace(10)** noundef %19) #15, !dbg !51: {[-1]:Pointer, [-1,-1]:Float@double}, intvals: {}%79= addrspacecast { i8*, {} addrspace(10)* } addrspace(10)*%78 to { i8*, {} addrspace(10)* } addrspace(11)*, !dbg !121: {[-1]:Pointer, [-1,0]:Pointer, [-1,0,-1]:Float@double, [-1,8]:Pointer, [-1,8,0]:Integer, [-1,8,1]:Integer, [-1,8,2]:Integer, [-1,8,3]:Integer, [-1,8,4]:Integer, [-1,8,5]:Integer, [-1,8,6]:Integer, [-1,8,7]:Integer, [-1,8,8]:Pointer, [-1,8,8,-1]:Float@double, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer}, intvals: {}
%69= load double, double*%68, align 8, !dbg !114, !tbaa !45, !alias.scope !47, !noalias !118, !enzyme_type !63, !enzymejl_source_type_Float64 !0, !enzymejl_byref_BITS_VALUE !0: {[-1]:Float@double}, intvals: {}
%.not = icmp eq i64 %12, 0, !dbg !24: {[-1]:Integer}, intvals: {}
%36= bitcast [1 x [9 x double]]*%35 to i8*, !dbg !64: {[-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}, intvals: {}
%66= load double, double*%65, align 8, !dbg !114, !tbaa !45, !alias.scope !47, !noalias !118, !enzyme_type !63, !enzymejl_source_type_Float64 !0, !enzymejl_byref_BITS_VALUE !0: {[-1]:Float@double}, intvals: {}
[9 x double] [double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 1.000000e+00, double 0.000000e+00, double 0.000000e+00]: {[-1]:Anything}, intvals: {}
[9 x double] [double 1.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00]: {[-1]:Anything}, intvals: {}
@_j_const_7= private unnamed_addr constant [1 x [9 x double]] [[9 x double] [double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 1.000000e+00, double 0.000000e+00, double 0.000000e+00]], align 8: {[-1]:Pointer, [-1,-1]:Anything}, intvals: {}
%10= getelementptr inbounds i8, i8 addrspace(11)*%9, i64 16, !dbg !21: {[-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: {}
@_j_const_5= private unnamed_addr constant [1 x [9 x double]] [[9 x double] [double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 1.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00]], align 8: {[-1]:Pointer, [-1,-1]:Anything}, intvals: {}
i8* bitcast ([1 x [9 x double]]*@_j_const_5 to i8*): {[-1]:Pointer, [-1,-1]:Anything}, intvals: {}
%18= addrspacecast {} addrspace(10)**addrspace(10)*%17 to {} addrspace(10)**addrspace(11)*, !dbg !51: {[-1]:Pointer, [-1,0]:Pointer, [-1,0,-1]:Float@double, [-1,8]:Pointer, [-1,8,0]:Integer, [-1,8,1]:Integer, [-1,8,2]:Integer, [-1,8,3]:Integer, [-1,8,4]:Integer, [-1,8,5]:Integer, [-1,8,6]:Integer, [-1,8,7]:Integer, [-1,8,8]:Pointer, [-1,8,8,-1]:Float@double, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer}, intvals: {}
%67= fadd double %64, %66, !dbg !114: {[-1]:Float@double}, intvals: {}
%86= bitcast {} addrspace(10)*addrspace(13)*%85 to double addrspace(13)*, !dbg !122: {[-1]:Pointer, [-1,-1]:Float@double}, intvals: {}
%59= addrspacecast [1 x i64]*%4 to [1 x i64] addrspace(11)*, !dbg !87: {[-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: {}
%7= getelementptr inbounds i64*, i64**%ptls_load5051, i64 2: {[-1]:Pointer}, intvals: {}
%3= alloca [1 x [6 x { double, [1 x [9 x double]] }]], align 8, !enzymejl_allocart !10, !enzyme_type !11, !enzymejl_source_type_SMatrix\7B2\2C\203\2C\20ForwardDiff.Dual\7BForwardDiff.Tag\7Btypeof\28F\29\2C\20Float64\7D\2C\20Float64\2C\209\7D\2C\206\7D !0, !enzymejl_byref_MUT_REF !0: {[-1]:Pointer, [-1,-1]:Float@double}, intvals: {}
%39= bitcast [1 x [9 x double]]*%38 to i8*, !dbg !64: {[-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}, intvals: {}
%51= bitcast [1 x [9 x double]]*%50 to i8*, !dbg !64: {[-1]:Pointer}, intvals: {}
[1 x [9 x double]] [[9 x double] [double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 1.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00]]: {[-1]:Anything}, intvals: {}
%4= alloca [1 x i64], align 8: {[-1]:Pointer}, intvals: {}
%17= bitcast {} addrspace(10)*%1 to {} addrspace(10)**addrspace(10)*, !dbg !51: {[-1]:Pointer, [-1,0]:Pointer, [-1,0,-1]:Float@double, [-1,8]:Pointer, [-1,8,0]:Integer, [-1,8,1]:Integer, [-1,8,2]:Integer, [-1,8,3]:Integer, [-1,8,4]:Integer, [-1,8,5]:Integer, [-1,8,6]:Integer, [-1,8,7]:Integer, [-1,8,8]:Pointer, [-1,8,8,-1]:Float@double, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer}, intvals: {}
%73= fadd double %70, %72, !dbg !114: {[-1]:Float@double}, intvals: {}
%82= load {} addrspace(10)**, {} addrspace(10)**addrspace(11)*%81, align 8, !dbg !121, !tbaa !52, !alias.scope !35, !noalias !38, !enzyme_type !11, !enzymejl_byref_BITS_VALUE !0, !enzymejl_source_type_Ptr\7BFloat64\7D !0, !enzyme_nocache !0: {[-1]:Pointer, [-1,-1]:Float@double}, intvals: {}
%47= getelementptr inbounds [1 x [9 x { double, [1 x [9 x double]] }]], [1 x [9 x { double, [1 x [9 x double]] }]]*%2, i64 0, i64 0, i64 7, i32 1, !dbg !64: {[-1]:Pointer}, intvals: {}
i8* bitcast ([1 x [9 x double]]*@_j_const_6 to i8*): {[-1]:Pointer, [-1,-1]:Anything}, intvals: {}
i8* bitcast ([1 x [9 x double]]*@_j_const_8 to i8*): {[-1]:Pointer, [-1,-1]:Anything}, intvals: {}
%46= getelementptr inbounds [1 x [9 x { double, [1 x [9 x double]] }]], [1 x [9 x { double, [1 x [9 x double]] }]]*%2, i64 0, i64 0, i64 7, i32 0, !dbg !64: {[-1]:Pointer, [-1,0]:Float@double}, intvals: {}
%56= bitcast i8 addrspace(11)*%55 to i64 addrspace(11)*, !dbg !86: {[-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: {}
%50= getelementptr inbounds [1 x [9 x { double, [1 x [9 x double]] }]], [1 x [9 x { double, [1 x [9 x double]] }]]*%2, i64 0, i64 0, i64 8, i32 1, !dbg !64: {[-1]:Pointer}, intvals: {}
[9 x double] [double 0.000000e+00, double 0.000000e+00, double 1.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00]: {[-1]:Anything}, intvals: {}
%54= addrspacecast i8 addrspace(10)*%53 to i8 addrspace(11)*, !dbg !86: {[-1]:Pointer, [-1,0]:Pointer, [-1,0,-1]:Float@double, [-1,8]:Pointer, [-1,8,0]:Integer, [-1,8,1]:Integer, [-1,8,2]:Integer, [-1,8,3]:Integer, [-1,8,4]:Integer, [-1,8,5]:Integer, [-1,8,6]:Integer, [-1,8,7]:Integer, [-1,8,8]:Pointer, [-1,8,8,-1]:Float@double, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer}, intvals: {}
%safepoint = load i64*, i64**%7, align 8, !tbaa !18: {}, intvals: {}
%48= bitcast [1 x [9 x double]]*%47 to i8*, !dbg !64: {[-1]:Pointer}, intvals: {}
[9 x double] [double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 1.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00]: {[-1]:Anything}, intvals: {}
[1 x [9 x double]] [[9 x double] [double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 1.000000e+00]]: {[-1]:Anything}, intvals: {}
%44= getelementptr inbounds [1 x [9 x { double, [1 x [9 x double]] }]], [1 x [9 x { double, [1 x [9 x double]] }]]*%2, i64 0, i64 0, i64 6, i32 1, !dbg !64: {[-1]:Pointer, [-1,0]:Float@double, [-1,8]:Float@double}, intvals: {}
[9 x double] [double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 1.000000e+00]: {[-1]:Anything}, intvals: {}
%42= bitcast [1 x [9 x double]]*%41 to i8*, !dbg !64: {[-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}, intvals: {}
%15= bitcast {} addrspace(10)*%1 to { i8*, {} addrspace(10)* } addrspace(10)*, !dbg !51: {[-1]:Pointer, [-1,0]:Pointer, [-1,0,-1]:Float@double, [-1,8]:Pointer, [-1,8,0]:Integer, [-1,8,1]:Integer, [-1,8,2]:Integer, [-1,8,3]:Integer, [-1,8,4]:Integer, [-1,8,5]:Integer, [-1,8,6]:Integer, [-1,8,7]:Integer, [-1,8,8]:Pointer, [-1,8,8,-1]:Float@double, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer}, intvals: {}
double 0.000000e+00: {[-1]:Anything}, intvals: {}
%33= bitcast [1 x [9 x double]]*%32 to i8*, !dbg !64: {[-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}, intvals: {}
@_j_const_9= private unnamed_addr constant [1 x [9 x double]] [[9 x double] [double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 1.000000e+00]], align 8: {[-1]:Pointer, [-1,-1]:Anything}, intvals: {}
%76= fadd double %73, %75, !dbg !114: {[-1]:Float@double}, intvals: {}
%81= addrspacecast {} addrspace(10)**addrspace(10)*%80 to {} addrspace(10)**addrspace(11)*, !dbg !121: {[-1]:Pointer, [-1,0]:Pointer, [-1,0,-1]:Float@double, [-1,8]:Pointer, [-1,8,0]:Integer, [-1,8,1]:Integer, [-1,8,2]:Integer, [-1,8,3]:Integer, [-1,8,4]:Integer, [-1,8,5]:Integer, [-1,8,6]:Integer, [-1,8,7]:Integer, [-1,8,8]:Pointer, [-1,8,8,-1]:Float@double, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer}, intvals: {}
%45= bitcast [1 x [9 x double]]*%44 to i8*, !dbg !64: {[-1]:Pointer, [-1,0]:Float@double, [-1,8]:Float@double}, intvals: {}
%26= getelementptr inbounds [1 x [9 x { double, [1 x [9 x double]] }]], [1 x [9 x { double, [1 x [9 x double]] }]]*%2, i64 0, i64 0, i64 0, i32 1, !dbg !64: {[-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}, intvals: {}
%21= load {} addrspace(10)*, {} addrspace(10)*addrspace(11)*%20, align 8, !dbg !51, !tbaa !52, !alias.scope !35, !noalias !38, !dereferenceable_or_null !54, !align !55, !enzyme_type !56, !enzymejl_byref_MUT_REF !0, !enzymejl_source_type_Memory\7BFloat64\7D !0: {[-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]:Pointer, [-1,8,-1]:Float@double}, intvals: {}
%85= call "enzyme_type"="{[-1]:Pointer, [-1,-1]:Float@double}" {} addrspace(10)*addrspace(13)*@julia.gc_loaded({} addrspace(10)* noundef %84, {} addrspace(10)** noundef %82) #15, !dbg !122: {[-1]:Pointer, [-1,-1]:Float@double}, intvals: {}%8= bitcast {} addrspace(10)*%1 to i8 addrspace(10)*, !dbg !21: {[-1]:Pointer, [-1,0]:Pointer, [-1,0,-1]:Float@double, [-1,8]:Pointer, [-1,8,0]:Integer, [-1,8,1]:Integer, [-1,8,2]:Integer, [-1,8,3]:Integer, [-1,8,4]:Integer, [-1,8,5]:Integer, [-1,8,6]:Integer, [-1,8,7]:Integer, [-1,8,8]:Pointer, [-1,8,8,-1]:Float@double, [-1,16]:Integer, [-1,17]:Integer, [-1,18]:Integer, [-1,19]:Integer, [-1,20]:Integer, [-1,21]:Integer, [-1,22]:Integer, [-1,23]:Integer}, intvals: {}
@_j_const_2= private unnamed_addr constant [1 x [9 x double]] [[9 x double] [double 0.000000e+00, double 1.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00]], align 8: {[-1]:Pointer, [-1,-1]:Anything}, intvals: {}
i8* bitcast ([1 x [9 x double]]*@_j_const_2 to i8*): {[-1]:Pointer, [-1,-1]:Anything}, intvals: {}
[1 x [9 x double]] [[9 x double] [double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 1.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00, double 0.000000e+00]]: {[-1]:Anything}, intvals: {}
</analysis>
Cannot deduce type of copy call void @llvm.memcpy.p0i8.p0i8.i64(i8* noundef nonnull align 8dereferenceable(72) %48, i8* noundef nonnull align 8dereferenceable(72) bitcast ([1 x [9 x double]]*@_j_const_8 to i8*), i64 noundef 72, i1 noundef false) #15, !dbg !64, !tbaa !81, !alias.scope !82, !noalias !83
Caused by:
Stacktrace:
[1] Dual
@ ~/.julia/packages/ForwardDiff/UBbGT/src/dual.jl:19
[2] Dual
@ ~/.julia/packages/ForwardDiff/UBbGT/src/dual.jl:60
[3] Dual
@ ~/.julia/packages/ForwardDiff/UBbGT/src/dual.jl:72
[4] macro expansion
@ ~/.julia/packages/ForwardDiff/UBbGT/ext/ForwardDiffStaticArraysExt.jl:20
[5] dualize
@ ~/.julia/packages/ForwardDiff/UBbGT/ext/ForwardDiffStaticArraysExt.jl:13
[6] static_dual_eval
@ ~/.julia/packages/ForwardDiff/UBbGT/ext/ForwardDiffStaticArraysExt.jl:24
[7] vector_mode_gradient!
@ ~/.julia/packages/ForwardDiff/UBbGT/ext/ForwardDiffStaticArraysExt.jl:62
[8] gradient!
@ ~/.julia/packages/ForwardDiff/UBbGT/ext/ForwardDiffStaticArraysExt.jl:42
[9] foo
@ ~/scratch-1/Glaide.jl/src/mwe.jl:9
within MethodInstance forfoo(::Vector{Float64}, ::Vector{Float64})
Stacktrace:
[1] Dual
@ ~/.julia/packages/ForwardDiff/UBbGT/src/dual.jl:19 [inlined]
[2] Dual
@ ~/.julia/packages/ForwardDiff/UBbGT/src/dual.jl:60 [inlined]
[3] Dual
@ ~/.julia/packages/ForwardDiff/UBbGT/src/dual.jl:72 [inlined]
[4] macro expansion
@ ~/.julia/packages/ForwardDiff/UBbGT/ext/ForwardDiffStaticArraysExt.jl:20 [inlined]
[5] dualize
@ ~/.julia/packages/ForwardDiff/UBbGT/ext/ForwardDiffStaticArraysExt.jl:13 [inlined]
[6] static_dual_eval
@ ~/.julia/packages/ForwardDiff/UBbGT/ext/ForwardDiffStaticArraysExt.jl:24 [inlined]
[7] vector_mode_gradient!
@ ~/.julia/packages/ForwardDiff/UBbGT/ext/ForwardDiffStaticArraysExt.jl:62 [inlined]
[8] gradient!
@ ~/.julia/packages/ForwardDiff/UBbGT/ext/ForwardDiffStaticArraysExt.jl:42 [inlined]
[9] foo
@ ~/scratch-1/Glaide.jl/src/mwe.jl:9 [inlined]
[10] diffejulia_foo_28711wrap
@ ~/scratch-1/Glaide.jl/src/mwe.jl:0
[11] macro expansion
@ ~/.julia/packages/Enzyme/NHs63/src/compiler.jl:5204 [inlined]
[12] enzyme_call
@ ~/.julia/packages/Enzyme/NHs63/src/compiler.jl:4750 [inlined]
[13] CombinedAdjointThunk
@ ~/.julia/packages/Enzyme/NHs63/src/compiler.jl:4622 [inlined]
[14] autodiff(::ReverseMode{…}, ::Const{…}, ::Type{…}, ::Duplicated{…}, ::Duplicated{…})
@ Enzyme ~/.julia/packages/Enzyme/NHs63/src/Enzyme.jl:503
[15] top-level scope
@ ~/scratch-1/Glaide.jl/src/mwe.jl:21
Some type information was truncated. Use `show(err)` to see complete types.
The text was updated successfully, but these errors were encountered:
Description
I'm on Julia 1.11.2, the error persists both on Enzyme v0.13.21 and on
main
(1d3b801).I use ForwardDiff to compute small 3x3 gradients stored in
SMatrix
, and then differentiate the kernel with Enzyme. The error seems to be similar to #2011.MWE:
Running this code yields:
Error log
The text was updated successfully, but these errors were encountered: