Skip to content

Instantly share code, notes, and snippets.

@kiranshila
Created March 2, 2024 23:43
Show Gist options
  • Save kiranshila/4cc8ccf08b3328421df25ca65564e218 to your computer and use it in GitHub Desktop.
Save kiranshila/4cc8ccf08b3328421df25ca65564e218 to your computer and use it in GitHub Desktop.
enyme error
ERROR: Enzyme execution failed.
Enzyme compilation failed.
Current scope:
; Function Attrs: mustprogress willreturn
define internal fastcc void @preprocess_julia_sqrt_13911([2 x double]* noalias nocapture nofree noundef nonnull writeonly sret([2 x double]) align 8 dereferenceable(16) %0, [2 x double] addrspace(11)* nocapture noundef nonnull readonly align 8 dereferenceable(16) "enzymejl_parmtype"="132501377410576" "enzymejl_parmtype_ref"="1" %1) unnamed_addr #79 !dbg !9095 {
top:
%2 = call noalias nonnull dereferenceable(16) dereferenceable_or_null(16) i8* @malloc(i64 16), !enzyme_fromstack !5228
%3 = bitcast i8* %2 to { double, i64 }*, !enzyme_caststack !68
%4 = call {}*** @julia.get_pgcstack() #81
%ptls_field93 = getelementptr inbounds {}**, {}*** %4, i64 2
%5 = bitcast {}*** %ptls_field93 to i64***
%ptls_load9495 = load i64**, i64*** %5, align 8, !tbaa !69
%6 = getelementptr inbounds i64*, i64** %ptls_load9495, i64 2
%safepoint = load i64*, i64** %6, align 8, !tbaa !73, !invariant.load !68
fence syncscope("singlethread") seq_cst
call void @julia.safepoint(i64* %safepoint) #81, !dbg !9096
fence syncscope("singlethread") seq_cst
%7 = getelementptr inbounds [2 x double], [2 x double] addrspace(11)* %1, i64 0, i64 0, !dbg !9097
%memcpy_refined_src = getelementptr inbounds [2 x double], [2 x double] addrspace(11)* %1, i64 0, i64 1, !dbg !9101
%unbox = load double, double addrspace(11)* %7, align 8, !dbg !9103, !tbaa !73, !invariant.load !68, !alias.scope !187, !noalias !188
%unbox2 = load double, double addrspace(11)* %memcpy_refined_src, align 8, !dbg !9103, !tbaa !73, !invariant.load !68, !alias.scope !187, !noalias !188
%8 = fcmp oeq double %unbox, %unbox2, !dbg !9103
%9 = fcmp oeq double %unbox2, 0.000000e+00, !dbg !9104
%value_phi = and i1 %8, %9, !dbg !9104
br i1 %value_phi, label %L12, label %L14, !dbg !9104
common.ret: ; preds = %L237, %L12
ret void, !dbg !9105
L12: ; preds = %top
%newstruct.sroa.0.0..sroa_idx = getelementptr inbounds [2 x double], [2 x double]* %0, i64 0, i64 0, !dbg !9106
store double 0.000000e+00, double* %newstruct.sroa.0.0..sroa_idx, align 8, !dbg !9106, !noalias !9107
%newstruct.sroa.2.0..sroa_idx89 = getelementptr inbounds [2 x double], [2 x double]* %0, i64 0, i64 1, !dbg !9106
store double %unbox2, double* %newstruct.sroa.2.0..sroa_idx89, align 8, !dbg !9106, !noalias !9107
br label %common.ret
L14: ; preds = %top
call fastcc void @julia_ssqs_13915({ double, i64 }* noalias nocapture nofree noundef nonnull writeonly sret({ double, i64 }) align 8 dereferenceable(16) %3, double %unbox, double %unbox2) #81, !dbg !9110
%10 = getelementptr inbounds { double, i64 }, { double, i64 }* %3, i64 0, i32 0, !dbg !9111
%11 = getelementptr inbounds { double, i64 }, { double, i64 }* %3, i64 0, i32 1, !dbg !9112
%12 = fsub double %unbox, %unbox, !dbg !9113
%13 = fcmp uno double %12, 0.000000e+00, !dbg !9116
br i1 %13, label %L14.L114_crit_edge, label %L21, !dbg !9115
L14.L114_crit_edge: ; preds = %L14
%unbox70 = load double, double* %10, align 8
%unbox14.pre = load i64, i64* %11, align 8, !dbg !9118, !tbaa !206, !alias.scope !208, !noalias !289
br label %L114, !dbg !9115
L21: ; preds = %L14
%14 = call double @llvm.fabs.f64(double %unbox) #81, !dbg !9121
%unbox10 = load i64, i64* %11, align 8, !dbg !9122, !tbaa !206, !alias.scope !208, !noalias !289
%15 = sub i64 0, %unbox10, !dbg !9122
%bitcast_coercion = bitcast double %14 to i64, !dbg !9123
%16 = and i64 %bitcast_coercion, 9223372036854775807, !dbg !9126
%17 = icmp ult i64 %16, 9218868437227405312, !dbg !9128
br i1 %17, label %L28, label %L111, !dbg !9130
L28: ; preds = %L21
%18 = lshr i64 %16, 52, !dbg !9131
%19 = icmp ugt i64 %16, 4503599627370495, !dbg !9134
br i1 %19, label %L69, label %L34, !dbg !9135
L34: ; preds = %L28
%.not98 = icmp eq i64 %16, 0, !dbg !9136
br i1 %.not98, label %L111, label %L38, !dbg !9138
L38: ; preds = %L34
%20 = call i64 @llvm.ctlz.i64(i64 %16, i1 noundef true) #81, !dbg !9139, !range !1568
%21 = add nsw i64 %20, -11, !dbg !9141
%22 = shl i64 %16, %21, !dbg !9142
%23 = icmp ugt i64 %21, 63, !dbg !9142
%24 = select i1 %23, i64 0, i64 %22, !dbg !9142
%25 = and i64 %bitcast_coercion, -9223372036854775808, !dbg !9144
%26 = or i64 %24, %25, !dbg !9146
%27 = sub nsw i64 12, %20, !dbg !9147
%28 = icmp sgt i64 %15, -50001, !dbg !9149
br i1 %28, label %L69, label %L48, !dbg !9150
L48: ; preds = %L38
%bitcast_coercion53 = bitcast i64 %25 to double, !dbg !9151
br label %L111, !dbg !9150
L69: ; preds = %L38, %L28
%value_phi54 = phi i64 [ %18, %L28 ], [ %27, %L38 ]
%value_phi55 = phi i64 [ %bitcast_coercion, %L28 ], [ %26, %L38 ]
%29 = sub i64 %value_phi54, %unbox10, !dbg !9152
%30 = icmp slt i64 %29, 2047, !dbg !9154
br i1 %30, label %L77, label %L72, !dbg !9156
L72: ; preds = %L69
%31 = and i64 %bitcast_coercion, -9223372036854775808, !dbg !9157
%32 = or i64 %31, 9218868437227405312, !dbg !9157
%bitcast_coercion61 = bitcast i64 %32 to double, !dbg !9157
br label %L111, !dbg !9158
L77: ; preds = %L69
%33 = icmp slt i64 %29, 1, !dbg !9159
br i1 %33, label %L87, label %L79, !dbg !9161
L79: ; preds = %L77
%34 = and i64 %value_phi55, -9218868437227405313, !dbg !9162
%35 = shl nuw nsw i64 %29, 52, !dbg !9164
%36 = or i64 %34, %35, !dbg !9166
%bitcast_coercion62 = bitcast i64 %36 to double, !dbg !9167
br label %L111, !dbg !9168
L87: ; preds = %L77
%37 = icmp sgt i64 %29, -52, !dbg !9169
br i1 %37, label %L101, label %L89, !dbg !9170
L89: ; preds = %L87
%38 = icmp slt i64 %15, 50001, !dbg !9171
br i1 %38, label %L96, label %L91, !dbg !9173
L91: ; preds = %L89
%39 = and i64 %bitcast_coercion, -9223372036854775808, !dbg !9174
%40 = or i64 %39, 9218868437227405312, !dbg !9174
%bitcast_coercion64 = bitcast i64 %40 to double, !dbg !9174
br label %L111, !dbg !9173
L96: ; preds = %L89
%41 = and i64 %bitcast_coercion, -9223372036854775808, !dbg !9175
%bitcast_coercion66 = bitcast i64 %41 to double, !dbg !9175
br label %L111, !dbg !9176
L101: ; preds = %L87
%42 = and i64 %value_phi55, -9218868437227405313, !dbg !9177
%43 = shl nsw i64 %29, 52, !dbg !9179
%44 = add i64 %43, 234187180623265792, !dbg !9179
%45 = or i64 %44, %42, !dbg !9181
%bitcast_coercion67 = bitcast i64 %45 to double, !dbg !9182
%46 = fmul double %bitcast_coercion67, 0x3CB0000000000000, !dbg !9184
br label %L111, !dbg !9183
L111: ; preds = %L101, %L96, %L91, %L79, %L72, %L48, %L34, %L21
%value_phi11 = phi double [ %bitcast_coercion53, %L48 ], [ %bitcast_coercion61, %L72 ], [ %bitcast_coercion62, %L79 ], [ %bitcast_coercion64, %L91 ], [ %bitcast_coercion66, %L96 ], [ %46, %L101 ], [ %14, %L21 ], [ %14, %L34 ]
%unbox12 = load double, double* %10, align 8, !dbg !9115, !tbaa !206, !alias.scope !208, !noalias !289
%47 = call fastcc double @julia_sqrt_13785(double %unbox12) #82, !dbg !9115
%48 = fadd double %value_phi11, %47, !dbg !9185
br label %L114, !dbg !9185
L114: ; preds = %L111, %L14.L114_crit_edge
%unbox48 = phi i64 [ %unbox10, %L111 ], [ %unbox14.pre, %L14.L114_crit_edge ], !dbg !9118
%value_phi13 = phi double [ %48, %L111 ], [ %unbox70, %L14.L114_crit_edge ]
%49 = and i64 %unbox48, 1, !dbg !9186
%50 = icmp eq i64 %49, 0, !dbg !9186
br i1 %50, label %pass51, label %pass17, !dbg !9120
L125: ; preds = %pass51, %pass17
%value_phi18 = phi i64 [ %92, %pass17 ], [ %94, %pass51 ]
%value_phi19 = phi double [ %value_phi13, %pass17 ], [ %95, %pass51 ]
%51 = call fastcc double @julia_sqrt_13785(double %value_phi19) #82, !dbg !9188
%bitcast_coercion20 = bitcast double %51 to i64, !dbg !9189
%52 = and i64 %bitcast_coercion20, 9223372036854775807, !dbg !9192
%53 = icmp ult i64 %52, 9218868437227405312, !dbg !9194
br i1 %53, label %L133, label %L216, !dbg !9196
L133: ; preds = %L125
%54 = lshr i64 %52, 52, !dbg !9197
%55 = icmp ugt i64 %52, 4503599627370495, !dbg !9200
br i1 %55, label %L174, label %L139, !dbg !9201
L139: ; preds = %L133
%.not97 = icmp eq i64 %52, 0, !dbg !9202
br i1 %.not97, label %L216, label %L143, !dbg !9204
L143: ; preds = %L139
%56 = call i64 @llvm.ctlz.i64(i64 %52, i1 noundef true) #81, !dbg !9205, !range !1568
%57 = add nsw i64 %56, -11, !dbg !9207
%58 = shl i64 %52, %57, !dbg !9208
%59 = icmp ugt i64 %57, 63, !dbg !9208
%60 = select i1 %59, i64 0, i64 %58, !dbg !9208
%61 = and i64 %bitcast_coercion20, -9223372036854775808, !dbg !9210
%62 = or i64 %60, %61, !dbg !9212
%63 = sub nsw i64 12, %56, !dbg !9213
%64 = icmp sgt i64 %value_phi18, -50001, !dbg !9215
br i1 %64, label %L174, label %L153, !dbg !9216
L153: ; preds = %L143
%bitcast_coercion33 = bitcast i64 %61 to double, !dbg !9217
br label %L216, !dbg !9216
L174: ; preds = %L143, %L133
%value_phi34 = phi i64 [ %54, %L133 ], [ %63, %L143 ]
%value_phi35 = phi i64 [ %bitcast_coercion20, %L133 ], [ %62, %L143 ]
%65 = add nsw i64 %value_phi34, %value_phi18, !dbg !9218
%66 = icmp slt i64 %65, 2047, !dbg !9220
br i1 %66, label %L182, label %L177, !dbg !9222
L177: ; preds = %L174
%67 = and i64 %bitcast_coercion20, -9223372036854775808, !dbg !9223
%68 = or i64 %67, 9218868437227405312, !dbg !9223
%bitcast_coercion41 = bitcast i64 %68 to double, !dbg !9223
br label %L216, !dbg !9224
L182: ; preds = %L174
%69 = icmp slt i64 %65, 1, !dbg !9225
br i1 %69, label %L192, label %L184, !dbg !9227
L184: ; preds = %L182
%70 = and i64 %value_phi35, -9218868437227405313, !dbg !9228
%71 = shl nuw nsw i64 %65, 52, !dbg !9230
%72 = or i64 %70, %71, !dbg !9232
%bitcast_coercion42 = bitcast i64 %72 to double, !dbg !9233
br label %L216, !dbg !9234
L192: ; preds = %L182
%73 = icmp sgt i64 %65, -52, !dbg !9235
br i1 %73, label %L206, label %L194, !dbg !9236
L194: ; preds = %L192
%74 = icmp slt i64 %value_phi18, 50001, !dbg !9237
br i1 %74, label %L201, label %L196, !dbg !9239
L196: ; preds = %L194
%75 = and i64 %bitcast_coercion20, -9223372036854775808, !dbg !9240
%76 = or i64 %75, 9218868437227405312, !dbg !9240
%bitcast_coercion44 = bitcast i64 %76 to double, !dbg !9240
br label %L216, !dbg !9239
L201: ; preds = %L194
%77 = and i64 %bitcast_coercion20, -9223372036854775808, !dbg !9241
%bitcast_coercion46 = bitcast i64 %77 to double, !dbg !9241
br label %L216, !dbg !9242
L206: ; preds = %L192
%78 = and i64 %value_phi35, -9218868437227405313, !dbg !9243
%79 = shl nsw i64 %65, 52, !dbg !9245
%80 = add i64 %79, 234187180623265792, !dbg !9245
%81 = or i64 %80, %78, !dbg !9247
%bitcast_coercion47 = bitcast i64 %81 to double, !dbg !9248
%82 = fmul double %bitcast_coercion47, 0x3CB0000000000000, !dbg !9250
br label %L216, !dbg !9249
L216: ; preds = %L206, %L201, %L196, %L184, %L177, %L153, %L139, %L125
%value_phi21 = phi double [ %bitcast_coercion33, %L153 ], [ %bitcast_coercion41, %L177 ], [ %bitcast_coercion42, %L184 ], [ %bitcast_coercion44, %L196 ], [ %bitcast_coercion46, %L201 ], [ %82, %L206 ], [ %51, %L125 ], [ %51, %L139 ]
%83 = fcmp oeq double %value_phi21, 0.000000e+00, !dbg !9251
br i1 %83, label %L216.L237_crit_edge, label %L222, !dbg !9254
L216.L237_crit_edge: ; preds = %L216
%unbox84 = load double, double addrspace(11)* %memcpy_refined_src, align 8
br label %L237, !dbg !9254
L222: ; preds = %L216
%84 = fsub double %unbox2, %unbox2, !dbg !9255
%85 = fcmp uno double %84, 0.000000e+00, !dbg !9258
br i1 %85, label %L222.L228_crit_edge, label %L226, !dbg !9257
L222.L228_crit_edge: ; preds = %L222
%unbox77 = load double, double addrspace(11)* %memcpy_refined_src, align 8
br label %L228, !dbg !9257
L226: ; preds = %L222
%86 = fdiv double %unbox2, %value_phi21, !dbg !9260
%87 = fmul double %86, 5.000000e-01, !dbg !9261
br label %L228, !dbg !9261
L228: ; preds = %L226, %L222.L228_crit_edge
%unbox28 = phi double [ %unbox2, %L226 ], [ %unbox77, %L222.L228_crit_edge ]
%value_phi25 = phi double [ %87, %L226 ], [ %unbox77, %L222.L228_crit_edge ]
%88 = fcmp uge double %unbox, 0.000000e+00, !dbg !9263
br i1 %88, label %L237, label %L235, !dbg !9265
L235: ; preds = %L228
%89 = call double @llvm.fabs.f64(double %value_phi25) #81, !dbg !9266
%90 = call double @llvm.copysign.f64(double %value_phi21, double %unbox28) #81, !dbg !9268
br label %L237, !dbg !9268
L237: ; preds = %L235, %L228, %L216.L237_crit_edge
%value_phi29 = phi double [ %90, %L235 ], [ %unbox84, %L216.L237_crit_edge ], [ %value_phi25, %L228 ]
%value_phi30 = phi double [ %89, %L235 ], [ %value_phi21, %L216.L237_crit_edge ], [ %value_phi21, %L228 ]
%newstruct31.sroa.0.0..sroa_idx = getelementptr inbounds [2 x double], [2 x double]* %0, i64 0, i64 0, !dbg !9270
store double %value_phi30, double* %newstruct31.sroa.0.0..sroa_idx, align 8, !dbg !9270, !noalias !9107
%newstruct31.sroa.2.0..sroa_idx88 = getelementptr inbounds [2 x double], [2 x double]* %0, i64 0, i64 1, !dbg !9270
store double %value_phi29, double* %newstruct31.sroa.2.0..sroa_idx88, align 8, !dbg !9270, !noalias !9107
br label %common.ret
pass17: ; preds = %L114
%91 = add i64 %unbox48, -1, !dbg !9272
%92 = sdiv i64 %91, 2, !dbg !9274
br label %L125, !dbg !9274
pass51: ; preds = %L114
%93 = sdiv i64 %unbox48, 2, !dbg !9275
%94 = add nsw i64 %93, -1, !dbg !9277
%95 = fadd double %value_phi13, %value_phi13, !dbg !9278
br label %L125, !dbg !9278
}
; Function Attrs: mustprogress willreturn
define internal fastcc void @preprocess_julia_sqrt_13911([2 x double]* noalias nocapture nofree noundef nonnull writeonly sret([2 x double]) align 8 dereferenceable(16) %0, [2 x double] addrspace(11)* nocapture noundef nonnull readonly align 8 dereferenceable(16) "enzymejl_parmtype"="132501377410576" "enzymejl_parmtype_ref"="1" %1) unnamed_addr #79 !dbg !9095 {
top:
%2 = call noalias nonnull dereferenceable(16) dereferenceable_or_null(16) i8* @malloc(i64 16), !enzyme_fromstack !5228
%3 = bitcast i8* %2 to { double, i64 }*, !enzyme_caststack !68
%4 = call {}*** @julia.get_pgcstack() #81
%ptls_field93 = getelementptr inbounds {}**, {}*** %4, i64 2
%5 = bitcast {}*** %ptls_field93 to i64***
%ptls_load9495 = load i64**, i64*** %5, align 8, !tbaa !69
%6 = getelementptr inbounds i64*, i64** %ptls_load9495, i64 2
%safepoint = load i64*, i64** %6, align 8, !tbaa !73, !invariant.load !68
fence syncscope("singlethread") seq_cst
call void @julia.safepoint(i64* %safepoint) #81, !dbg !9096
fence syncscope("singlethread") seq_cst
%7 = getelementptr inbounds [2 x double], [2 x double] addrspace(11)* %1, i64 0, i64 0, !dbg !9097
%memcpy_refined_src = getelementptr inbounds [2 x double], [2 x double] addrspace(11)* %1, i64 0, i64 1, !dbg !9101
%unbox = load double, double addrspace(11)* %7, align 8, !dbg !9103, !tbaa !73, !invariant.load !68, !alias.scope !187, !noalias !188
%unbox2 = load double, double addrspace(11)* %memcpy_refined_src, align 8, !dbg !9103, !tbaa !73, !invariant.load !68, !alias.scope !187, !noalias !188
%8 = fcmp oeq double %unbox, %unbox2, !dbg !9103
%9 = fcmp oeq double %unbox2, 0.000000e+00, !dbg !9104
%value_phi = and i1 %8, %9, !dbg !9104
br i1 %value_phi, label %L12, label %L14, !dbg !9104
common.ret: ; preds = %L237, %L12
ret void, !dbg !9105
L12: ; preds = %top
%newstruct.sroa.0.0..sroa_idx = getelementptr inbounds [2 x double], [2 x double]* %0, i64 0, i64 0, !dbg !9106
store double 0.000000e+00, double* %newstruct.sroa.0.0..sroa_idx, align 8, !dbg !9106, !noalias !9107
%newstruct.sroa.2.0..sroa_idx89 = getelementptr inbounds [2 x double], [2 x double]* %0, i64 0, i64 1, !dbg !9106
store double %unbox2, double* %newstruct.sroa.2.0..sroa_idx89, align 8, !dbg !9106, !noalias !9107
br label %common.ret
L14: ; preds = %top
call fastcc void @julia_ssqs_13915({ double, i64 }* noalias nocapture nofree noundef nonnull writeonly sret({ double, i64 }) align 8 dereferenceable(16) %3, double %unbox, double %unbox2) #81, !dbg !9110
%10 = getelementptr inbounds { double, i64 }, { double, i64 }* %3, i64 0, i32 0, !dbg !9111
%11 = getelementptr inbounds { double, i64 }, { double, i64 }* %3, i64 0, i32 1, !dbg !9112
%12 = fsub double %unbox, %unbox, !dbg !9113
%13 = fcmp uno double %12, 0.000000e+00, !dbg !9116
br i1 %13, label %L14.L114_crit_edge, label %L21, !dbg !9115
L14.L114_crit_edge: ; preds = %L14
%unbox70 = load double, double* %10, align 8
%unbox14.pre = load i64, i64* %11, align 8, !dbg !9118, !tbaa !206, !alias.scope !208, !noalias !289
br label %L114, !dbg !9115
L21: ; preds = %L14
%14 = call double @llvm.fabs.f64(double %unbox) #81, !dbg !9121
%unbox10 = load i64, i64* %11, align 8, !dbg !9122, !tbaa !206, !alias.scope !208, !noalias !289
%15 = sub i64 0, %unbox10, !dbg !9122
%bitcast_coercion = bitcast double %14 to i64, !dbg !9123
%16 = and i64 %bitcast_coercion, 9223372036854775807, !dbg !9126
%17 = icmp ult i64 %16, 9218868437227405312, !dbg !9128
br i1 %17, label %L28, label %L111, !dbg !9130
L28: ; preds = %L21
%18 = lshr i64 %16, 52, !dbg !9131
%19 = icmp ugt i64 %16, 4503599627370495, !dbg !9134
br i1 %19, label %L69, label %L34, !dbg !9135
L34: ; preds = %L28
%.not98 = icmp eq i64 %16, 0, !dbg !9136
br i1 %.not98, label %L111, label %L38, !dbg !9138
L38: ; preds = %L34
%20 = call i64 @llvm.ctlz.i64(i64 %16, i1 noundef true) #81, !dbg !9139, !range !1568
%21 = add nsw i64 %20, -11, !dbg !9141
%22 = shl i64 %16, %21, !dbg !9142
%23 = icmp ugt i64 %21, 63, !dbg !9142
%24 = select i1 %23, i64 0, i64 %22, !dbg !9142
%25 = and i64 %bitcast_coercion, -9223372036854775808, !dbg !9144
%26 = or i64 %24, %25, !dbg !9146
%27 = sub nsw i64 12, %20, !dbg !9147
%28 = icmp sgt i64 %15, -50001, !dbg !9149
br i1 %28, label %L69, label %L48, !dbg !9150
L48: ; preds = %L38
%bitcast_coercion53 = bitcast i64 %25 to double, !dbg !9151
br label %L111, !dbg !9150
L69: ; preds = %L38, %L28
%value_phi54 = phi i64 [ %18, %L28 ], [ %27, %L38 ]
%value_phi55 = phi i64 [ %bitcast_coercion, %L28 ], [ %26, %L38 ]
%29 = sub i64 %value_phi54, %unbox10, !dbg !9152
%30 = icmp slt i64 %29, 2047, !dbg !9154
br i1 %30, label %L77, label %L72, !dbg !9156
L72: ; preds = %L69
%31 = and i64 %bitcast_coercion, -9223372036854775808, !dbg !9157
%32 = or i64 %31, 9218868437227405312, !dbg !9157
%bitcast_coercion61 = bitcast i64 %32 to double, !dbg !9157
br label %L111, !dbg !9158
L77: ; preds = %L69
%33 = icmp slt i64 %29, 1, !dbg !9159
br i1 %33, label %L87, label %L79, !dbg !9161
L79: ; preds = %L77
%34 = and i64 %value_phi55, -9218868437227405313, !dbg !9162
%35 = shl nuw nsw i64 %29, 52, !dbg !9164
%36 = or i64 %34, %35, !dbg !9166
%bitcast_coercion62 = bitcast i64 %36 to double, !dbg !9167
br label %L111, !dbg !9168
L87: ; preds = %L77
%37 = icmp sgt i64 %29, -52, !dbg !9169
br i1 %37, label %L101, label %L89, !dbg !9170
L89: ; preds = %L87
%38 = icmp slt i64 %15, 50001, !dbg !9171
br i1 %38, label %L96, label %L91, !dbg !9173
L91: ; preds = %L89
%39 = and i64 %bitcast_coercion, -9223372036854775808, !dbg !9174
%40 = or i64 %39, 9218868437227405312, !dbg !9174
%bitcast_coercion64 = bitcast i64 %40 to double, !dbg !9174
br label %L111, !dbg !9173
L96: ; preds = %L89
%41 = and i64 %bitcast_coercion, -9223372036854775808, !dbg !9175
%bitcast_coercion66 = bitcast i64 %41 to double, !dbg !9175
br label %L111, !dbg !9176
L101: ; preds = %L87
%42 = and i64 %value_phi55, -9218868437227405313, !dbg !9177
%43 = shl nsw i64 %29, 52, !dbg !9179
%44 = add i64 %43, 234187180623265792, !dbg !9179
%45 = or i64 %44, %42, !dbg !9181
%bitcast_coercion67 = bitcast i64 %45 to double, !dbg !9182
%46 = fmul double %bitcast_coercion67, 0x3CB0000000000000, !dbg !9184
br label %L111, !dbg !9183
L111: ; preds = %L101, %L96, %L91, %L79, %L72, %L48, %L34, %L21
%value_phi11 = phi double [ %bitcast_coercion53, %L48 ], [ %bitcast_coercion61, %L72 ], [ %bitcast_coercion62, %L79 ], [ %bitcast_coercion64, %L91 ], [ %bitcast_coercion66, %L96 ], [ %46, %L101 ], [ %14, %L21 ], [ %14, %L34 ]
%unbox12 = load double, double* %10, align 8, !dbg !9115, !tbaa !206, !alias.scope !208, !noalias !289
%47 = call fastcc double @julia_sqrt_13785(double %unbox12) #82, !dbg !9115
%48 = fadd double %value_phi11, %47, !dbg !9185
br label %L114, !dbg !9185
L114: ; preds = %L111, %L14.L114_crit_edge
%unbox48 = phi i64 [ %unbox10, %L111 ], [ %unbox14.pre, %L14.L114_crit_edge ], !dbg !9118
%value_phi13 = phi double [ %48, %L111 ], [ %unbox70, %L14.L114_crit_edge ]
%49 = and i64 %unbox48, 1, !dbg !9186
%50 = icmp eq i64 %49, 0, !dbg !9186
br i1 %50, label %pass51, label %pass17, !dbg !9120
L125: ; preds = %pass51, %pass17
%value_phi18 = phi i64 [ %92, %pass17 ], [ %94, %pass51 ]
%value_phi19 = phi double [ %value_phi13, %pass17 ], [ %95, %pass51 ]
%51 = call fastcc double @julia_sqrt_13785(double %value_phi19) #82, !dbg !9188
%bitcast_coercion20 = bitcast double %51 to i64, !dbg !9189
%52 = and i64 %bitcast_coercion20, 9223372036854775807, !dbg !9192
%53 = icmp ult i64 %52, 9218868437227405312, !dbg !9194
br i1 %53, label %L133, label %L216, !dbg !9196
L133: ; preds = %L125
%54 = lshr i64 %52, 52, !dbg !9197
%55 = icmp ugt i64 %52, 4503599627370495, !dbg !9200
br i1 %55, label %L174, label %L139, !dbg !9201
L139: ; preds = %L133
%.not97 = icmp eq i64 %52, 0, !dbg !9202
br i1 %.not97, label %L216, label %L143, !dbg !9204
L143: ; preds = %L139
%56 = call i64 @llvm.ctlz.i64(i64 %52, i1 noundef true) #81, !dbg !9205, !range !1568
%57 = add nsw i64 %56, -11, !dbg !9207
%58 = shl i64 %52, %57, !dbg !9208
%59 = icmp ugt i64 %57, 63, !dbg !9208
%60 = select i1 %59, i64 0, i64 %58, !dbg !9208
%61 = and i64 %bitcast_coercion20, -9223372036854775808, !dbg !9210
%62 = or i64 %60, %61, !dbg !9212
%63 = sub nsw i64 12, %56, !dbg !9213
%64 = icmp sgt i64 %value_phi18, -50001, !dbg !9215
br i1 %64, label %L174, label %L153, !dbg !9216
L153: ; preds = %L143
%bitcast_coercion33 = bitcast i64 %61 to double, !dbg !9217
br label %L216, !dbg !9216
L174: ; preds = %L143, %L133
%value_phi34 = phi i64 [ %54, %L133 ], [ %63, %L143 ]
%value_phi35 = phi i64 [ %bitcast_coercion20, %L133 ], [ %62, %L143 ]
%65 = add nsw i64 %value_phi34, %value_phi18, !dbg !9218
%66 = icmp slt i64 %65, 2047, !dbg !9220
br i1 %66, label %L182, label %L177, !dbg !9222
L177: ; preds = %L174
%67 = and i64 %bitcast_coercion20, -9223372036854775808, !dbg !9223
%68 = or i64 %67, 9218868437227405312, !dbg !9223
%bitcast_coercion41 = bitcast i64 %68 to double, !dbg !9223
br label %L216, !dbg !9224
L182: ; preds = %L174
%69 = icmp slt i64 %65, 1, !dbg !9225
br i1 %69, label %L192, label %L184, !dbg !9227
L184: ; preds = %L182
%70 = and i64 %value_phi35, -9218868437227405313, !dbg !9228
%71 = shl nuw nsw i64 %65, 52, !dbg !9230
%72 = or i64 %70, %71, !dbg !9232
%bitcast_coercion42 = bitcast i64 %72 to double, !dbg !9233
br label %L216, !dbg !9234
L192: ; preds = %L182
%73 = icmp sgt i64 %65, -52, !dbg !9235
br i1 %73, label %L206, label %L194, !dbg !9236
L194: ; preds = %L192
%74 = icmp slt i64 %value_phi18, 50001, !dbg !9237
br i1 %74, label %L201, label %L196, !dbg !9239
L196: ; preds = %L194
%75 = and i64 %bitcast_coercion20, -9223372036854775808, !dbg !9240
%76 = or i64 %75, 9218868437227405312, !dbg !9240
%bitcast_coercion44 = bitcast i64 %76 to double, !dbg !9240
br label %L216, !dbg !9239
L201: ; preds = %L194
%77 = and i64 %bitcast_coercion20, -9223372036854775808, !dbg !9241
%bitcast_coercion46 = bitcast i64 %77 to double, !dbg !9241
br label %L216, !dbg !9242
L206: ; preds = %L192
%78 = and i64 %value_phi35, -9218868437227405313, !dbg !9243
%79 = shl nsw i64 %65, 52, !dbg !9245
%80 = add i64 %79, 234187180623265792, !dbg !9245
%81 = or i64 %80, %78, !dbg !9247
%bitcast_coercion47 = bitcast i64 %81 to double, !dbg !9248
%82 = fmul double %bitcast_coercion47, 0x3CB0000000000000, !dbg !9250
br label %L216, !dbg !9249
L216: ; preds = %L206, %L201, %L196, %L184, %L177, %L153, %L139, %L125
%value_phi21 = phi double [ %bitcast_coercion33, %L153 ], [ %bitcast_coercion41, %L177 ], [ %bitcast_coercion42, %L184 ], [ %bitcast_coercion44, %L196 ], [ %bitcast_coercion46, %L201 ], [ %82, %L206 ], [ %51, %L125 ], [ %51, %L139 ]
%83 = fcmp oeq double %value_phi21, 0.000000e+00, !dbg !9251
br i1 %83, label %L216.L237_crit_edge, label %L222, !dbg !9254
L216.L237_crit_edge: ; preds = %L216
%unbox84 = load double, double addrspace(11)* %memcpy_refined_src, align 8
br label %L237, !dbg !9254
L222: ; preds = %L216
%84 = fsub double %unbox2, %unbox2, !dbg !9255
%85 = fcmp uno double %84, 0.000000e+00, !dbg !9258
br i1 %85, label %L222.L228_crit_edge, label %L226, !dbg !9257
L222.L228_crit_edge: ; preds = %L222
%unbox77 = load double, double addrspace(11)* %memcpy_refined_src, align 8
br label %L228, !dbg !9257
L226: ; preds = %L222
%86 = fdiv double %unbox2, %value_phi21, !dbg !9260
%87 = fmul double %86, 5.000000e-01, !dbg !9261
br label %L228, !dbg !9261
L228: ; preds = %L226, %L222.L228_crit_edge
%unbox28 = phi double [ %unbox2, %L226 ], [ %unbox77, %L222.L228_crit_edge ]
%value_phi25 = phi double [ %87, %L226 ], [ %unbox77, %L222.L228_crit_edge ]
%88 = fcmp uge double %unbox, 0.000000e+00, !dbg !9263
br i1 %88, label %L237, label %L235, !dbg !9265
L235: ; preds = %L228
%89 = call double @llvm.fabs.f64(double %value_phi25) #81, !dbg !9266
%90 = call double @llvm.copysign.f64(double %value_phi21, double %unbox28) #81, !dbg !9268
br label %L237, !dbg !9268
L237: ; preds = %L235, %L228, %L216.L237_crit_edge
%value_phi29 = phi double [ %90, %L235 ], [ %unbox84, %L216.L237_crit_edge ], [ %value_phi25, %L228 ]
%value_phi30 = phi double [ %89, %L235 ], [ %value_phi21, %L216.L237_crit_edge ], [ %value_phi21, %L228 ]
%newstruct31.sroa.0.0..sroa_idx = getelementptr inbounds [2 x double], [2 x double]* %0, i64 0, i64 0, !dbg !9270
store double %value_phi30, double* %newstruct31.sroa.0.0..sroa_idx, align 8, !dbg !9270, !noalias !9107
%newstruct31.sroa.2.0..sroa_idx88 = getelementptr inbounds [2 x double], [2 x double]* %0, i64 0, i64 1, !dbg !9270
store double %value_phi29, double* %newstruct31.sroa.2.0..sroa_idx88, align 8, !dbg !9270, !noalias !9107
br label %common.ret
pass17: ; preds = %L114
%91 = add i64 %unbox48, -1, !dbg !9272
%92 = sdiv i64 %91, 2, !dbg !9274
br label %L125, !dbg !9274
pass51: ; preds = %L114
%93 = sdiv i64 %unbox48, 2, !dbg !9275
%94 = add nsw i64 %93, -1, !dbg !9277
%95 = fadd double %value_phi13, %value_phi13, !dbg !9278
br label %L125, !dbg !9278
}
constantarg[[2 x double]* %0] = 0 type: {[-1]:Pointer, [-1,-1]:Float@double} - vals: {}
constantarg[[2 x double] addrspace(11)* %1] = 0 type: {[-1]:Pointer, [-1,-1]:Float@double} - vals: {}
constantinst[ %2 = call noalias nonnull dereferenceable(16) dereferenceable_or_null(16) i8* @malloc(i64 16), !enzyme_fromstack !69] = 1 val:0 type: {[-1]:Pointer, [-1,0]: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}
constantinst[ %3 = bitcast i8* %2 to { double, i64 }*, !enzyme_caststack !68] = 1 val:0 type: {[-1]:Pointer, [-1,0]: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}
constantinst[ %4 = call {}*** @julia.get_pgcstack() #81] = 1 val:1 type: {[-1]:Pointer, [-1,16]:Pointer}
constantinst[ %ptls_field93 = getelementptr inbounds {}**, {}*** %4, i64 2] = 1 val:1 type: {[-1]:Pointer, [-1,0]:Pointer}
constantinst[ %5 = bitcast {}*** %ptls_field93 to i64***] = 1 val:1 type: {[-1]:Pointer, [-1,0]:Pointer}
constantinst[ %ptls_load9495 = load i64**, i64*** %5, align 8, !tbaa !70] = 1 val:1 type: {[-1]:Pointer}
constantinst[ %6 = getelementptr inbounds i64*, i64** %ptls_load9495, i64 2] = 1 val:1 type: {[-1]:Pointer}
constantinst[ %safepoint = load i64*, i64** %6, align 8, !tbaa !74, !invariant.load !68] = 1 val:1 type: {}
constantinst[ fence syncscope("singlethread") seq_cst] = 1 val:1 type: {}
constantinst[ call void @julia.safepoint(i64* %safepoint) #81, !dbg !76] = 1 val:1 type: {}
constantinst[ fence syncscope("singlethread") seq_cst] = 1 val:1 type: {}
constantinst[ %7 = getelementptr inbounds [2 x double], [2 x double] addrspace(11)* %1, i64 0, i64 0, !dbg !77] = 1 val:0 type: {[-1]:Pointer, [-1,-1]:Float@double}
constantinst[ %memcpy_refined_src = getelementptr inbounds [2 x double], [2 x double] addrspace(11)* %1, i64 0, i64 1, !dbg !85] = 1 val:0 type: {[-1]:Pointer, [-1,-1]:Float@double}
constantinst[ %unbox = load double, double addrspace(11)* %7, align 8, !dbg !88, !tbaa !74, !invariant.load !68, !alias.scope !92, !noalias !95] = 0 val:0 type: {[-1]:Float@double}
constantinst[ %unbox2 = load double, double addrspace(11)* %memcpy_refined_src, align 8, !dbg !88, !tbaa !74, !invariant.load !68, !alias.scope !92, !noalias !95] = 0 val:0 type: {[-1]:Float@double}
constantinst[ %8 = fcmp oeq double %unbox, %unbox2, !dbg !88] = 1 val:1 type: {[-1]:Integer}
constantinst[ %9 = fcmp oeq double %unbox2, 0.000000e+00, !dbg !91] = 1 val:1 type: {[-1]:Integer}
constantinst[ %value_phi = and i1 %8, %9, !dbg !91] = 1 val:1 type: {[-1]:Integer}
constantinst[ br i1 %value_phi, label %L12, label %L14, !dbg !91] = 1 val:1 type: {}
constantinst[ ret void, !dbg !100] = 1 val:1 type: {}
constantinst[ %newstruct.sroa.0.0..sroa_idx = getelementptr inbounds [2 x double], [2 x double]* %0, i64 0, i64 0, !dbg !101] = 1 val:0 type: {[-1]:Pointer, [-1,-1]:Float@double}
constantinst[ store double 0.000000e+00, double* %newstruct.sroa.0.0..sroa_idx, align 8, !dbg !101, !noalias !102] = 1 val:1 type: {}
constantinst[ %newstruct.sroa.2.0..sroa_idx89 = getelementptr inbounds [2 x double], [2 x double]* %0, i64 0, i64 1, !dbg !101] = 1 val:0 type: {[-1]:Pointer, [-1,-1]:Float@double}
constantinst[ store double %unbox2, double* %newstruct.sroa.2.0..sroa_idx89, align 8, !dbg !101, !noalias !102] = 0 val:1 type: {}
constantinst[ br label %common.ret] = 1 val:1 type: {}
constantinst[ call fastcc void @julia_ssqs_13915({ double, i64 }* noalias nocapture nofree noundef nonnull writeonly sret({ double, i64 }) align 8 dereferenceable(16) %3, double %unbox, double %unbox2) #81, !dbg !105] = 0 val:1 type: {}
constantinst[ %10 = getelementptr inbounds { double, i64 }, { double, i64 }* %3, i64 0, i32 0, !dbg !106] = 1 val:0 type: {[-1]:Pointer, [-1,0]:Float@double}
constantinst[ %11 = getelementptr inbounds { double, i64 }, { double, i64 }* %3, i64 0, i32 1, !dbg !109] = 1 val:0 type: {[-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}
constantinst[ %12 = fsub double %unbox, %unbox, !dbg !110] = 1 val:1 type: {[-1]:Float@double}
constantinst[ %13 = fcmp uno double %12, 0.000000e+00, !dbg !115] = 1 val:1 type: {[-1]:Integer}
constantinst[ br i1 %13, label %L14.L114_crit_edge, label %L21, !dbg !114] = 1 val:1 type: {}
constantinst[ %unbox70 = load double, double* %10, align 8] = 0 val:0 type: {[-1]:Float@double}
constantinst[ %unbox14.pre = load i64, i64* %11, align 8, !dbg !119, !tbaa !125, !alias.scope !127, !noalias !128] = 1 val:1 type: {[-1]:Integer}
constantinst[ br label %L114, !dbg !114] = 1 val:1 type: {}
constantinst[ %14 = call double @llvm.fabs.f64(double %unbox) #81, !dbg !129] = 0 val:0 type: {[-1]:Float@double}
constantinst[ %unbox10 = load i64, i64* %11, align 8, !dbg !131, !tbaa !125, !alias.scope !127, !noalias !128] = 1 val:1 type: {[-1]:Integer}
constantinst[ %15 = sub i64 0, %unbox10, !dbg !131] = 1 val:1 type: {[-1]:Integer}
constantinst[ %bitcast_coercion = bitcast double %14 to i64, !dbg !133] = 0 val:0 type: {[-1]:Float@double}
constantinst[ %16 = and i64 %bitcast_coercion, 9223372036854775807, !dbg !141] = 0 val:0 type: {}
constantinst[ %17 = icmp ult i64 %16, 9218868437227405312, !dbg !144] = 1 val:1 type: {[-1]:Integer}
constantinst[ br i1 %17, label %L28, label %L111, !dbg !149] = 1 val:1 type: {}
constantinst[ %18 = lshr i64 %16, 52, !dbg !150] = 1 val:1 type: {[-1]:Integer}
constantinst[ %19 = icmp ugt i64 %16, 4503599627370495, !dbg !154] = 1 val:1 type: {[-1]:Integer}
constantinst[ br i1 %19, label %L69, label %L34, !dbg !157] = 1 val:1 type: {}
constantinst[ %.not98 = icmp eq i64 %16, 0, !dbg !158] = 1 val:1 type: {[-1]:Integer}
constantinst[ br i1 %.not98, label %L111, label %L38, !dbg !161] = 1 val:1 type: {}
constantinst[ %20 = call i64 @llvm.ctlz.i64(i64 %16, i1 noundef true) #81, !dbg !162, !range !165] = 1 val:1 type: {[-1]:Integer}
constantinst[ %21 = add nsw i64 %20, -11, !dbg !166] = 1 val:1 type: {[-1]:Integer}
constantinst[ %22 = shl i64 %16, %21, !dbg !167] = 0 val:0 type: {}
constantinst[ %23 = icmp ugt i64 %21, 63, !dbg !167] = 1 val:1 type: {[-1]:Integer}
constantinst[ %24 = select i1 %23, i64 0, i64 %22, !dbg !167] = 0 val:0 type: {}
constantinst[ %25 = and i64 %bitcast_coercion, -9223372036854775808, !dbg !170] = 1 val:1 type: {[-1]:Float@double}
constantinst[ %26 = or i64 %24, %25, !dbg !172] = 0 val:0 type: {}
constantinst[ %27 = sub nsw i64 12, %20, !dbg !174] = 1 val:1 type: {[-1]:Integer}
constantinst[ %28 = icmp sgt i64 %15, -50001, !dbg !176] = 1 val:1 type: {[-1]:Integer}
constantinst[ br i1 %28, label %L69, label %L48, !dbg !178] = 1 val:1 type: {}
constantinst[ %bitcast_coercion53 = bitcast i64 %25 to double, !dbg !179] = 1 val:1 type: {[-1]:Float@double}
constantinst[ br label %L111, !dbg !178] = 1 val:1 type: {}
constantinst[ %value_phi54 = phi i64 [ %18, %L28 ], [ %27, %L38 ]] = 1 val:1 type: {[-1]:Integer}
constantinst[ %value_phi55 = phi i64 [ %bitcast_coercion, %L28 ], [ %26, %L38 ]] = 0 val:0 type: {}
constantinst[ %29 = sub i64 %value_phi54, %unbox10, !dbg !182] = 1 val:1 type: {[-1]:Integer}
constantinst[ %30 = icmp slt i64 %29, 2047, !dbg !185] = 1 val:1 type: {[-1]:Integer}
constantinst[ br i1 %30, label %L77, label %L72, !dbg !187] = 1 val:1 type: {}
constantinst[ %31 = and i64 %bitcast_coercion, -9223372036854775808, !dbg !188] = 1 val:1 type: {[-1]:Float@double}
constantinst[ %32 = or i64 %31, 9218868437227405312, !dbg !188] = 1 val:1 type: {[-1]:Float@double}
constantinst[ %bitcast_coercion61 = bitcast i64 %32 to double, !dbg !188] = 1 val:1 type: {[-1]:Float@double}
constantinst[ br label %L111, !dbg !189] = 1 val:1 type: {}
constantinst[ %33 = icmp slt i64 %29, 1, !dbg !190] = 1 val:1 type: {[-1]:Integer}
constantinst[ br i1 %33, label %L87, label %L79, !dbg !193] = 1 val:1 type: {}
constantinst[ %34 = and i64 %value_phi55, -9218868437227405313, !dbg !194] = 0 val:0 type: {}
constantinst[ %35 = shl nuw nsw i64 %29, 52, !dbg !196] = 1 val:1 type: {[-1]:Integer}
constantinst[ %36 = or i64 %34, %35, !dbg !198] = 0 val:0 type: {[-1]:Float@double}
constantinst[ %bitcast_coercion62 = bitcast i64 %36 to double, !dbg !199] = 0 val:0 type: {[-1]:Float@double}
constantinst[ br label %L111, !dbg !200] = 1 val:1 type: {}
constantinst[ %37 = icmp sgt i64 %29, -52, !dbg !201] = 1 val:1 type: {[-1]:Integer}
constantinst[ br i1 %37, label %L101, label %L89, !dbg !202] = 1 val:1 type: {}
constantinst[ %38 = icmp slt i64 %15, 50001, !dbg !203] = 1 val:1 type: {[-1]:Integer}
constantinst[ br i1 %38, label %L96, label %L91, !dbg !205] = 1 val:1 type: {}
constantinst[ %39 = and i64 %bitcast_coercion, -9223372036854775808, !dbg !206] = 1 val:1 type: {[-1]:Float@double}
constantinst[ %40 = or i64 %39, 9218868437227405312, !dbg !206] = 1 val:1 type: {[-1]:Float@double}
constantinst[ %bitcast_coercion64 = bitcast i64 %40 to double, !dbg !206] = 1 val:1 type: {[-1]:Float@double}
constantinst[ br label %L111, !dbg !205] = 1 val:1 type: {}
constantinst[ %41 = and i64 %bitcast_coercion, -9223372036854775808, !dbg !207] = 1 val:1 type: {[-1]:Float@double}
constantinst[ %bitcast_coercion66 = bitcast i64 %41 to double, !dbg !207] = 1 val:1 type: {[-1]:Float@double}
constantinst[ br label %L111, !dbg !208] = 1 val:1 type: {}
constantinst[ %42 = and i64 %value_phi55, -9218868437227405313, !dbg !209] = 0 val:0 type: {}
constantinst[ %43 = shl nsw i64 %29, 52, !dbg !211] = 1 val:1 type: {[-1]:Integer}
constantinst[ %44 = add i64 %43, 234187180623265792, !dbg !211] = 1 val:1 type: {[-1]:Anything}
constantinst[ %45 = or i64 %44, %42, !dbg !213] = 0 val:0 type: {[-1]:Float@double}
constantinst[ %bitcast_coercion67 = bitcast i64 %45 to double, !dbg !214] = 0 val:0 type: {[-1]:Float@double}
constantinst[ %46 = fmul double %bitcast_coercion67, 0x3CB0000000000000, !dbg !216] = 0 val:0 type: {[-1]:Float@double}
constantinst[ br label %L111, !dbg !215] = 1 val:1 type: {}
constantinst[ %value_phi11 = phi double [ %bitcast_coercion53, %L48 ], [ %bitcast_coercion61, %L72 ], [ %bitcast_coercion62, %L79 ], [ %bitcast_coercion64, %L91 ], [ %bitcast_coercion66, %L96 ], [ %46, %L101 ], [ %14, %L21 ], [ %14, %L34 ]] = 0 val:0 type: {[-1]:Float@double}
constantinst[ %unbox12 = load double, double* %10, align 8, !dbg !114, !tbaa !125, !alias.scope !127, !noalias !128] = 0 val:0 type: {[-1]:Float@double}
constantinst[ %47 = call fastcc double @julia_sqrt_13785(double %unbox12) #82, !dbg !114] = 0 val:0 type: {[-1]:Float@double}
constantinst[ %48 = fadd double %value_phi11, %47, !dbg !218] = 0 val:0 type: {[-1]:Float@double}
constantinst[ br label %L114, !dbg !218] = 1 val:1 type: {}
constantinst[ %unbox48 = phi i64 [ %unbox10, %L111 ], [ %unbox14.pre, %L14.L114_crit_edge ], !dbg !119] = 1 val:1 type: {[-1]:Integer}
constantinst[ %value_phi13 = phi double [ %48, %L111 ], [ %unbox70, %L14.L114_crit_edge ]] = 0 val:0 type: {[-1]:Float@double}
constantinst[ %49 = and i64 %unbox48, 1, !dbg !220] = 1 val:1 type: {[-1]:Integer}
constantinst[ %50 = icmp eq i64 %49, 0, !dbg !220] = 1 val:1 type: {[-1]:Integer}
constantinst[ br i1 %50, label %pass51, label %pass17, !dbg !124] = 1 val:1 type: {}
constantinst[ %value_phi18 = phi i64 [ %92, %pass17 ], [ %94, %pass51 ]] = 1 val:1 type: {[-1]:Integer}
constantinst[ %value_phi19 = phi double [ %value_phi13, %pass17 ], [ %95, %pass51 ]] = 0 val:0 type: {[-1]:Float@double}
constantinst[ %51 = call fastcc double @julia_sqrt_13785(double %value_phi19) #82, !dbg !224] = 0 val:0 type: {[-1]:Float@double}
constantinst[ %bitcast_coercion20 = bitcast double %51 to i64, !dbg !225] = 0 val:0 type: {[-1]:Float@double}
constantinst[ %52 = and i64 %bitcast_coercion20, 9223372036854775807, !dbg !228] = 0 val:0 type: {}
constantinst[ %53 = icmp ult i64 %52, 9218868437227405312, !dbg !230] = 1 val:1 type: {[-1]:Integer}
constantinst[ br i1 %53, label %L133, label %L216, !dbg !232] = 1 val:1 type: {}
constantinst[ %54 = lshr i64 %52, 52, !dbg !233] = 1 val:1 type: {[-1]:Integer}
constantinst[ %55 = icmp ugt i64 %52, 4503599627370495, !dbg !236] = 1 val:1 type: {[-1]:Integer}
constantinst[ br i1 %55, label %L174, label %L139, !dbg !237] = 1 val:1 type: {}
constantinst[ %.not97 = icmp eq i64 %52, 0, !dbg !238] = 1 val:1 type: {[-1]:Integer}
constantinst[ br i1 %.not97, label %L216, label %L143, !dbg !240] = 1 val:1 type: {}
constantinst[ %56 = call i64 @llvm.ctlz.i64(i64 %52, i1 noundef true) #81, !dbg !241, !range !165] = 1 val:1 type: {[-1]:Integer}
constantinst[ %57 = add nsw i64 %56, -11, !dbg !243] = 1 val:1 type: {[-1]:Integer}
constantinst[ %58 = shl i64 %52, %57, !dbg !244] = 0 val:0 type: {}
constantinst[ %59 = icmp ugt i64 %57, 63, !dbg !244] = 1 val:1 type: {[-1]:Integer}
constantinst[ %60 = select i1 %59, i64 0, i64 %58, !dbg !244] = 0 val:0 type: {}
constantinst[ %61 = and i64 %bitcast_coercion20, -9223372036854775808, !dbg !246] = 1 val:1 type: {[-1]:Float@double}
constantinst[ %62 = or i64 %60, %61, !dbg !248] = 0 val:0 type: {}
constantinst[ %63 = sub nsw i64 12, %56, !dbg !249] = 1 val:1 type: {[-1]:Integer}
constantinst[ %64 = icmp sgt i64 %value_phi18, -50001, !dbg !251] = 1 val:1 type: {[-1]:Integer}
constantinst[ br i1 %64, label %L174, label %L153, !dbg !252] = 1 val:1 type: {}
constantinst[ %bitcast_coercion33 = bitcast i64 %61 to double, !dbg !253] = 1 val:1 type: {[-1]:Float@double}
constantinst[ br label %L216, !dbg !252] = 1 val:1 type: {}
constantinst[ %value_phi34 = phi i64 [ %54, %L133 ], [ %63, %L143 ]] = 1 val:1 type: {[-1]:Integer}
constantinst[ %value_phi35 = phi i64 [ %bitcast_coercion20, %L133 ], [ %62, %L143 ]] = 0 val:0 type: {}
constantinst[ %65 = add nsw i64 %value_phi34, %value_phi18, !dbg !254] = 1 val:1 type: {[-1]:Integer}
constantinst[ %66 = icmp slt i64 %65, 2047, !dbg !256] = 1 val:1 type: {[-1]:Integer}
constantinst[ br i1 %66, label %L182, label %L177, !dbg !258] = 1 val:1 type: {}
constantinst[ %67 = and i64 %bitcast_coercion20, -9223372036854775808, !dbg !259] = 1 val:1 type: {[-1]:Float@double}
constantinst[ %68 = or i64 %67, 9218868437227405312, !dbg !259] = 1 val:1 type: {[-1]:Float@double}
constantinst[ %bitcast_coercion41 = bitcast i64 %68 to double, !dbg !259] = 1 val:1 type: {[-1]:Float@double}
constantinst[ br label %L216, !dbg !260] = 1 val:1 type: {}
constantinst[ %69 = icmp slt i64 %65, 1, !dbg !261] = 1 val:1 type: {[-1]:Integer}
constantinst[ br i1 %69, label %L192, label %L184, !dbg !263] = 1 val:1 type: {}
constantinst[ %70 = and i64 %value_phi35, -9218868437227405313, !dbg !264] = 0 val:0 type: {}
constantinst[ %71 = shl nuw nsw i64 %65, 52, !dbg !266] = 1 val:1 type: {[-1]:Integer}
constantinst[ %72 = or i64 %70, %71, !dbg !268] = 0 val:0 type: {[-1]:Float@double}
constantinst[ %bitcast_coercion42 = bitcast i64 %72 to double, !dbg !269] = 0 val:0 type: {[-1]:Float@double}
constantinst[ br label %L216, !dbg !270] = 1 val:1 type: {}
constantinst[ %73 = icmp sgt i64 %65, -52, !dbg !271] = 1 val:1 type: {[-1]:Integer}
constantinst[ br i1 %73, label %L206, label %L194, !dbg !272] = 1 val:1 type: {}
constantinst[ %74 = icmp slt i64 %value_phi18, 50001, !dbg !273] = 1 val:1 type: {[-1]:Integer}
constantinst[ br i1 %74, label %L201, label %L196, !dbg !275] = 1 val:1 type: {}
constantinst[ %75 = and i64 %bitcast_coercion20, -9223372036854775808, !dbg !276] = 1 val:1 type: {[-1]:Float@double}
constantinst[ %76 = or i64 %75, 9218868437227405312, !dbg !276] = 1 val:1 type: {[-1]:Float@double}
constantinst[ %bitcast_coercion44 = bitcast i64 %76 to double, !dbg !276] = 1 val:1 type: {[-1]:Float@double}
constantinst[ br label %L216, !dbg !275] = 1 val:1 type: {}
constantinst[ %77 = and i64 %bitcast_coercion20, -9223372036854775808, !dbg !277] = 1 val:1 type: {[-1]:Float@double}
constantinst[ %bitcast_coercion46 = bitcast i64 %77 to double, !dbg !277] = 1 val:1 type: {[-1]:Float@double}
constantinst[ br label %L216, !dbg !278] = 1 val:1 type: {}
constantinst[ %78 = and i64 %value_phi35, -9218868437227405313, !dbg !279] = 0 val:0 type: {}
constantinst[ %79 = shl nsw i64 %65, 52, !dbg !281] = 1 val:1 type: {[-1]:Integer}
constantinst[ %80 = add i64 %79, 234187180623265792, !dbg !281] = 1 val:1 type: {[-1]:Anything}
constantinst[ %81 = or i64 %80, %78, !dbg !283] = 0 val:0 type: {[-1]:Float@double}
constantinst[ %bitcast_coercion47 = bitcast i64 %81 to double, !dbg !284] = 0 val:0 type: {[-1]:Float@double}
constantinst[ %82 = fmul double %bitcast_coercion47, 0x3CB0000000000000, !dbg !286] = 0 val:0 type: {[-1]:Float@double}
constantinst[ br label %L216, !dbg !285] = 1 val:1 type: {}
constantinst[ %value_phi21 = phi double [ %bitcast_coercion33, %L153 ], [ %bitcast_coercion41, %L177 ], [ %bitcast_coercion42, %L184 ], [ %bitcast_coercion44, %L196 ], [ %bitcast_coercion46, %L201 ], [ %82, %L206 ], [ %51, %L125 ], [ %51, %L139 ]] = 0 val:0 type: {[-1]:Float@double}
constantinst[ %83 = fcmp oeq double %value_phi21, 0.000000e+00, !dbg !287] = 1 val:1 type: {[-1]:Integer}
constantinst[ br i1 %83, label %L216.L237_crit_edge, label %L222, !dbg !291] = 1 val:1 type: {}
constantinst[ %unbox84 = load double, double addrspace(11)* %memcpy_refined_src, align 8] = 0 val:0 type: {[-1]:Float@double}
constantinst[ br label %L237, !dbg !291] = 1 val:1 type: {}
constantinst[ %84 = fsub double %unbox2, %unbox2, !dbg !292] = 1 val:1 type: {[-1]:Float@double}
constantinst[ %85 = fcmp uno double %84, 0.000000e+00, !dbg !295] = 1 val:1 type: {[-1]:Integer}
constantinst[ br i1 %85, label %L222.L228_crit_edge, label %L226, !dbg !294] = 1 val:1 type: {}
constantinst[ %unbox77 = load double, double addrspace(11)* %memcpy_refined_src, align 8] = 0 val:0 type: {[-1]:Float@double}
constantinst[ br label %L228, !dbg !294] = 1 val:1 type: {}
constantinst[ %86 = fdiv double %unbox2, %value_phi21, !dbg !297] = 0 val:0 type: {[-1]:Float@double}
constantinst[ %87 = fmul double %86, 5.000000e-01, !dbg !299] = 0 val:0 type: {[-1]:Float@double}
constantinst[ br label %L228, !dbg !299] = 1 val:1 type: {}
constantinst[ %unbox28 = phi double [ %unbox2, %L226 ], [ %unbox77, %L222.L228_crit_edge ]] = 1 val:1 type: {[-1]:Float@double}
constantinst[ %value_phi25 = phi double [ %87, %L226 ], [ %unbox77, %L222.L228_crit_edge ]] = 0 val:0 type: {[-1]:Float@double}
constantinst[ %88 = fcmp uge double %unbox, 0.000000e+00, !dbg !302] = 1 val:1 type: {[-1]:Integer}
constantinst[ br i1 %88, label %L237, label %L235, !dbg !305] = 1 val:1 type: {}
constantinst[ %89 = call double @llvm.fabs.f64(double %value_phi25) #81, !dbg !306] = 0 val:0 type: {[-1]:Float@double}
constantinst[ %90 = call double @llvm.copysign.f64(double %value_phi21, double %unbox28) #81, !dbg !308] = 0 val:0 type: {[-1]:Float@double}
constantinst[ br label %L237, !dbg !308] = 1 val:1 type: {}
constantinst[ %value_phi29 = phi double [ %90, %L235 ], [ %unbox84, %L216.L237_crit_edge ], [ %value_phi25, %L228 ]] = 0 val:0 type: {[-1]:Float@double}
constantinst[ %value_phi30 = phi double [ %89, %L235 ], [ %value_phi21, %L216.L237_crit_edge ], [ %value_phi21, %L228 ]] = 0 val:0 type: {[-1]:Float@double}
constantinst[ %newstruct31.sroa.0.0..sroa_idx = getelementptr inbounds [2 x double], [2 x double]* %0, i64 0, i64 0, !dbg !311] = 1 val:0 type: {[-1]:Pointer, [-1,-1]:Float@double}
constantinst[ store double %value_phi30, double* %newstruct31.sroa.0.0..sroa_idx, align 8, !dbg !311, !noalias !102] = 0 val:1 type: {}
constantinst[ %newstruct31.sroa.2.0..sroa_idx88 = getelementptr inbounds [2 x double], [2 x double]* %0, i64 0, i64 1, !dbg !311] = 1 val:0 type: {[-1]:Pointer, [-1,-1]:Float@double}
constantinst[ store double %value_phi29, double* %newstruct31.sroa.2.0..sroa_idx88, align 8, !dbg !311, !noalias !102] = 0 val:1 type: {}
constantinst[ br label %common.ret] = 1 val:1 type: {}
constantinst[ %91 = add i64 %unbox48, -1, !dbg !314] = 1 val:1 type: {[-1]:Integer}
constantinst[ %92 = sdiv i64 %91, 2, !dbg !316] = 1 val:1 type: {[-1]:Integer}
constantinst[ br label %L125, !dbg !316] = 1 val:1 type: {}
constantinst[ %93 = sdiv i64 %unbox48, 2, !dbg !318] = 1 val:1 type: {[-1]:Integer}
constantinst[ %94 = add nsw i64 %93, -1, !dbg !320] = 1 val:1 type: {[-1]:Integer}
constantinst[ %95 = fadd double %value_phi13, %value_phi13, !dbg !321] = 0 val:0 type: {[-1]:Float@double}
constantinst[ br label %L125, !dbg !321] = 1 val:1 type: {}
cannot handle unknown binary operator: %72 = or i64 %70, %71, !dbg !268
Stacktrace:
[1] |
@ ./int.jl:372
[2] ldexp
@ ./math.jl:964
[3] sqrt
@ ./complex.jl:541
Stacktrace:
[1] throwerr(cstr::Cstring)
@ Enzyme.Compiler ~/.local/share/julia/packages/Enzyme/qRjan/src/compiler.jl:1288
[2] |
@ ./int.jl:372 [inlined]
[3] ldexp
@ ./math.jl:964 [inlined]
[4] sqrt
@ ./complex.jl:541
[5] Z₀
@ ~/.local/share/julia/packages/CircuitNetworks/tk9xS/src/math/utils.jl:8 [inlined]
[6] abcd_tline
@ ~/Dropbox/Projects/Julia/WBLNAOptim/src/tline_model.jl:12
[7] em_abcd
@ ~/Dropbox/Projects/Julia/WBLNAOptim/src/tline_model.jl:40
[8] imn
@ ~/Dropbox/Projects/Julia/WBLNAOptim/src/matching_network.jl:16
[9] cost
@ ~/Dropbox/Projects/Julia/WBLNAOptim/scripts/multi_point_optim.jl:10
[10] cost
@ ~/Dropbox/Projects/Julia/WBLNAOptim/scripts/multi_point_optim.jl:22 [inlined]
[11] cost
@ ~/Dropbox/Projects/Julia/WBLNAOptim/scripts/multi_point_optim.jl:41 [inlined]
[12] diffejulia_cost_13721wrap
@ ~/Dropbox/Projects/Julia/WBLNAOptim/scripts/multi_point_optim.jl:0
[13] macro expansion
@ ~/.local/share/julia/packages/Enzyme/qRjan/src/compiler.jl:5377 [inlined]
[14] enzyme_call
@ ~/.local/share/julia/packages/Enzyme/qRjan/src/compiler.jl:5055 [inlined]
[15] CombinedAdjointThunk
@ ~/.local/share/julia/packages/Enzyme/qRjan/src/compiler.jl:4997 [inlined]
[16] autodiff(::ReverseMode{false, FFIABI}, f::Const{typeof(cost)}, ::Type{Active}, args::Duplicated{Vector{Float64}})
@ Enzyme ~/.local/share/julia/packages/Enzyme/qRjan/src/Enzyme.jl:215
[17] autodiff
@ ~/.local/share/julia/packages/Enzyme/qRjan/src/Enzyme.jl:224 [inlined]
[18] gradient!(::ReverseMode{false, FFIABI}, dx::Vector{Float64}, f::Function, x::Vector{Float64})
@ Enzyme ~/.local/share/julia/packages/Enzyme/qRjan/src/Enzyme.jl:833
[19] top-level scope
@ ~/Dropbox/Projects/Julia/WBLNAOptim/scripts/multi_point_optim.jl:47
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment