Last active
March 7, 2017 22:09
-
-
Save andreasnoack/e4ae12fcbb910d51f832e59057fe7f0a to your computer and use it in GitHub Desktop.
Compare Matrix and SMatrix
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using Celeste, StaticArrays, BenchmarkTools | |
using Celeste.PSF: BivariateNormalDerivatives, GalaxySigmaDerivs | |
const gal_shape_ids = 3 | |
type Test1{NumType <: Number} | |
j::Matrix{NumType} | |
t::Array{NumType, 3} | |
end | |
type Test2{NumType <: Number} | |
j::SMatrix{3,3,NumType,9} | |
t::Array{NumType, 3} | |
end | |
bvn_derivs = Celeste.PSF.BivariateNormalDerivatives{Float64}() | |
sig_sf1 = Test1{Float64}(randn(3,3), randn(3,3,3)) | |
sig_sf2 = Test2{Float64}(@SMatrix(randn(3,3)), randn(3,3,3)) | |
wcs_jacobian = randn(2,2) | |
function foo(bvn_derivs, sig_sf) | |
bvn_s_d = bvn_derivs.bvn_s_d | |
bvn_sig_d = bvn_derivs.bvn_sig_d | |
@inbounds for shape_id in 1:length(gal_shape_ids), sig_id in 1:3 | |
bvn_s_d[shape_id] += bvn_sig_d[sig_id] * sig_sf.j[sig_id, shape_id] | |
end | |
end | |
function bar!{NumType <: Number}( | |
bvn_derivs::BivariateNormalDerivatives{NumType}, | |
sig_sf, | |
wcs_jacobian, calculate_hessian::Bool) | |
# Transform the u derivates first. | |
# bvn_x_d and bvn_xx_h should already have been set using get_bvn_derivs!() | |
# transform_bvn_ux_derivs!(bvn_derivs, wcs_jacobian, calculate_hessian) | |
# Gradient calculations. | |
# Use the chain rule for the shape derviatives. | |
# TODO: time consuming ************** | |
bvn_s_d = bvn_derivs.bvn_s_d | |
bvn_sig_d = bvn_derivs.bvn_sig_d | |
fill!(bvn_s_d, 0.0) | |
@inbounds for shape_id in 1:length(gal_shape_ids), sig_id in 1:3 | |
bvn_s_d[shape_id] += bvn_sig_d[sig_id] * sig_sf.j[sig_id, shape_id] | |
end | |
if calculate_hessian | |
# Hessian calculations. | |
bvn_ss_h = bvn_derivs.bvn_ss_h | |
bvn_us_h = bvn_derivs.bvn_us_h | |
fill!(bvn_ss_h, 0.0) | |
fill!(bvn_us_h, 0.0) | |
# Second derviatives involving only shape parameters. | |
# TODO: time consuming ************** | |
# @inbounds for shape_id2 in 1:length(gal_shape_ids), shape_id1 in 1:shape_id2 | |
# @inbounds for sig_id1 in 1:3 | |
# bvn_ss_h[shape_id1, shape_id2] += | |
# bvn_sig_d[sig_id1] * sig_sf.t[sig_id1, shape_id1, shape_id2] | |
# end | |
# end | |
bvn_sigsig_h = bvn_derivs.bvn_sigsig_h | |
@inbounds for sig_id1 in 1:3 | |
for sig_id2 in 1:3 | |
for shape_id2 in 1:length(gal_shape_ids) | |
inner_term = | |
bvn_sigsig_h[sig_id1, sig_id2] * sig_sf.j[sig_id2, shape_id2] | |
for shape_id1 in 1:shape_id2 | |
bvn_ss_h[shape_id1, shape_id2] += | |
inner_term * sig_sf.j[sig_id1, shape_id1] | |
end | |
end | |
end | |
end | |
# @inbounds for shape_id2 in 1:length(gal_shape_ids), shape_id1 in 1:shape_id2 | |
# bvn_ss_h[shape_id2, shape_id1] = bvn_ss_h[shape_id1, shape_id2] | |
# end | |
# # Second derivates involving both a shape term and a u term. | |
# # TODO: time consuming ************** | |
# bvn_xsig_h = bvn_derivs.bvn_xsig_h | |
# @inbounds for shape_id in 1:length(gal_shape_ids), | |
# u_id in 1:2, sig_id in 1:3, x_id in 1:2 | |
# bvn_us_h[u_id, shape_id] += | |
# bvn_xsig_h[x_id, sig_id] * sig_sf.j[sig_id, shape_id] * | |
# (-wcs_jacobian[x_id, u_id]) | |
# end | |
end | |
end | |
# foo(bvn_derivs, sig_sf1) | |
# foo(bvn_derivs, sig_sf2) | |
# @btime foo(bvn_derivs, sig_sf1) | |
# @btime foo(bvn_derivs, sig_sf2) | |
# @code_llvm bar!(bvn_derivs, sig_sf1, wcs_jacobian, true) | |
# @code_llvm bar!(bvn_derivs, sig_sf2, wcs_jacobian, true) | |
code_llvm(STDOUT, bar!, Tuple{typeof(bvn_derivs), typeof(sig_sf2), typeof(wcs_jacobian), Bool}, true, true) | |
# bar!(bvn_derivs, sig_sf1, wcs_jacobian, true) | |
# bar!(bvn_derivs, sig_sf2, wcs_jacobian, true) | |
# @btime bar!(bvn_derivs, sig_sf1, wcs_jacobian, true) | |
# @btime bar!(bvn_derivs, sig_sf2, wcs_jacobian, true) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
define void @"julia_bar!_69141"(i8**, i8**, i8**, i8) #0 !dbg !5 { | |
top: | |
%4 = call i8**** @jl_get_ptls_states() #3 | |
%5 = alloca [16 x i8**], align 8 | |
%.sub = getelementptr inbounds [16 x i8**], [16 x i8**]* %5, i64 0, i64 0 | |
%6 = getelementptr [16 x i8**], [16 x i8**]* %5, i64 0, i64 2 | |
%7 = getelementptr [16 x i8**], [16 x i8**]* %5, i64 0, i64 3 | |
%8 = getelementptr [16 x i8**], [16 x i8**]* %5, i64 0, i64 4 | |
%9 = getelementptr [16 x i8**], [16 x i8**]* %5, i64 0, i64 5 | |
%10 = getelementptr [16 x i8**], [16 x i8**]* %5, i64 0, i64 6 | |
%11 = getelementptr [16 x i8**], [16 x i8**]* %5, i64 0, i64 7 | |
%12 = getelementptr [16 x i8**], [16 x i8**]* %5, i64 0, i64 8 | |
%13 = bitcast [16 x i8**]* %5 to i64* | |
%14 = bitcast i8*** %6 to i8* | |
call void @llvm.memset.p0i8.i64(i8* %14, i8 0, i64 112, i32 8, i1 false) | |
store i64 28, i64* %13, align 8 | |
%15 = bitcast i8**** %4 to i64* | |
%16 = load i64, i64* %15, align 8 | |
%17 = getelementptr [16 x i8**], [16 x i8**]* %5, i64 0, i64 1 | |
%18 = bitcast i8*** %17 to i64* | |
store i64 %16, i64* %18, align 8 | |
store i8*** %.sub, i8**** %4, align 8 | |
%19 = getelementptr i8*, i8** %0, i64 13 | |
%20 = bitcast i8** %19 to i8*** | |
%21 = load i8**, i8*** %20, align 8 | |
store i8** %21, i8*** %6, align 8 | |
%22 = getelementptr i8*, i8** %0, i64 4 | |
%23 = bitcast i8** %22 to i8*** | |
%24 = load i8**, i8*** %23, align 8 | |
store i8** %24, i8*** %7, align 8 | |
store i8** %21, i8*** %8, align 8 | |
%25 = call i8** @"jlsys_fill!_47835"(i8** %21, double 0.000000e+00) | |
%26 = bitcast i8** %21 to double** | |
%27 = load double*, double** %26, align 8 | |
%28 = bitcast i8** %24 to double** | |
%29 = load double*, double** %28, align 8 | |
%30 = bitcast i8** %1 to i8*** | |
%31 = load i8**, i8*** %30, align 8 | |
%32 = bitcast i8** %31 to double** | |
%33 = load double*, double** %32, align 8 | |
%34 = load double, double* %27, align 8 | |
%35 = load double, double* %29, align 8 | |
%36 = load double, double* %33, align 8 | |
%37 = fmul double %35, %36 | |
%38 = fadd double %34, %37 | |
store double %38, double* %27, align 8 | |
%39 = getelementptr double, double* %29, i64 1 | |
%40 = load double, double* %39, align 8 | |
%41 = getelementptr double, double* %33, i64 1 | |
%42 = load double, double* %41, align 8 | |
%43 = fmul double %40, %42 | |
%44 = fadd double %38, %43 | |
store double %44, double* %27, align 8 | |
%45 = getelementptr double, double* %29, i64 2 | |
%46 = load double, double* %45, align 8 | |
%47 = getelementptr double, double* %33, i64 2 | |
%48 = load double, double* %47, align 8 | |
%49 = fmul double %46, %48 | |
%50 = fadd double %44, %49 | |
store double %50, double* %27, align 8 | |
store i8** %21, i8*** %9, align 8 | |
store i8** %24, i8*** %10, align 8 | |
store i8** %31, i8*** %11, align 8 | |
store i8** %21, i8*** %12, align 8 | |
%51 = and i8 %3, 1 | |
%52 = icmp eq i8 %51, 0 | |
br i1 %52, label %L257, label %if7 | |
if7: ; preds = %top | |
%53 = getelementptr [16 x i8**], [16 x i8**]* %5, i64 0, i64 9 | |
%54 = getelementptr [16 x i8**], [16 x i8**]* %5, i64 0, i64 10 | |
%55 = getelementptr [16 x i8**], [16 x i8**]* %5, i64 0, i64 11 | |
%56 = getelementptr [16 x i8**], [16 x i8**]* %5, i64 0, i64 12 | |
%57 = getelementptr [16 x i8**], [16 x i8**]* %5, i64 0, i64 13 | |
%58 = getelementptr [16 x i8**], [16 x i8**]* %5, i64 0, i64 14 | |
%59 = getelementptr [16 x i8**], [16 x i8**]* %5, i64 0, i64 15 | |
%60 = getelementptr i8*, i8** %0, i64 14 | |
%61 = bitcast i8** %60 to i8*** | |
%62 = load i8**, i8*** %61, align 8 | |
store i8** %62, i8*** %53, align 8 | |
%63 = bitcast i8** %62 to double** | |
%64 = load double*, double** %63, align 8 | |
%65 = getelementptr i8*, i8** %0, i64 15 | |
%66 = bitcast i8** %65 to i8*** | |
%67 = load i8**, i8*** %66, align 8 | |
store i8** %67, i8*** %54, align 8 | |
store i8** %62, i8*** %55, align 8 | |
%68 = call i8** @"julia_fill!_68280"(i8** %62, double 0.000000e+00) | |
store i8** %67, i8*** %56, align 8 | |
%69 = call i8** @"julia_fill!_68280"(i8** %67, double 0.000000e+00) | |
%70 = getelementptr i8*, i8** %0, i64 7 | |
%71 = bitcast i8** %70 to i8*** | |
%72 = load i8**, i8*** %71, align 8 | |
store i8** %72, i8*** %57, align 8 | |
%73 = bitcast i8** %72 to double** | |
%74 = load double*, double** %73, align 8 | |
%75 = getelementptr i8*, i8** %72, i64 3 | |
%76 = bitcast i8** %75 to i64* | |
%77 = load i64, i64* %76, align 8 | |
%78 = load i8**, i8*** %30, align 8 | |
%79 = bitcast i8** %78 to double** | |
%80 = load double*, double** %79, align 8 | |
br label %L190.loopexit.2 | |
L257: ; preds = %top | |
%81 = load i64, i64* %18, align 8 | |
store i64 %81, i64* %15, align 8 | |
ret void | |
L254: ; preds = %L190.loopexit.2 | |
store i8** %78, i8*** %58, align 8 | |
%82 = load i64, i64* %18, align 8 | |
store i64 %82, i64* %15, align 8 | |
ret void | |
L190.loopexit.2: ; preds = %if7, %L190.loopexit.2 | |
%"#temp#5.030" = phi i64 [ 1, %if7 ], [ %116, %L190.loopexit.2 ] | |
%83 = add nsw i64 %"#temp#5.030", -1 | |
%84 = getelementptr double, double* %74, i64 %83 | |
%85 = load double, double* %84, align 8 | |
%86 = load double, double* %80, align 8 | |
%87 = fmul double %85, %86 | |
%88 = load double, double* %64, align 8 | |
%89 = getelementptr double, double* %80, i64 %83 | |
%90 = load double, double* %89, align 8 | |
%91 = fmul double %87, %90 | |
%92 = fadd double %88, %91 | |
store double %92, double* %64, align 8 | |
%93 = add i64 %83, %77 | |
%94 = getelementptr double, double* %74, i64 %93 | |
%95 = load double, double* %94, align 8 | |
%96 = getelementptr double, double* %80, i64 1 | |
%97 = load double, double* %96, align 8 | |
%98 = fmul double %95, %97 | |
%99 = load double, double* %64, align 8 | |
%100 = getelementptr double, double* %80, i64 %83 | |
%101 = load double, double* %100, align 8 | |
%102 = fmul double %98, %101 | |
%103 = fadd double %99, %102 | |
store double %103, double* %64, align 8 | |
%104 = shl i64 %77, 1 | |
%105 = add i64 %83, %104 | |
%106 = getelementptr double, double* %74, i64 %105 | |
%107 = load double, double* %106, align 8 | |
%108 = getelementptr double, double* %80, i64 2 | |
%109 = load double, double* %108, align 8 | |
%110 = fmul double %107, %109 | |
%111 = load double, double* %64, align 8 | |
%112 = getelementptr double, double* %80, i64 %83 | |
%113 = load double, double* %112, align 8 | |
%114 = fmul double %110, %113 | |
%115 = fadd double %111, %114 | |
store double %115, double* %64, align 8 | |
store i8** %78, i8*** %59, align 8 | |
%116 = add nuw nsw i64 %"#temp#5.030", 1 | |
%117 = icmp eq i64 %116, 4 | |
br i1 %117, label %L254, label %L190.loopexit.2 | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
define void @"julia_bar!_68367"(i8**, i8**, i8**, i8) #0 !dbg !5 { | |
top: | |
%4 = call i8**** @jl_get_ptls_states() #3 | |
%5 = alloca [16 x i8**], align 8 | |
%.sub = getelementptr inbounds [16 x i8**], [16 x i8**]* %5, i64 0, i64 0 | |
%6 = getelementptr [16 x i8**], [16 x i8**]* %5, i64 0, i64 2 | |
%7 = getelementptr [16 x i8**], [16 x i8**]* %5, i64 0, i64 3 | |
%8 = getelementptr [16 x i8**], [16 x i8**]* %5, i64 0, i64 4 | |
%9 = getelementptr [16 x i8**], [16 x i8**]* %5, i64 0, i64 5 | |
%10 = getelementptr [16 x i8**], [16 x i8**]* %5, i64 0, i64 6 | |
%11 = getelementptr [16 x i8**], [16 x i8**]* %5, i64 0, i64 7 | |
%12 = getelementptr [16 x i8**], [16 x i8**]* %5, i64 0, i64 8 | |
%13 = bitcast [16 x i8**]* %5 to i64* | |
%14 = bitcast i8*** %6 to i8* | |
call void @llvm.memset.p0i8.i64(i8* %14, i8 0, i64 112, i32 8, i1 false) | |
store i64 28, i64* %13, align 8 | |
%15 = bitcast i8**** %4 to i64* | |
%16 = load i64, i64* %15, align 8 | |
%17 = getelementptr [16 x i8**], [16 x i8**]* %5, i64 0, i64 1 | |
%18 = bitcast i8*** %17 to i64* | |
store i64 %16, i64* %18, align 8 | |
store i8*** %.sub, i8**** %4, align 8 | |
%19 = getelementptr i8*, i8** %0, i64 13 | |
%20 = bitcast i8** %19 to i8*** | |
%21 = load i8**, i8*** %20, align 8 | |
store i8** %21, i8*** %6, align 8 | |
%22 = getelementptr i8*, i8** %0, i64 4 | |
%23 = bitcast i8** %22 to i8*** | |
%24 = load i8**, i8*** %23, align 8 | |
store i8** %24, i8*** %7, align 8 | |
store i8** %21, i8*** %8, align 8 | |
%25 = call i8** @"jlsys_fill!_47835"(i8** %21, double 0.000000e+00) | |
%26 = bitcast i8** %21 to double** | |
%27 = load double*, double** %26, align 8 | |
%28 = bitcast i8** %24 to double** | |
%29 = load double*, double** %28, align 8 | |
%30 = bitcast i8** %1 to i8*** | |
%31 = load i8**, i8*** %30, align 8 | |
%32 = bitcast i8** %31 to double** | |
%33 = load double*, double** %32, align 8 | |
%34 = load double, double* %27, align 8 | |
%35 = load double, double* %29, align 8 | |
%36 = load double, double* %33, align 8 | |
%37 = fmul double %35, %36 | |
%38 = fadd double %34, %37 | |
store double %38, double* %27, align 8 | |
%39 = getelementptr double, double* %29, i64 1 | |
%40 = load double, double* %39, align 8 | |
%41 = getelementptr double, double* %33, i64 1 | |
%42 = load double, double* %41, align 8 | |
%43 = fmul double %40, %42 | |
%44 = fadd double %38, %43 | |
store double %44, double* %27, align 8 | |
%45 = getelementptr double, double* %29, i64 2 | |
%46 = load double, double* %45, align 8 | |
%47 = getelementptr double, double* %33, i64 2 | |
%48 = load double, double* %47, align 8 | |
%49 = fmul double %46, %48 | |
%50 = fadd double %44, %49 | |
store double %50, double* %27, align 8 | |
store i8** %21, i8*** %9, align 8 | |
store i8** %24, i8*** %10, align 8 | |
store i8** %31, i8*** %11, align 8 | |
store i8** %21, i8*** %12, align 8 | |
%51 = and i8 %3, 1 | |
%52 = icmp eq i8 %51, 0 | |
br i1 %52, label %L257, label %if7 | |
if7: ; preds = %top | |
%53 = getelementptr [16 x i8**], [16 x i8**]* %5, i64 0, i64 9 | |
%54 = getelementptr [16 x i8**], [16 x i8**]* %5, i64 0, i64 10 | |
%55 = getelementptr [16 x i8**], [16 x i8**]* %5, i64 0, i64 11 | |
%56 = getelementptr [16 x i8**], [16 x i8**]* %5, i64 0, i64 12 | |
%57 = getelementptr [16 x i8**], [16 x i8**]* %5, i64 0, i64 13 | |
%58 = getelementptr [16 x i8**], [16 x i8**]* %5, i64 0, i64 14 | |
%59 = getelementptr [16 x i8**], [16 x i8**]* %5, i64 0, i64 15 | |
%60 = getelementptr i8*, i8** %0, i64 14 | |
%61 = bitcast i8** %60 to i8*** | |
%62 = load i8**, i8*** %61, align 8 | |
store i8** %62, i8*** %53, align 8 | |
%63 = bitcast i8** %62 to double** | |
%64 = load double*, double** %63, align 8 | |
%65 = getelementptr i8*, i8** %0, i64 15 | |
%66 = bitcast i8** %65 to i8*** | |
%67 = load i8**, i8*** %66, align 8 | |
store i8** %67, i8*** %54, align 8 | |
store i8** %62, i8*** %55, align 8 | |
%68 = call i8** @"julia_fill!_68088"(i8** %62, double 0.000000e+00) | |
store i8** %67, i8*** %56, align 8 | |
%69 = call i8** @"julia_fill!_68088"(i8** %67, double 0.000000e+00) | |
%70 = getelementptr i8*, i8** %0, i64 7 | |
%71 = bitcast i8** %70 to i8*** | |
%72 = load i8**, i8*** %71, align 8 | |
store i8** %72, i8*** %57, align 8 | |
%73 = bitcast i8** %72 to double** | |
%74 = load double*, double** %73, align 8 | |
%75 = getelementptr i8*, i8** %72, i64 3 | |
%76 = bitcast i8** %75 to i64* | |
%77 = load i64, i64* %76, align 8 | |
%78 = load i8**, i8*** %30, align 8 | |
%79 = bitcast i8** %78 to double** | |
%80 = load double*, double** %79, align 8 | |
br label %L190.loopexit.2 | |
L257: ; preds = %top | |
%81 = load i64, i64* %18, align 8 | |
store i64 %81, i64* %15, align 8 | |
ret void | |
L254: ; preds = %L190.loopexit.2 | |
store i8** %78, i8*** %58, align 8 | |
%82 = load i64, i64* %18, align 8 | |
store i64 %82, i64* %15, align 8 | |
ret void | |
L190.loopexit.2: ; preds = %if7, %L190.loopexit.2 | |
%"#temp#5.030" = phi i64 [ 1, %if7 ], [ %116, %L190.loopexit.2 ] | |
%83 = add nsw i64 %"#temp#5.030", -1 | |
%84 = getelementptr double, double* %74, i64 %83 | |
%85 = load double, double* %84, align 8 | |
%86 = load double, double* %80, align 8 | |
%87 = fmul double %85, %86 | |
%88 = load double, double* %64, align 8 | |
%89 = getelementptr double, double* %80, i64 %83 | |
%90 = load double, double* %89, align 8 | |
%91 = fmul double %87, %90 | |
%92 = fadd double %88, %91 | |
store double %92, double* %64, align 8 | |
%93 = add i64 %83, %77 | |
%94 = getelementptr double, double* %74, i64 %93 | |
%95 = load double, double* %94, align 8 | |
%96 = getelementptr double, double* %80, i64 1 | |
%97 = load double, double* %96, align 8 | |
%98 = fmul double %95, %97 | |
%99 = load double, double* %64, align 8 | |
%100 = getelementptr double, double* %80, i64 %83 | |
%101 = load double, double* %100, align 8 | |
%102 = fmul double %98, %101 | |
%103 = fadd double %99, %102 | |
store double %103, double* %64, align 8 | |
%104 = shl i64 %77, 1 | |
%105 = add i64 %83, %104 | |
%106 = getelementptr double, double* %74, i64 %105 | |
%107 = load double, double* %106, align 8 | |
%108 = getelementptr double, double* %80, i64 2 | |
%109 = load double, double* %108, align 8 | |
%110 = fmul double %107, %109 | |
%111 = load double, double* %64, align 8 | |
%112 = getelementptr double, double* %80, i64 %83 | |
%113 = load double, double* %112, align 8 | |
%114 = fmul double %110, %113 | |
%115 = fadd double %111, %114 | |
store double %115, double* %64, align 8 | |
store i8** %78, i8*** %59, align 8 | |
%116 = add nuw nsw i64 %"#temp#5.030", 1 | |
%117 = icmp eq i64 %116, 4 | |
br i1 %117, label %L254, label %L190.loopexit.2 | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
define void @"julia_bar!_69138"(i8**, i8**, i8**, i8) #0 !dbg !5 { | |
top: | |
%4 = alloca %SMatrix, align 8 | |
%5 = alloca %SMatrix, align 8 | |
%6 = call i8**** @jl_get_ptls_states() #3 | |
%7 = alloca [13 x i8**], align 8 | |
%.sub = getelementptr inbounds [13 x i8**], [13 x i8**]* %7, i64 0, i64 0 | |
%8 = getelementptr [13 x i8**], [13 x i8**]* %7, i64 0, i64 2 | |
%9 = getelementptr [13 x i8**], [13 x i8**]* %7, i64 0, i64 3 | |
%10 = getelementptr [13 x i8**], [13 x i8**]* %7, i64 0, i64 4 | |
%11 = getelementptr [13 x i8**], [13 x i8**]* %7, i64 0, i64 5 | |
%12 = getelementptr [13 x i8**], [13 x i8**]* %7, i64 0, i64 6 | |
%13 = getelementptr [13 x i8**], [13 x i8**]* %7, i64 0, i64 7 | |
%14 = bitcast [13 x i8**]* %7 to i64* | |
%15 = bitcast i8*** %8 to i8* | |
call void @llvm.memset.p0i8.i64(i8* %15, i8 0, i64 88, i32 8, i1 false) | |
store i64 22, i64* %14, align 8 | |
%16 = bitcast i8**** %6 to i64* | |
%17 = load i64, i64* %16, align 8 | |
%18 = getelementptr [13 x i8**], [13 x i8**]* %7, i64 0, i64 1 | |
%19 = bitcast i8*** %18 to i64* | |
store i64 %17, i64* %19, align 8 | |
store i8*** %.sub, i8**** %6, align 8 | |
%20 = getelementptr i8*, i8** %0, i64 13 | |
%21 = bitcast i8** %20 to i8*** | |
%22 = load i8**, i8*** %21, align 8 | |
store i8** %22, i8*** %8, align 8 | |
%23 = getelementptr i8*, i8** %0, i64 4 | |
%24 = bitcast i8** %23 to i8*** | |
%25 = load i8**, i8*** %24, align 8 | |
store i8** %25, i8*** %9, align 8 | |
store i8** %22, i8*** %10, align 8 | |
%26 = call i8** @"jlsys_fill!_47835"(i8** %22, double 0.000000e+00) | |
%27 = bitcast i8** %22 to double** | |
%28 = bitcast i8** %25 to double** | |
%29 = bitcast i8** %1 to i64* | |
%.unpack.elt24 = getelementptr inbounds i8*, i8** %1, i64 1 | |
%30 = bitcast i8** %.unpack.elt24 to i64* | |
%.unpack.elt26 = getelementptr inbounds i8*, i8** %1, i64 2 | |
%31 = bitcast i8** %.unpack.elt26 to i64* | |
%.unpack.elt28 = getelementptr inbounds i8*, i8** %1, i64 3 | |
%32 = bitcast i8** %.unpack.elt28 to i64* | |
%.unpack.elt30 = getelementptr inbounds i8*, i8** %1, i64 4 | |
%33 = bitcast i8** %.unpack.elt30 to i64* | |
%.unpack.elt32 = getelementptr inbounds i8*, i8** %1, i64 5 | |
%34 = bitcast i8** %.unpack.elt32 to i64* | |
%.unpack.elt34 = getelementptr inbounds i8*, i8** %1, i64 6 | |
%35 = bitcast i8** %.unpack.elt34 to i64* | |
%.unpack.elt36 = getelementptr inbounds i8*, i8** %1, i64 7 | |
%36 = bitcast i8** %.unpack.elt36 to i64* | |
%.unpack.elt38 = getelementptr inbounds i8*, i8** %1, i64 8 | |
%37 = bitcast i8** %.unpack.elt38 to i64* | |
%38 = load double*, double** %27, align 8 | |
%39 = load double, double* %38, align 8 | |
%40 = load double*, double** %28, align 8 | |
%41 = load double, double* %40, align 8 | |
%42 = bitcast i8** %1 to double* | |
%.unpack.unpack65180 = load double, double* %42, align 16 | |
%43 = fmul double %41, %.unpack.unpack65180 | |
%44 = fadd double %39, %43 | |
store double %44, double* %38, align 8 | |
%45 = getelementptr double, double* %40, i64 1 | |
%46 = load double, double* %45, align 8 | |
%47 = bitcast i8** %.unpack.elt24 to double* | |
%.unpack.unpack2564.1181 = load double, double* %47, align 8 | |
%48 = fmul double %46, %.unpack.unpack2564.1181 | |
%49 = fadd double %44, %48 | |
store double %49, double* %38, align 8 | |
%50 = getelementptr double, double* %40, i64 2 | |
%51 = load double, double* %50, align 8 | |
%52 = bitcast i8** %.unpack.elt26 to double* | |
%.unpack.unpack2763.2182 = load double, double* %52, align 16 | |
%53 = fmul double %51, %.unpack.unpack2763.2182 | |
%54 = fadd double %49, %53 | |
store double %54, double* %38, align 8 | |
store i8** %22, i8*** %11, align 8 | |
store i8** %25, i8*** %12, align 8 | |
store i8** %22, i8*** %13, align 8 | |
%55 = and i8 %3, 1 | |
%56 = icmp eq i8 %55, 0 | |
br i1 %56, label %L315, label %if19 | |
if19: ; preds = %top | |
%57 = getelementptr [13 x i8**], [13 x i8**]* %7, i64 0, i64 8 | |
%58 = getelementptr [13 x i8**], [13 x i8**]* %7, i64 0, i64 9 | |
%59 = getelementptr [13 x i8**], [13 x i8**]* %7, i64 0, i64 10 | |
%60 = getelementptr [13 x i8**], [13 x i8**]* %7, i64 0, i64 11 | |
%61 = getelementptr [13 x i8**], [13 x i8**]* %7, i64 0, i64 12 | |
%62 = getelementptr i8*, i8** %0, i64 14 | |
%63 = bitcast i8** %62 to i8*** | |
%64 = load i8**, i8*** %63, align 8 | |
store i8** %64, i8*** %57, align 8 | |
%65 = bitcast i8** %64 to double** | |
%66 = load double*, double** %65, align 8 | |
%67 = getelementptr i8*, i8** %0, i64 15 | |
%68 = bitcast i8** %67 to i8*** | |
%69 = load i8**, i8*** %68, align 8 | |
store i8** %69, i8*** %58, align 8 | |
store i8** %64, i8*** %59, align 8 | |
%70 = call i8** @"julia_fill!_68280"(i8** %64, double 0.000000e+00) | |
store i8** %69, i8*** %60, align 8 | |
%71 = call i8** @"julia_fill!_68280"(i8** %69, double 0.000000e+00) | |
%72 = getelementptr i8*, i8** %0, i64 7 | |
%73 = bitcast i8** %72 to i8*** | |
%74 = load i8**, i8*** %73, align 8 | |
store i8** %74, i8*** %61, align 8 | |
%75 = bitcast i8** %74 to double** | |
%76 = load double*, double** %75, align 8 | |
%77 = getelementptr i8*, i8** %74, i64 3 | |
%78 = bitcast i8** %77 to i64* | |
%79 = load i64, i64* %78, align 8 | |
%80 = bitcast %SMatrix* %5 to i64* | |
%81 = getelementptr inbounds %SMatrix, %SMatrix* %5, i64 0, i32 0, i64 1 | |
%82 = bitcast double* %81 to i64* | |
%83 = getelementptr inbounds %SMatrix, %SMatrix* %5, i64 0, i32 0, i64 2 | |
%84 = bitcast double* %83 to i64* | |
%85 = getelementptr inbounds %SMatrix, %SMatrix* %5, i64 0, i32 0, i64 3 | |
%86 = bitcast double* %85 to i64* | |
%87 = getelementptr inbounds %SMatrix, %SMatrix* %5, i64 0, i32 0, i64 4 | |
%88 = bitcast double* %87 to i64* | |
%89 = getelementptr inbounds %SMatrix, %SMatrix* %5, i64 0, i32 0, i64 5 | |
%90 = bitcast double* %89 to i64* | |
%91 = getelementptr inbounds %SMatrix, %SMatrix* %5, i64 0, i32 0, i64 6 | |
%92 = bitcast double* %91 to i64* | |
%93 = getelementptr inbounds %SMatrix, %SMatrix* %5, i64 0, i32 0, i64 7 | |
%94 = bitcast double* %93 to i64* | |
%95 = getelementptr inbounds %SMatrix, %SMatrix* %5, i64 0, i32 0, i64 8 | |
%96 = bitcast double* %95 to i64* | |
%97 = bitcast %SMatrix* %4 to i64* | |
%98 = getelementptr inbounds %SMatrix, %SMatrix* %4, i64 0, i32 0, i64 1 | |
%99 = bitcast double* %98 to i64* | |
%100 = getelementptr inbounds %SMatrix, %SMatrix* %4, i64 0, i32 0, i64 2 | |
%101 = bitcast double* %100 to i64* | |
%102 = getelementptr inbounds %SMatrix, %SMatrix* %4, i64 0, i32 0, i64 3 | |
%103 = bitcast double* %102 to i64* | |
%104 = getelementptr inbounds %SMatrix, %SMatrix* %4, i64 0, i32 0, i64 4 | |
%105 = bitcast double* %104 to i64* | |
%106 = getelementptr inbounds %SMatrix, %SMatrix* %4, i64 0, i32 0, i64 5 | |
%107 = bitcast double* %106 to i64* | |
%108 = getelementptr inbounds %SMatrix, %SMatrix* %4, i64 0, i32 0, i64 6 | |
%109 = bitcast double* %108 to i64* | |
%110 = getelementptr inbounds %SMatrix, %SMatrix* %4, i64 0, i32 0, i64 7 | |
%111 = bitcast double* %110 to i64* | |
%112 = getelementptr inbounds %SMatrix, %SMatrix* %4, i64 0, i32 0, i64 8 | |
%113 = bitcast double* %112 to i64* | |
br label %if20 | |
L315: ; preds = %top | |
%114 = load i64, i64* %19, align 8 | |
store i64 %114, i64* %16, align 8 | |
ret void | |
L140.loopexit: ; preds = %L210.loopexit | |
%115 = add nuw nsw i64 %"#temp#5.0168", 1 | |
%116 = icmp eq i64 %115, 4 | |
br i1 %116, label %L312, label %if20 | |
if20: ; preds = %if19, %L140.loopexit | |
%"#temp#5.0168" = phi i64 [ 1, %if19 ], [ %115, %L140.loopexit ] | |
%117 = add nsw i64 %"#temp#5.0168", -1 | |
br label %L210.loopexit | |
L312: ; preds = %L140.loopexit | |
%118 = load i64, i64* %19, align 8 | |
store i64 %118, i64* %16, align 8 | |
ret void | |
L210.loopexit: ; preds = %if20, %L210.loopexit | |
%"#temp#4.0167" = phi i64 [ 1, %if20 ], [ %133, %L210.loopexit ] | |
%.unpack.unpack107 = load i64, i64* %29, align 16 | |
%.unpack.unpack67106 = load i64, i64* %30, align 8 | |
%.unpack.unpack69105 = load i64, i64* %31, align 16 | |
%.unpack.unpack71104 = load i64, i64* %32, align 8 | |
%.unpack.unpack73103 = load i64, i64* %33, align 16 | |
%.unpack.unpack75102 = load i64, i64* %34, align 8 | |
%.unpack.unpack77101 = load i64, i64* %35, align 16 | |
%.unpack.unpack79100 = load i64, i64* %36, align 8 | |
%.unpack.unpack8199 = load i64, i64* %37, align 16 | |
store i64 %.unpack.unpack107, i64* %80, align 8 | |
store i64 %.unpack.unpack67106, i64* %82, align 8 | |
store i64 %.unpack.unpack69105, i64* %84, align 8 | |
store i64 %.unpack.unpack71104, i64* %86, align 8 | |
store i64 %.unpack.unpack73103, i64* %88, align 8 | |
store i64 %.unpack.unpack75102, i64* %90, align 8 | |
store i64 %.unpack.unpack77101, i64* %92, align 8 | |
store i64 %.unpack.unpack79100, i64* %94, align 8 | |
store i64 %.unpack.unpack8199, i64* %96, align 8 | |
%119 = add nsw i64 %"#temp#4.0167", -1 | |
%120 = mul i64 %119, %79 | |
%121 = add i64 %117, %120 | |
%122 = getelementptr double, double* %76, i64 %121 | |
%123 = load double, double* %122, align 8 | |
%124 = getelementptr %SMatrix, %SMatrix* %5, i64 0, i32 0, i64 %119 | |
%125 = load double, double* %124, align 8 | |
%126 = fmul double %123, %125 | |
%127 = load double, double* %66, align 8 | |
store i64 %.unpack.unpack107, i64* %97, align 8 | |
store i64 %.unpack.unpack67106, i64* %99, align 8 | |
store i64 %.unpack.unpack69105, i64* %101, align 8 | |
store i64 %.unpack.unpack71104, i64* %103, align 8 | |
store i64 %.unpack.unpack73103, i64* %105, align 8 | |
store i64 %.unpack.unpack75102, i64* %107, align 8 | |
store i64 %.unpack.unpack77101, i64* %109, align 8 | |
store i64 %.unpack.unpack79100, i64* %111, align 8 | |
store i64 %.unpack.unpack8199, i64* %113, align 8 | |
%128 = add nsw i64 %"#temp#5.0168", -1 | |
%129 = getelementptr %SMatrix, %SMatrix* %4, i64 0, i32 0, i64 %128 | |
%130 = load double, double* %129, align 8 | |
%131 = fmul double %126, %130 | |
%132 = fadd double %127, %131 | |
store double %132, double* %66, align 8 | |
%133 = add nuw nsw i64 %"#temp#4.0167", 1 | |
%134 = icmp eq i64 %133, 4 | |
br i1 %134, label %L140.loopexit, label %L210.loopexit | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
define void @"julia_bar!_68370"(i8**, i8**, i8**, i8) #0 !dbg !5 { | |
top: | |
%4 = alloca %SMatrix, align 8 | |
%5 = alloca %SMatrix, align 8 | |
%6 = call i8**** @jl_get_ptls_states() #3 | |
%7 = alloca [13 x i8**], align 8 | |
%.sub = getelementptr inbounds [13 x i8**], [13 x i8**]* %7, i64 0, i64 0 | |
%8 = getelementptr [13 x i8**], [13 x i8**]* %7, i64 0, i64 2 | |
%9 = getelementptr [13 x i8**], [13 x i8**]* %7, i64 0, i64 3 | |
%10 = getelementptr [13 x i8**], [13 x i8**]* %7, i64 0, i64 4 | |
%11 = getelementptr [13 x i8**], [13 x i8**]* %7, i64 0, i64 5 | |
%12 = getelementptr [13 x i8**], [13 x i8**]* %7, i64 0, i64 6 | |
%13 = getelementptr [13 x i8**], [13 x i8**]* %7, i64 0, i64 7 | |
%14 = bitcast [13 x i8**]* %7 to i64* | |
%15 = bitcast i8*** %8 to i8* | |
call void @llvm.memset.p0i8.i64(i8* %15, i8 0, i64 88, i32 8, i1 false) | |
store i64 22, i64* %14, align 8 | |
%16 = bitcast i8**** %6 to i64* | |
%17 = load i64, i64* %16, align 8 | |
%18 = getelementptr [13 x i8**], [13 x i8**]* %7, i64 0, i64 1 | |
%19 = bitcast i8*** %18 to i64* | |
store i64 %17, i64* %19, align 8 | |
store i8*** %.sub, i8**** %6, align 8 | |
%20 = getelementptr i8*, i8** %0, i64 13 | |
%21 = bitcast i8** %20 to i8*** | |
%22 = load i8**, i8*** %21, align 8 | |
store i8** %22, i8*** %8, align 8 | |
%23 = getelementptr i8*, i8** %0, i64 4 | |
%24 = bitcast i8** %23 to i8*** | |
%25 = load i8**, i8*** %24, align 8 | |
store i8** %25, i8*** %9, align 8 | |
store i8** %22, i8*** %10, align 8 | |
%26 = call i8** @"jlsys_fill!_47835"(i8** %22, double 0.000000e+00) | |
%27 = bitcast i8** %22 to double** | |
%28 = bitcast i8** %25 to double** | |
%.unpack.elt24 = getelementptr inbounds i8*, i8** %1, i64 1 | |
%.unpack.elt26 = getelementptr inbounds i8*, i8** %1, i64 2 | |
%.unpack.elt30 = getelementptr inbounds i8*, i8** %1, i64 4 | |
%.unpack.elt38 = getelementptr inbounds i8*, i8** %1, i64 8 | |
%29 = bitcast i8** %.unpack.elt38 to i64* | |
%30 = load double*, double** %27, align 8 | |
%31 = load double, double* %30, align 8 | |
%32 = load double*, double** %28, align 8 | |
%33 = load double, double* %32, align 8 | |
%34 = bitcast i8** %1 to double* | |
%.unpack.unpack65180 = load double, double* %34, align 16 | |
%35 = fmul double %33, %.unpack.unpack65180 | |
%36 = fadd double %31, %35 | |
store double %36, double* %30, align 8 | |
%37 = getelementptr double, double* %32, i64 1 | |
%38 = load double, double* %37, align 8 | |
%39 = bitcast i8** %.unpack.elt24 to double* | |
%.unpack.unpack2564.1181 = load double, double* %39, align 8 | |
%40 = fmul double %38, %.unpack.unpack2564.1181 | |
%41 = fadd double %36, %40 | |
store double %41, double* %30, align 8 | |
%42 = getelementptr double, double* %32, i64 2 | |
%43 = load double, double* %42, align 8 | |
%44 = bitcast i8** %.unpack.elt26 to double* | |
%.unpack.unpack2763.2182 = load double, double* %44, align 16 | |
%45 = fmul double %43, %.unpack.unpack2763.2182 | |
%46 = fadd double %41, %45 | |
store double %46, double* %30, align 8 | |
store i8** %22, i8*** %11, align 8 | |
store i8** %25, i8*** %12, align 8 | |
store i8** %22, i8*** %13, align 8 | |
%47 = and i8 %3, 1 | |
%48 = icmp eq i8 %47, 0 | |
br i1 %48, label %L315, label %if19 | |
if19: ; preds = %top | |
%49 = getelementptr [13 x i8**], [13 x i8**]* %7, i64 0, i64 8 | |
%50 = getelementptr [13 x i8**], [13 x i8**]* %7, i64 0, i64 9 | |
%51 = getelementptr [13 x i8**], [13 x i8**]* %7, i64 0, i64 10 | |
%52 = getelementptr [13 x i8**], [13 x i8**]* %7, i64 0, i64 11 | |
%53 = getelementptr [13 x i8**], [13 x i8**]* %7, i64 0, i64 12 | |
%54 = getelementptr i8*, i8** %0, i64 14 | |
%55 = bitcast i8** %54 to i8*** | |
%56 = load i8**, i8*** %55, align 8 | |
store i8** %56, i8*** %49, align 8 | |
%57 = bitcast i8** %56 to double** | |
%58 = load double*, double** %57, align 8 | |
%59 = getelementptr i8*, i8** %0, i64 15 | |
%60 = bitcast i8** %59 to i8*** | |
%61 = load i8**, i8*** %60, align 8 | |
store i8** %61, i8*** %50, align 8 | |
store i8** %56, i8*** %51, align 8 | |
%62 = call i8** @"julia_fill!_68088"(i8** %56, double 0.000000e+00) | |
store i8** %61, i8*** %52, align 8 | |
%63 = call i8** @"julia_fill!_68088"(i8** %61, double 0.000000e+00) | |
%64 = getelementptr i8*, i8** %0, i64 7 | |
%65 = bitcast i8** %64 to i8*** | |
%66 = load i8**, i8*** %65, align 8 | |
store i8** %66, i8*** %53, align 8 | |
%67 = bitcast i8** %66 to double** | |
%68 = load double*, double** %67, align 8 | |
%69 = getelementptr i8*, i8** %66, i64 3 | |
%70 = bitcast i8** %69 to i64* | |
%71 = load i64, i64* %70, align 8 | |
%72 = getelementptr inbounds %SMatrix, %SMatrix* %5, i64 0, i32 0, i64 4 | |
%73 = getelementptr inbounds %SMatrix, %SMatrix* %5, i64 0, i32 0, i64 8 | |
%74 = bitcast double* %73 to i64* | |
%75 = getelementptr inbounds %SMatrix, %SMatrix* %4, i64 0, i32 0, i64 4 | |
%76 = getelementptr inbounds %SMatrix, %SMatrix* %4, i64 0, i32 0, i64 8 | |
%77 = bitcast double* %76 to i64* | |
br label %if20 | |
L315: ; preds = %top | |
%78 = load i64, i64* %19, align 8 | |
store i64 %78, i64* %16, align 8 | |
ret void | |
L140.loopexit: ; preds = %L210.loopexit | |
%79 = add nuw nsw i64 %"#temp#5.0168", 1 | |
%80 = icmp eq i64 %79, 4 | |
br i1 %80, label %L312, label %if20 | |
if20: ; preds = %if19, %L140.loopexit | |
%"#temp#5.0168" = phi i64 [ 1, %if19 ], [ %79, %L140.loopexit ] | |
%81 = add nsw i64 %"#temp#5.0168", -1 | |
br label %L210.loopexit | |
L312: ; preds = %L140.loopexit | |
%82 = load i64, i64* %19, align 8 | |
store i64 %82, i64* %16, align 8 | |
ret void | |
L210.loopexit: ; preds = %if20, %L210.loopexit | |
%"#temp#4.0167" = phi i64 [ 1, %if20 ], [ %105, %L210.loopexit ] | |
%83 = bitcast i8** %1 to <4 x i64>* | |
%84 = load <4 x i64>, <4 x i64>* %83, align 16 | |
%85 = bitcast i8** %.unpack.elt30 to <4 x i64>* | |
%86 = load <4 x i64>, <4 x i64>* %85, align 16 | |
%.unpack.unpack8199 = load i64, i64* %29, align 16 | |
%87 = bitcast %SMatrix* %5 to <4 x i64>* | |
store <4 x i64> %84, <4 x i64>* %87, align 8 | |
%88 = bitcast double* %72 to <4 x i64>* | |
store <4 x i64> %86, <4 x i64>* %88, align 8 | |
store i64 %.unpack.unpack8199, i64* %74, align 8 | |
%89 = add nsw i64 %"#temp#4.0167", -1 | |
%90 = mul i64 %89, %71 | |
%91 = add i64 %81, %90 | |
%92 = getelementptr double, double* %68, i64 %91 | |
%93 = load double, double* %92, align 8 | |
%94 = getelementptr %SMatrix, %SMatrix* %5, i64 0, i32 0, i64 %89 | |
%95 = load double, double* %94, align 8 | |
%96 = fmul double %93, %95 | |
%97 = load double, double* %58, align 8 | |
%98 = bitcast %SMatrix* %4 to <4 x i64>* | |
store <4 x i64> %84, <4 x i64>* %98, align 8 | |
%99 = bitcast double* %75 to <4 x i64>* | |
store <4 x i64> %86, <4 x i64>* %99, align 8 | |
store i64 %.unpack.unpack8199, i64* %77, align 8 | |
%100 = add nsw i64 %"#temp#5.0168", -1 | |
%101 = getelementptr %SMatrix, %SMatrix* %4, i64 0, i32 0, i64 %100 | |
%102 = load double, double* %101, align 8 | |
%103 = fmul double %96, %102 | |
%104 = fadd double %97, %103 | |
store double %104, double* %58, align 8 | |
%105 = add nuw nsw i64 %"#temp#4.0167", 1 | |
%106 = icmp eq i64 %105, 4 | |
br i1 %106, label %L140.loopexit, label %L210.loopexit | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
; ModuleID = 'bar!' | |
source_filename = "bar!" | |
target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128" | |
target triple = "x86_64-apple-darwin16.4.0" | |
%SMatrix = type { [9 x double] } | |
%jl_array_t = type { i8*, i64, i16 } | |
define void @"julia_bar!_68124"(i8**, i8**, i8**, i8) #0 !dbg !5 { | |
top: | |
%4 = alloca double | |
%5 = alloca %SMatrix | |
%6 = alloca double | |
%7 = alloca i64 | |
%8 = alloca i64 | |
%9 = alloca i64 | |
%10 = alloca %SMatrix | |
%11 = alloca double | |
%12 = alloca i64 | |
%13 = alloca i64 | |
%14 = alloca i64 | |
%15 = alloca i64 | |
%16 = alloca i64 | |
%17 = alloca i64 | |
%18 = alloca i64 | |
%19 = alloca i64 | |
%20 = alloca i64 | |
%21 = alloca double | |
%22 = alloca %SMatrix | |
%23 = alloca double | |
%24 = alloca double | |
%25 = alloca i64 | |
%26 = alloca i64 | |
%27 = alloca i64 | |
%28 = alloca i64 | |
%29 = alloca i64 | |
%30 = alloca i64 | |
%bvn_derivs = alloca i8** | |
%sig_sf = alloca i8** | |
%wcs_jacobian = alloca i8** | |
%bvn_s_d = alloca i8** | |
%bvn_sig_d = alloca i8** | |
%bvn_ss_h = alloca i8** | |
%bvn_us_h = alloca i8** | |
%bvn_sigsig_h = alloca i8** | |
%31 = call i8*** @julia.gc_root_decl() | |
%32 = call i8*** @julia.gc_root_decl() | |
%33 = call i8*** @julia.gc_root_decl() | |
%34 = call i8*** @julia.gc_root_decl() | |
%35 = call i8*** @julia.gc_root_decl() | |
%36 = call i8*** @julia.gc_root_decl() | |
%37 = call i8*** @julia.gc_root_decl() | |
%38 = call i8*** @julia.gc_root_decl() | |
%39 = call i8*** @julia.gc_root_decl() | |
%40 = call i8*** @julia.gc_root_decl() | |
%41 = call i8*** @julia.gc_root_decl() | |
%42 = call i8*** @julia.gc_root_decl() | |
%43 = call i8*** @julia.gc_root_decl() | |
%44 = call i8*** @julia.gc_root_decl() | |
%45 = call i8*** @julia.gc_root_decl() | |
%46 = call i8*** @julia.gc_root_decl() | |
%47 = call i8*** @julia.gc_root_decl() | |
%48 = call i8**** @jl_get_ptls_states() | |
%49 = bitcast i8**** %48 to i8*** | |
%50 = getelementptr i8**, i8*** %49, i64 3 | |
%51 = bitcast i8*** %50 to i64** | |
%52 = load i64*, i64** %51, !tbaa !7 | |
%53 = alloca double* | |
%54 = alloca i64 | |
%55 = alloca i64 | |
%sig_id = alloca i64 | |
%"#temp#" = alloca i64 | |
%shape_id = alloca i64 | |
%"#temp#1" = alloca i64 | |
%shape_id1 = alloca i64 | |
%"#temp#2" = alloca i64 | |
%shape_id2 = alloca i64 | |
%inner_term = alloca double | |
%"#temp#3" = alloca i64 | |
%sig_id2 = alloca i64 | |
%"#temp#4" = alloca i64 | |
%sig_id1 = alloca i64 | |
%"#temp#5" = alloca i64 | |
%56 = alloca double* | |
%57 = alloca i64 | |
%58 = alloca i64 | |
%59 = alloca double* | |
%60 = alloca i64 | |
%61 = alloca i64 | |
%62 = alloca double* | |
%63 = alloca i64 | |
%64 = alloca i64 | |
%"#temp#6" = alloca i8 | |
%"#temp#7" = alloca i8 | |
%"#temp#8" = alloca i8 | |
%"#temp#9" = alloca double | |
%"#temp#10" = alloca i8 | |
%"#temp#11" = alloca i8 | |
%"#temp#12" = alloca i8 | |
%"#temp#13" = alloca double | |
%"#temp#14" = alloca i8 | |
%"#temp#15" = alloca i8 | |
%"#temp#16" = alloca i8 | |
%"#temp#17" = alloca double | |
store i8** %0, i8*** %bvn_derivs | |
store i8** %1, i8*** %sig_sf | |
store i8** %2, i8*** %wcs_jacobian | |
%65 = bitcast i8** %2 to %jl_array_t* | |
%66 = getelementptr inbounds %jl_array_t, %jl_array_t* %65, i32 0, i32 0 | |
%67 = load i8*, i8** %66, !tbaa !7 | |
%68 = bitcast i8* %67 to double* | |
store double* %68, double** %53, !tbaa !10 | |
%69 = bitcast i8** %2 to %jl_array_t* | |
%70 = getelementptr inbounds %jl_array_t, %jl_array_t* %69, i32 0, i32 1 | |
%71 = load i64, i64* %70, !tbaa !7 | |
store i64 %71, i64* %54 | |
%72 = bitcast i8** %2 to i8*** | |
%73 = getelementptr i8**, i8*** %72, i32 3 | |
%74 = bitcast i8*** %73 to i64* | |
%75 = load i64, i64* %74, !tbaa !7 | |
store i64 %75, i64* %55 | |
%76 = load i8**, i8*** %bvn_derivs, !dbg !13 | |
%77 = bitcast i8** %76 to i8*, !dbg !13 | |
%78 = getelementptr i8, i8* %77, i64 104, !dbg !13 | |
%79 = bitcast i8* %78 to i8***, !dbg !13 | |
%80 = load i8**, i8*** %79, !dbg !13, !tbaa !14 | |
store i8** %80, i8*** %31, !dbg !13 | |
store i8** %80, i8*** %bvn_s_d, !dbg !13 | |
%81 = load i8**, i8*** %bvn_derivs, !dbg !18 | |
%82 = bitcast i8** %81 to i8*, !dbg !18 | |
%83 = getelementptr i8, i8* %82, i64 32, !dbg !18 | |
%84 = bitcast i8* %83 to i8***, !dbg !18 | |
%85 = load i8**, i8*** %84, !dbg !18, !tbaa !14 | |
store i8** %85, i8*** %32, !dbg !18 | |
store i8** %85, i8*** %bvn_sig_d, !dbg !18 | |
%86 = load i8**, i8*** %bvn_s_d, !dbg !19 | |
store i8** %86, i8*** %33, !dbg !19 | |
%87 = call i8** @"jlsys_fill!_47835"(i8** %86, double 0.000000e+00), !dbg !19 | |
store i8** %87, i8*** %34, !dbg !19 | |
store i64 1, i64* %30, !dbg !20 | |
store i64 1, i64* %"#temp#1", !dbg !20, !tbaa !21 | |
br label %L29, !dbg !20 | |
L29: ; preds = %L104, %top | |
%88 = load i64, i64* %30, !dbg !20, !tbaa !21 | |
%89 = add i64 %88, 1, !dbg !20 | |
%90 = load i64, i64* %"#temp#1", !dbg !20, !tbaa !21 | |
%91 = icmp eq i64 %90, %89, !dbg !20 | |
%92 = zext i1 %91 to i8, !dbg !20 | |
%93 = xor i8 %92, 1, !dbg !20 | |
%94 = trunc i8 %93 to i1, !dbg !20 | |
%95 = xor i1 %94, true, !dbg !20 | |
br i1 %95, label %L106, label %if, !dbg !20 | |
if: ; preds = %L29 | |
%96 = bitcast i64* %29 to i8*, !dbg !20 | |
%97 = bitcast i64* %"#temp#1" to i8*, !dbg !20 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %96, i8* %97, i64 8, i32 0, i1 false), !dbg !20, !tbaa !21 | |
%98 = load i64, i64* %"#temp#1", !dbg !20, !tbaa !21 | |
%99 = add i64 %98, 1, !dbg !20 | |
store i64 %99, i64* %28, !dbg !20 | |
%100 = bitcast i64* %29 to i8*, !dbg !20 | |
%101 = bitcast i64* %shape_id to i8*, !dbg !20 | |
call void @llvm.memcpy.p0i8.p0i8.i32(i8* %101, i8* %100, i32 8, i32 1, i1 false), !dbg !20, !tbaa !21 | |
%102 = bitcast i64* %28 to i8*, !dbg !20 | |
%103 = bitcast i64* %"#temp#1" to i8*, !dbg !20 | |
call void @llvm.memcpy.p0i8.p0i8.i32(i8* %103, i8* %102, i32 8, i32 1, i1 false), !dbg !20, !tbaa !21 | |
store i64 3, i64* %27, !dbg !20 | |
store i64 1, i64* %"#temp#", !dbg !20, !tbaa !21 | |
br label %L63, !dbg !20 | |
L106: ; preds = %L29 | |
%104 = trunc i8 %3 to i1, !dbg !23 | |
%105 = xor i1 %104, true, !dbg !23 | |
br i1 %105, label %L315, label %if19, !dbg !23 | |
L63: ; preds = %L102, %if | |
%106 = load i64, i64* %27, !dbg !20, !tbaa !21 | |
%107 = add i64 %106, 1, !dbg !20 | |
%108 = load i64, i64* %"#temp#", !dbg !20, !tbaa !21 | |
%109 = icmp eq i64 %108, %107, !dbg !20 | |
%110 = zext i1 %109 to i8, !dbg !20 | |
%111 = xor i8 %110, 1, !dbg !20 | |
%112 = trunc i8 %111 to i1, !dbg !20 | |
%113 = xor i1 %112, true, !dbg !20 | |
br i1 %113, label %L104, label %if18, !dbg !20 | |
if18: ; preds = %L63 | |
%114 = bitcast i64* %26 to i8*, !dbg !20 | |
%115 = bitcast i64* %"#temp#" to i8*, !dbg !20 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %114, i8* %115, i64 8, i32 0, i1 false), !dbg !20, !tbaa !21 | |
%116 = load i64, i64* %"#temp#", !dbg !20, !tbaa !21 | |
%117 = add i64 %116, 1, !dbg !20 | |
store i64 %117, i64* %25, !dbg !20 | |
%118 = bitcast i64* %26 to i8*, !dbg !20 | |
%119 = bitcast i64* %sig_id to i8*, !dbg !20 | |
call void @llvm.memcpy.p0i8.p0i8.i32(i8* %119, i8* %118, i32 8, i32 1, i1 false), !dbg !20, !tbaa !21 | |
%120 = bitcast i64* %25 to i8*, !dbg !20 | |
%121 = bitcast i64* %"#temp#" to i8*, !dbg !20 | |
call void @llvm.memcpy.p0i8.p0i8.i32(i8* %121, i8* %120, i32 8, i32 1, i1 false), !dbg !20, !tbaa !21 | |
%122 = load i8**, i8*** %bvn_s_d, !dbg !24 | |
store i8** %122, i8*** %35, !dbg !24 | |
%123 = load i64, i64* %shape_id, !dbg !24, !tbaa !21 | |
%124 = sub i64 %123, 1, !dbg !24 | |
%125 = mul i64 %124, 1, !dbg !24 | |
%126 = add i64 0, %125, !dbg !24 | |
%127 = bitcast i8** %122 to %jl_array_t*, !dbg !24 | |
%128 = getelementptr inbounds %jl_array_t, %jl_array_t* %127, i32 0, i32 0, !dbg !24 | |
%129 = load i8*, i8** %128, !dbg !24, !tbaa !10 | |
%130 = bitcast i8* %129 to double*, !dbg !24 | |
%131 = getelementptr double, double* %130, i64 %126, !dbg !24 | |
%132 = load double, double* %131, !dbg !24, !tbaa !25 | |
store double %132, double* %24, !dbg !24 | |
%133 = load i8**, i8*** %bvn_sig_d, !dbg !24 | |
store i8** %133, i8*** %36, !dbg !24 | |
%134 = load i64, i64* %sig_id, !dbg !24, !tbaa !21 | |
%135 = sub i64 %134, 1, !dbg !24 | |
%136 = mul i64 %135, 1, !dbg !24 | |
%137 = add i64 0, %136, !dbg !24 | |
%138 = bitcast i8** %133 to %jl_array_t*, !dbg !24 | |
%139 = getelementptr inbounds %jl_array_t, %jl_array_t* %138, i32 0, i32 0, !dbg !24 | |
%140 = load i8*, i8** %139, !dbg !24, !tbaa !10 | |
%141 = bitcast i8* %140 to double*, !dbg !24 | |
%142 = getelementptr double, double* %141, i64 %137, !dbg !24 | |
%143 = load double, double* %142, !dbg !24, !tbaa !25 | |
store double %143, double* %23, !dbg !24 | |
%144 = load i8**, i8*** %sig_sf, !dbg !24 | |
%145 = bitcast i8** %144 to i8*, !dbg !24 | |
%146 = getelementptr i8, i8* %145, i64 0, !dbg !24 | |
%147 = bitcast i8* %146 to %SMatrix*, !dbg !24 | |
%148 = getelementptr %SMatrix, %SMatrix* %147, i64 0, !dbg !24 | |
%149 = load %SMatrix, %SMatrix* %148, align 16, !dbg !24, !tbaa !14 | |
store %SMatrix %149, %SMatrix* %22, !dbg !24 | |
br label %L86, !dbg !27 | |
L104: ; preds = %L63 | |
br label %L29, !dbg !24 | |
L86: ; preds = %if18 | |
%150 = bitcast %SMatrix* %22 to i8*, !dbg !32 | |
%151 = getelementptr i8, i8* %150, i64 0, !dbg !32 | |
%152 = load i64, i64* %shape_id, !dbg !32, !tbaa !21 | |
%153 = sub i64 %152, 1, !dbg !32 | |
%154 = mul i64 3, %153, !dbg !32 | |
%155 = load i64, i64* %sig_id, !dbg !32, !tbaa !21 | |
%156 = add i64 %155, %154, !dbg !32 | |
%157 = sub i64 %156, 1, !dbg !32 | |
%158 = bitcast i8* %151 to i8***, !dbg !32 | |
%159 = bitcast i8*** %158 to double*, !dbg !32 | |
%160 = getelementptr double, double* %159, i64 %157, !dbg !32 | |
%161 = bitcast double* %160 to i8*, !dbg !32 | |
%162 = bitcast double* %"#temp#9" to i8*, !dbg !32 | |
call void @llvm.memcpy.p0i8.p0i8.i32(i8* %162, i8* %161, i32 8, i32 1, i1 false), !dbg !32, !tbaa !21 | |
br label %L98, !dbg !32 | |
L98: ; preds = %L86 | |
%163 = load double, double* %23, !dbg !24, !tbaa !21 | |
%164 = load double, double* %"#temp#9", !dbg !24, !tbaa !21 | |
%165 = fmul double %163, %164, !dbg !24 | |
%166 = load double, double* %24, !dbg !24, !tbaa !21 | |
%167 = fadd double %166, %165, !dbg !24 | |
store double %167, double* %21, !dbg !24 | |
%168 = load i8**, i8*** %bvn_s_d, !dbg !24 | |
store i8** %168, i8*** %37, !dbg !24 | |
%169 = load i64, i64* %shape_id, !dbg !24, !tbaa !21 | |
%170 = sub i64 %169, 1, !dbg !24 | |
%171 = mul i64 %170, 1, !dbg !24 | |
%172 = add i64 0, %171, !dbg !24 | |
%173 = bitcast i8** %168 to %jl_array_t*, !dbg !24 | |
%174 = getelementptr inbounds %jl_array_t, %jl_array_t* %173, i32 0, i32 0, !dbg !24 | |
%175 = load i8*, i8** %174, !dbg !24, !tbaa !10 | |
%176 = load double, double* %21, !dbg !24, !tbaa !21 | |
%177 = bitcast i8* %175 to double*, !dbg !24 | |
%178 = getelementptr double, double* %177, i64 %172, !dbg !24 | |
store double %176, double* %178, !dbg !24, !tbaa !25 | |
br label %L102, !dbg !24 | |
L102: ; preds = %L98 | |
br label %L63, !dbg !24 | |
if19: ; preds = %L106 | |
%179 = load i8**, i8*** %bvn_derivs, !dbg !33 | |
%180 = bitcast i8** %179 to i8*, !dbg !33 | |
%181 = getelementptr i8, i8* %180, i64 112, !dbg !33 | |
%182 = bitcast i8* %181 to i8***, !dbg !33 | |
%183 = load i8**, i8*** %182, !dbg !33, !tbaa !14 | |
store i8** %183, i8*** %38, !dbg !33 | |
%184 = bitcast i8** %183 to %jl_array_t*, !dbg !33 | |
%185 = getelementptr inbounds %jl_array_t, %jl_array_t* %184, i32 0, i32 0, !dbg !33 | |
%186 = load i8*, i8** %185, !dbg !33, !tbaa !7 | |
%187 = bitcast i8* %186 to double*, !dbg !33 | |
store double* %187, double** %56, !dbg !33, !tbaa !10 | |
%188 = bitcast i8** %183 to %jl_array_t*, !dbg !33 | |
%189 = getelementptr inbounds %jl_array_t, %jl_array_t* %188, i32 0, i32 1, !dbg !33 | |
%190 = load i64, i64* %189, !dbg !33, !tbaa !7 | |
store i64 %190, i64* %57, !dbg !33 | |
%191 = bitcast i8** %183 to i8***, !dbg !33 | |
%192 = getelementptr i8**, i8*** %191, i32 3, !dbg !33 | |
%193 = bitcast i8*** %192 to i64*, !dbg !33 | |
%194 = load i64, i64* %193, !dbg !33, !tbaa !7 | |
store i64 %194, i64* %58, !dbg !33 | |
store i8** %183, i8*** %bvn_ss_h, !dbg !33 | |
%195 = load i8**, i8*** %bvn_derivs, !dbg !34 | |
%196 = bitcast i8** %195 to i8*, !dbg !34 | |
%197 = getelementptr i8, i8* %196, i64 120, !dbg !34 | |
%198 = bitcast i8* %197 to i8***, !dbg !34 | |
%199 = load i8**, i8*** %198, !dbg !34, !tbaa !14 | |
store i8** %199, i8*** %39, !dbg !34 | |
%200 = bitcast i8** %199 to %jl_array_t*, !dbg !34 | |
%201 = getelementptr inbounds %jl_array_t, %jl_array_t* %200, i32 0, i32 0, !dbg !34 | |
%202 = load i8*, i8** %201, !dbg !34, !tbaa !7 | |
%203 = bitcast i8* %202 to double*, !dbg !34 | |
store double* %203, double** %59, !dbg !34, !tbaa !10 | |
%204 = bitcast i8** %199 to %jl_array_t*, !dbg !34 | |
%205 = getelementptr inbounds %jl_array_t, %jl_array_t* %204, i32 0, i32 1, !dbg !34 | |
%206 = load i64, i64* %205, !dbg !34, !tbaa !7 | |
store i64 %206, i64* %60, !dbg !34 | |
%207 = bitcast i8** %199 to i8***, !dbg !34 | |
%208 = getelementptr i8**, i8*** %207, i32 3, !dbg !34 | |
%209 = bitcast i8*** %208 to i64*, !dbg !34 | |
%210 = load i64, i64* %209, !dbg !34, !tbaa !7 | |
store i64 %210, i64* %61, !dbg !34 | |
store i8** %199, i8*** %bvn_us_h, !dbg !34 | |
%211 = load i8**, i8*** %bvn_ss_h, !dbg !35 | |
store i8** %211, i8*** %40, !dbg !35 | |
%212 = call i8** @"julia_fill!_68088"(i8** %211, double 0.000000e+00), !dbg !35 | |
store i8** %212, i8*** %41, !dbg !35 | |
%213 = load i8**, i8*** %bvn_us_h, !dbg !36 | |
store i8** %213, i8*** %42, !dbg !36 | |
%214 = call i8** @"julia_fill!_68088"(i8** %213, double 0.000000e+00), !dbg !36 | |
store i8** %214, i8*** %43, !dbg !36 | |
%215 = load i8**, i8*** %bvn_derivs, !dbg !37 | |
%216 = bitcast i8** %215 to i8*, !dbg !37 | |
%217 = getelementptr i8, i8* %216, i64 56, !dbg !37 | |
%218 = bitcast i8* %217 to i8***, !dbg !37 | |
%219 = load i8**, i8*** %218, !dbg !37, !tbaa !14 | |
store i8** %219, i8*** %44, !dbg !37 | |
%220 = bitcast i8** %219 to %jl_array_t*, !dbg !37 | |
%221 = getelementptr inbounds %jl_array_t, %jl_array_t* %220, i32 0, i32 0, !dbg !37 | |
%222 = load i8*, i8** %221, !dbg !37, !tbaa !7 | |
%223 = bitcast i8* %222 to double*, !dbg !37 | |
store double* %223, double** %62, !dbg !37, !tbaa !10 | |
%224 = bitcast i8** %219 to %jl_array_t*, !dbg !37 | |
%225 = getelementptr inbounds %jl_array_t, %jl_array_t* %224, i32 0, i32 1, !dbg !37 | |
%226 = load i64, i64* %225, !dbg !37, !tbaa !7 | |
store i64 %226, i64* %63, !dbg !37 | |
%227 = bitcast i8** %219 to i8***, !dbg !37 | |
%228 = getelementptr i8**, i8*** %227, i32 3, !dbg !37 | |
%229 = bitcast i8*** %228 to i64*, !dbg !37 | |
%230 = load i64, i64* %229, !dbg !37, !tbaa !7 | |
store i64 %230, i64* %64, !dbg !37 | |
store i8** %219, i8*** %bvn_sigsig_h, !dbg !37 | |
store i64 3, i64* %20, !dbg !38 | |
store i64 1, i64* %"#temp#5", !dbg !38, !tbaa !21 | |
br label %L140, !dbg !38 | |
L315: ; preds = %L106 | |
ret void, !dbg !39 | |
L140: ; preds = %L310, %if19 | |
%231 = load i64, i64* %20, !dbg !38, !tbaa !21 | |
%232 = add i64 %231, 1, !dbg !38 | |
%233 = load i64, i64* %"#temp#5", !dbg !38, !tbaa !21 | |
%234 = icmp eq i64 %233, %232, !dbg !38 | |
%235 = zext i1 %234 to i8, !dbg !38 | |
%236 = xor i8 %235, 1, !dbg !38 | |
%237 = trunc i8 %236 to i1, !dbg !38 | |
%238 = xor i1 %237, true, !dbg !38 | |
br i1 %238, label %L312, label %if20, !dbg !38 | |
if20: ; preds = %L140 | |
%239 = bitcast i64* %19 to i8*, !dbg !38 | |
%240 = bitcast i64* %"#temp#5" to i8*, !dbg !38 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %239, i8* %240, i64 8, i32 0, i1 false), !dbg !38, !tbaa !21 | |
%241 = load i64, i64* %"#temp#5", !dbg !38, !tbaa !21 | |
%242 = add i64 %241, 1, !dbg !38 | |
store i64 %242, i64* %18, !dbg !38 | |
%243 = bitcast i64* %19 to i8*, !dbg !38 | |
%244 = bitcast i64* %sig_id1 to i8*, !dbg !38 | |
call void @llvm.memcpy.p0i8.p0i8.i32(i8* %244, i8* %243, i32 8, i32 1, i1 false), !dbg !38, !tbaa !21 | |
%245 = bitcast i64* %18 to i8*, !dbg !38 | |
%246 = bitcast i64* %"#temp#5" to i8*, !dbg !38 | |
call void @llvm.memcpy.p0i8.p0i8.i32(i8* %246, i8* %245, i32 8, i32 1, i1 false), !dbg !38, !tbaa !21 | |
store i64 3, i64* %17, !dbg !40 | |
store i64 1, i64* %"#temp#4", !dbg !40, !tbaa !21 | |
br label %L175, !dbg !40 | |
L312: ; preds = %L140 | |
ret void, !dbg !39 | |
L175: ; preds = %L308, %if20 | |
%247 = load i64, i64* %17, !dbg !40, !tbaa !21 | |
%248 = add i64 %247, 1, !dbg !40 | |
%249 = load i64, i64* %"#temp#4", !dbg !40, !tbaa !21 | |
%250 = icmp eq i64 %249, %248, !dbg !40 | |
%251 = zext i1 %250 to i8, !dbg !40 | |
%252 = xor i8 %251, 1, !dbg !40 | |
%253 = trunc i8 %252 to i1, !dbg !40 | |
%254 = xor i1 %253, true, !dbg !40 | |
br i1 %254, label %L310, label %if21, !dbg !40 | |
if21: ; preds = %L175 | |
%255 = bitcast i64* %16 to i8*, !dbg !40 | |
%256 = bitcast i64* %"#temp#4" to i8*, !dbg !40 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %255, i8* %256, i64 8, i32 0, i1 false), !dbg !40, !tbaa !21 | |
%257 = load i64, i64* %"#temp#4", !dbg !40, !tbaa !21 | |
%258 = add i64 %257, 1, !dbg !40 | |
store i64 %258, i64* %15, !dbg !40 | |
%259 = bitcast i64* %16 to i8*, !dbg !40 | |
%260 = bitcast i64* %sig_id2 to i8*, !dbg !40 | |
call void @llvm.memcpy.p0i8.p0i8.i32(i8* %260, i8* %259, i32 8, i32 1, i1 false), !dbg !40, !tbaa !21 | |
%261 = bitcast i64* %15 to i8*, !dbg !40 | |
%262 = bitcast i64* %"#temp#4" to i8*, !dbg !40 | |
call void @llvm.memcpy.p0i8.p0i8.i32(i8* %262, i8* %261, i32 8, i32 1, i1 false), !dbg !40, !tbaa !21 | |
store i64 1, i64* %14, !dbg !41 | |
store i64 1, i64* %"#temp#3", !dbg !41, !tbaa !21 | |
br label %L210, !dbg !41 | |
L310: ; preds = %L175 | |
br label %L140, !dbg !39 | |
L210: ; preds = %L306, %if21 | |
%263 = load i64, i64* %14, !dbg !41, !tbaa !21 | |
%264 = add i64 %263, 1, !dbg !41 | |
%265 = load i64, i64* %"#temp#3", !dbg !41, !tbaa !21 | |
%266 = icmp eq i64 %265, %264, !dbg !41 | |
%267 = zext i1 %266 to i8, !dbg !41 | |
%268 = xor i8 %267, 1, !dbg !41 | |
%269 = trunc i8 %268 to i1, !dbg !41 | |
%270 = xor i1 %269, true, !dbg !41 | |
br i1 %270, label %L308, label %if22, !dbg !41 | |
if22: ; preds = %L210 | |
%271 = bitcast i64* %13 to i8*, !dbg !41 | |
%272 = bitcast i64* %"#temp#3" to i8*, !dbg !41 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %271, i8* %272, i64 8, i32 0, i1 false), !dbg !41, !tbaa !21 | |
%273 = load i64, i64* %"#temp#3", !dbg !41, !tbaa !21 | |
%274 = add i64 %273, 1, !dbg !41 | |
store i64 %274, i64* %12, !dbg !41 | |
%275 = bitcast i64* %13 to i8*, !dbg !41 | |
%276 = bitcast i64* %shape_id2 to i8*, !dbg !41 | |
call void @llvm.memcpy.p0i8.p0i8.i32(i8* %276, i8* %275, i32 8, i32 1, i1 false), !dbg !41, !tbaa !21 | |
%277 = bitcast i64* %12 to i8*, !dbg !41 | |
%278 = bitcast i64* %"#temp#3" to i8*, !dbg !41 | |
call void @llvm.memcpy.p0i8.p0i8.i32(i8* %278, i8* %277, i32 8, i32 1, i1 false), !dbg !41, !tbaa !21 | |
%279 = load i8**, i8*** %bvn_sigsig_h, !dbg !42 | |
store i8** %279, i8*** %45, !dbg !42 | |
%280 = load i64, i64* %sig_id1, !dbg !42, !tbaa !21 | |
%281 = load i64, i64* %sig_id2, !dbg !42, !tbaa !21 | |
%282 = sub i64 %280, 1, !dbg !42 | |
%283 = mul i64 %282, 1, !dbg !42 | |
%284 = add i64 0, %283, !dbg !42 | |
%285 = load i64, i64* %64, !dbg !42 | |
%286 = mul i64 1, %285, !dbg !42 | |
%287 = sub i64 %281, 1, !dbg !42 | |
%288 = mul i64 %287, %286, !dbg !42 | |
%289 = add i64 %284, %288, !dbg !42 | |
%290 = load double*, double** %62, !dbg !42 | |
%291 = getelementptr double, double* %290, i64 %289, !dbg !42 | |
%292 = load double, double* %291, !dbg !42, !tbaa !25 | |
store double %292, double* %11, !dbg !42 | |
%293 = load i8**, i8*** %sig_sf, !dbg !42 | |
%294 = bitcast i8** %293 to i8*, !dbg !42 | |
%295 = getelementptr i8, i8* %294, i64 0, !dbg !42 | |
%296 = bitcast i8* %295 to %SMatrix*, !dbg !42 | |
%297 = getelementptr %SMatrix, %SMatrix* %296, i64 0, !dbg !42 | |
%298 = load %SMatrix, %SMatrix* %297, align 16, !dbg !42, !tbaa !14 | |
store %SMatrix %298, %SMatrix* %10, !dbg !42 | |
br label %L232, !dbg !43 | |
L308: ; preds = %L210 | |
br label %L175, !dbg !39 | |
L232: ; preds = %if22 | |
%299 = bitcast %SMatrix* %10 to i8*, !dbg !47 | |
%300 = getelementptr i8, i8* %299, i64 0, !dbg !47 | |
%301 = load i64, i64* %shape_id2, !dbg !47, !tbaa !21 | |
%302 = sub i64 %301, 1, !dbg !47 | |
%303 = mul i64 3, %302, !dbg !47 | |
%304 = load i64, i64* %sig_id2, !dbg !47, !tbaa !21 | |
%305 = add i64 %304, %303, !dbg !47 | |
%306 = sub i64 %305, 1, !dbg !47 | |
%307 = bitcast i8* %300 to i8***, !dbg !47 | |
%308 = bitcast i8*** %307 to double*, !dbg !47 | |
%309 = getelementptr double, double* %308, i64 %306, !dbg !47 | |
%310 = bitcast double* %309 to i8*, !dbg !47 | |
%311 = bitcast double* %"#temp#13" to i8*, !dbg !47 | |
call void @llvm.memcpy.p0i8.p0i8.i32(i8* %311, i8* %310, i32 8, i32 1, i1 false), !dbg !47, !tbaa !21 | |
br label %L244, !dbg !47 | |
L244: ; preds = %L232 | |
%312 = load double, double* %11, !dbg !42, !tbaa !21 | |
%313 = load double, double* %"#temp#13", !dbg !42, !tbaa !21 | |
%314 = fmul double %312, %313, !dbg !42 | |
store double %314, double* %inner_term, !dbg !42, !tbaa !21 | |
%315 = load i64, i64* %shape_id2, !dbg !48, !tbaa !21 | |
%316 = icmp sle i64 1, %315, !dbg !48 | |
%317 = zext i1 %316 to i8, !dbg !48 | |
%318 = trunc i8 %317 to i1, !dbg !48 | |
%319 = xor i1 %318, true, !dbg !48 | |
%320 = load i64, i64* %shape_id2, !dbg !48, !tbaa !21 | |
%321 = select i1 %319, i64 0, i64 %320, !dbg !48 | |
store i64 %321, i64* %9, !dbg !48 | |
store i64 1, i64* %"#temp#2", !dbg !48, !tbaa !21 | |
br label %L266, !dbg !48 | |
L266: ; preds = %L304, %L244 | |
%322 = load i64, i64* %9, !dbg !48, !tbaa !21 | |
%323 = add i64 %322, 1, !dbg !48 | |
%324 = load i64, i64* %"#temp#2", !dbg !48, !tbaa !21 | |
%325 = icmp eq i64 %324, %323, !dbg !48 | |
%326 = zext i1 %325 to i8, !dbg !48 | |
%327 = xor i8 %326, 1, !dbg !48 | |
%328 = trunc i8 %327 to i1, !dbg !48 | |
%329 = xor i1 %328, true, !dbg !48 | |
br i1 %329, label %L306, label %if23, !dbg !48 | |
if23: ; preds = %L266 | |
%330 = bitcast i64* %8 to i8*, !dbg !48 | |
%331 = bitcast i64* %"#temp#2" to i8*, !dbg !48 | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %330, i8* %331, i64 8, i32 0, i1 false), !dbg !48, !tbaa !21 | |
%332 = load i64, i64* %"#temp#2", !dbg !48, !tbaa !21 | |
%333 = add i64 %332, 1, !dbg !48 | |
store i64 %333, i64* %7, !dbg !48 | |
%334 = bitcast i64* %8 to i8*, !dbg !48 | |
%335 = bitcast i64* %shape_id1 to i8*, !dbg !48 | |
call void @llvm.memcpy.p0i8.p0i8.i32(i8* %335, i8* %334, i32 8, i32 1, i1 false), !dbg !48, !tbaa !21 | |
%336 = bitcast i64* %7 to i8*, !dbg !48 | |
%337 = bitcast i64* %"#temp#2" to i8*, !dbg !48 | |
call void @llvm.memcpy.p0i8.p0i8.i32(i8* %337, i8* %336, i32 8, i32 1, i1 false), !dbg !48, !tbaa !21 | |
%338 = load i8**, i8*** %bvn_ss_h, !dbg !39 | |
store i8** %338, i8*** %46, !dbg !39 | |
%339 = load i64, i64* %shape_id1, !dbg !39, !tbaa !21 | |
%340 = load i64, i64* %shape_id2, !dbg !39, !tbaa !21 | |
%341 = sub i64 %339, 1, !dbg !39 | |
%342 = mul i64 %341, 1, !dbg !39 | |
%343 = add i64 0, %342, !dbg !39 | |
%344 = load i64, i64* %58, !dbg !39 | |
%345 = mul i64 1, %344, !dbg !39 | |
%346 = sub i64 %340, 1, !dbg !39 | |
%347 = mul i64 %346, %345, !dbg !39 | |
%348 = add i64 %343, %347, !dbg !39 | |
%349 = load double*, double** %56, !dbg !39 | |
%350 = getelementptr double, double* %349, i64 %348, !dbg !39 | |
%351 = load double, double* %350, !dbg !39, !tbaa !25 | |
store double %351, double* %6, !dbg !39 | |
%352 = load i8**, i8*** %sig_sf, !dbg !39 | |
%353 = bitcast i8** %352 to i8*, !dbg !39 | |
%354 = getelementptr i8, i8* %353, i64 0, !dbg !39 | |
%355 = bitcast i8* %354 to %SMatrix*, !dbg !39 | |
%356 = getelementptr %SMatrix, %SMatrix* %355, i64 0, !dbg !39 | |
%357 = load %SMatrix, %SMatrix* %356, align 16, !dbg !39, !tbaa !14 | |
store %SMatrix %357, %SMatrix* %5, !dbg !39 | |
br label %L288, !dbg !49 | |
L306: ; preds = %L266 | |
br label %L210, !dbg !39 | |
L288: ; preds = %if23 | |
%358 = bitcast %SMatrix* %5 to i8*, !dbg !53 | |
%359 = getelementptr i8, i8* %358, i64 0, !dbg !53 | |
%360 = load i64, i64* %shape_id1, !dbg !53, !tbaa !21 | |
%361 = sub i64 %360, 1, !dbg !53 | |
%362 = mul i64 3, %361, !dbg !53 | |
%363 = load i64, i64* %sig_id1, !dbg !53, !tbaa !21 | |
%364 = add i64 %363, %362, !dbg !53 | |
%365 = sub i64 %364, 1, !dbg !53 | |
%366 = bitcast i8* %359 to i8***, !dbg !53 | |
%367 = bitcast i8*** %366 to double*, !dbg !53 | |
%368 = getelementptr double, double* %367, i64 %365, !dbg !53 | |
%369 = bitcast double* %368 to i8*, !dbg !53 | |
%370 = bitcast double* %"#temp#17" to i8*, !dbg !53 | |
call void @llvm.memcpy.p0i8.p0i8.i32(i8* %370, i8* %369, i32 8, i32 1, i1 false), !dbg !53, !tbaa !21 | |
br label %L300, !dbg !53 | |
L300: ; preds = %L288 | |
%371 = load double, double* %inner_term, !dbg !39, !tbaa !21 | |
%372 = load double, double* %"#temp#17", !dbg !39, !tbaa !21 | |
%373 = fmul double %371, %372, !dbg !39 | |
%374 = load double, double* %6, !dbg !39, !tbaa !21 | |
%375 = fadd double %374, %373, !dbg !39 | |
store double %375, double* %4, !dbg !39 | |
%376 = load i8**, i8*** %bvn_ss_h, !dbg !39 | |
store i8** %376, i8*** %47, !dbg !39 | |
%377 = load i64, i64* %shape_id1, !dbg !39, !tbaa !21 | |
%378 = load i64, i64* %shape_id2, !dbg !39, !tbaa !21 | |
%379 = sub i64 %377, 1, !dbg !39 | |
%380 = mul i64 %379, 1, !dbg !39 | |
%381 = add i64 0, %380, !dbg !39 | |
%382 = load i64, i64* %58, !dbg !39 | |
%383 = mul i64 1, %382, !dbg !39 | |
%384 = sub i64 %378, 1, !dbg !39 | |
%385 = mul i64 %384, %383, !dbg !39 | |
%386 = add i64 %381, %385, !dbg !39 | |
%387 = load double*, double** %56, !dbg !39 | |
%388 = load double, double* %4, !dbg !39, !tbaa !21 | |
%389 = getelementptr double, double* %387, i64 %386, !dbg !39 | |
store double %388, double* %389, !dbg !39, !tbaa !25 | |
br label %L304, !dbg !39 | |
L304: ; preds = %L300 | |
br label %L266, !dbg !39 | |
} | |
define i8** @"jlcall_bar!_68123"(i8**, i8***, i32) #0 { | |
top: | |
%3 = call i8**** @jl_get_ptls_states() | |
%4 = bitcast i8**** %3 to i8*** | |
%5 = getelementptr i8**, i8*** %4, i64 3 | |
%6 = bitcast i8*** %5 to i64** | |
%7 = load i64*, i64** %6, !tbaa !7 | |
%8 = getelementptr i8**, i8*** %1, i64 0 | |
%9 = load i8**, i8*** %8 | |
%10 = getelementptr i8**, i8*** %1, i64 1 | |
%11 = load i8**, i8*** %10 | |
%12 = getelementptr i8**, i8*** %1, i64 2 | |
%13 = load i8**, i8*** %12 | |
%14 = getelementptr i8**, i8*** %1, i64 3 | |
%15 = load i8**, i8*** %14 | |
%16 = bitcast i8** %15 to i8* | |
%17 = load i8, i8* %16 | |
call void @"julia_bar!_68124"(i8** %9, i8** %11, i8** %13, i8 %17) | |
ret i8** inttoptr (i64 4611883024 to i8**) | |
} | |
declare i8**** @jl_get_ptls_states() | |
declare i8*** @julia.gc_root_decl() | |
declare i8** @"jlsys_fill!_47835"(i8**, double) | |
declare void @julia.gc_root_kill(i8***) | |
; Function Attrs: argmemonly nounwind | |
declare void @llvm.memcpy.p0i8.p0i8.i64(i8* nocapture writeonly, i8* nocapture readonly, i64, i32, i1) #1 | |
; Function Attrs: argmemonly nounwind | |
declare void @llvm.memcpy.p0i8.p0i8.i32(i8* nocapture writeonly, i8* nocapture readonly, i32, i32, i1) #1 | |
declare i8** @"julia_fill!_68088"(i8**, double) | |
attributes #0 = { "no-frame-pointer-elim"="true" } | |
attributes #1 = { argmemonly nounwind } | |
!llvm.module.flags = !{!0, !1} | |
!llvm.dbg.cu = !{!2} | |
!0 = !{i32 2, !"Dwarf Version", i32 4} | |
!1 = !{i32 1, !"Debug Info Version", i32 3} | |
!2 = distinct !DICompileUnit(language: DW_LANG_C89, file: !3, producer: "julia", isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, enums: !4) | |
!3 = !DIFile(filename: "/Users/andreasnoack/Desktop/testCeleste.jl", directory: ".") | |
!4 = !{} | |
!5 = distinct !DISubprogram(name: "bar!", linkageName: "julia_bar!_68124", scope: null, file: !3, type: !6, isLocal: false, isDefinition: true, isOptimized: true, unit: !2, variables: !4) | |
!6 = !DISubroutineType(types: !4) | |
!7 = !{!8, !8, i64 0, i64 1} | |
!8 = !{!"jtbaa_const", !9, i64 0} | |
!9 = !{!"jtbaa"} | |
!10 = !{!11, !11, i64 0} | |
!11 = !{!"jtbaa_arrayptr", !12, i64 0} | |
!12 = !{!"jtbaa_array", !9, i64 0} | |
!13 = !DILocation(line: 46, scope: !5) | |
!14 = !{!15, !15, i64 0} | |
!15 = !{!"jtbaa_mutab", !16, i64 0} | |
!16 = !{!"jtbaa_value", !17, i64 0} | |
!17 = !{!"jtbaa_data", !9, i64 0} | |
!18 = !DILocation(line: 47, scope: !5) | |
!19 = !DILocation(line: 49, scope: !5) | |
!20 = !DILocation(line: 50, scope: !5) | |
!21 = !{!22, !22, i64 0} | |
!22 = !{!"jtbaa_stack", !9, i64 0} | |
!23 = !DILocation(line: 54, scope: !5) | |
!24 = !DILocation(line: 51, scope: !5) | |
!25 = !{!26, !26, i64 0} | |
!26 = !{!"jtbaa_arraybuf", !17, i64 0} | |
!27 = !DILocation(line: 176, scope: !28, inlinedAt: !30) | |
!28 = distinct !DISubprogram(name: "macro expansion;", linkageName: "macro expansion", scope: !29, file: !29, type: !6, isLocal: false, isDefinition: true, isOptimized: true, unit: !2, variables: !4) | |
!29 = !DIFile(filename: "/Users/andreasnoack/.julia/v0.6/StaticArrays/src/indexing.jl", directory: ".") | |
!30 = !DILocation(line: 174, scope: !31, inlinedAt: !24) | |
!31 = distinct !DISubprogram(name: "getindex;", linkageName: "getindex", scope: !29, file: !29, type: !6, isLocal: false, isDefinition: true, isOptimized: true, unit: !2, variables: !4) | |
!32 = !DILocation(line: 180, scope: !28, inlinedAt: !30) | |
!33 = !DILocation(line: 57, scope: !5) | |
!34 = !DILocation(line: 58, scope: !5) | |
!35 = !DILocation(line: 60, scope: !5) | |
!36 = !DILocation(line: 61, scope: !5) | |
!37 = !DILocation(line: 72, scope: !5) | |
!38 = !DILocation(line: 73, scope: !5) | |
!39 = !DILocation(line: 79, scope: !5) | |
!40 = !DILocation(line: 74, scope: !5) | |
!41 = !DILocation(line: 75, scope: !5) | |
!42 = !DILocation(line: 76, scope: !5) | |
!43 = !DILocation(line: 176, scope: !44, inlinedAt: !45) | |
!44 = distinct !DISubprogram(name: "macro expansion;", linkageName: "macro expansion", scope: !29, file: !29, type: !6, isLocal: false, isDefinition: true, isOptimized: true, unit: !2, variables: !4) | |
!45 = !DILocation(line: 174, scope: !46, inlinedAt: !42) | |
!46 = distinct !DISubprogram(name: "getindex;", linkageName: "getindex", scope: !29, file: !29, type: !6, isLocal: false, isDefinition: true, isOptimized: true, unit: !2, variables: !4) | |
!47 = !DILocation(line: 180, scope: !44, inlinedAt: !45) | |
!48 = !DILocation(line: 78, scope: !5) | |
!49 = !DILocation(line: 176, scope: !50, inlinedAt: !51) | |
!50 = distinct !DISubprogram(name: "macro expansion;", linkageName: "macro expansion", scope: !29, file: !29, type: !6, isLocal: false, isDefinition: true, isOptimized: true, unit: !2, variables: !4) | |
!51 = !DILocation(line: 174, scope: !52, inlinedAt: !39) | |
!52 = distinct !DISubprogram(name: "getindex;", linkageName: "getindex", scope: !29, file: !29, type: !6, isLocal: false, isDefinition: true, isOptimized: true, unit: !2, variables: !4) | |
!53 = !DILocation(line: 180, scope: !50, inlinedAt: !51) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
; ModuleID = 'bar!' | |
source_filename = "bar!" | |
target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128" | |
target triple = "x86_64-apple-darwin16.4.0" | |
%SMatrix = type { [9 x double] } | |
%jl_array_t = type { i8*, i64, i16 } | |
define void @"julia_bar!_68285"(i8**, i8**, i8**, i8) #0 !dbg !5 { | |
top: | |
%4 = alloca double | |
%5 = alloca %SMatrix | |
%6 = alloca double | |
%7 = alloca i64 | |
%8 = alloca i64 | |
%9 = alloca i64 | |
%10 = alloca %SMatrix | |
%11 = alloca double | |
%12 = alloca i64 | |
%13 = alloca i64 | |
%14 = alloca i64 | |
%15 = alloca i64 | |
%16 = alloca i64 | |
%17 = alloca i64 | |
%18 = alloca i64 | |
%19 = alloca i64 | |
%20 = alloca i64 | |
%21 = alloca double | |
%22 = alloca %SMatrix | |
%23 = alloca double | |
%24 = alloca double | |
%25 = alloca i64 | |
%26 = alloca i64 | |
%27 = alloca i64 | |
%28 = alloca i64 | |
%29 = alloca i64 | |
%30 = alloca i64 | |
%bvn_derivs = alloca i8** | |
%sig_sf = alloca i8** | |
%wcs_jacobian = alloca i8** | |
%bvn_s_d = alloca i8** | |
%bvn_sig_d = alloca i8** | |
%bvn_ss_h = alloca i8** | |
%bvn_us_h = alloca i8** | |
%bvn_sigsig_h = alloca i8** | |
%31 = call i8*** @julia.gc_root_decl() | |
%32 = call i8*** @julia.gc_root_decl() | |
%33 = call i8*** @julia.gc_root_decl() | |
%34 = call i8*** @julia.gc_root_decl() | |
%35 = call i8*** @julia.gc_root_decl() | |
%36 = call i8*** @julia.gc_root_decl() | |
%37 = call i8*** @julia.gc_root_decl() | |
%38 = call i8*** @julia.gc_root_decl() | |
%39 = call i8*** @julia.gc_root_decl() | |
%40 = call i8*** @julia.gc_root_decl() | |
%41 = call i8*** @julia.gc_root_decl() | |
%42 = call i8*** @julia.gc_root_decl() | |
%43 = call i8*** @julia.gc_root_decl() | |
%44 = call i8*** @julia.gc_root_decl() | |
%45 = call i8*** @julia.gc_root_decl() | |
%46 = call i8*** @julia.gc_root_decl() | |
%47 = call i8*** @julia.gc_root_decl() | |
%48 = call i8**** @jl_get_ptls_states() | |
%49 = bitcast i8**** %48 to i8*** | |
%50 = getelementptr i8**, i8*** %49, i64 3 | |
%51 = bitcast i8*** %50 to i64** | |
%52 = load i64*, i64** %51 | |
%53 = alloca double* | |
%54 = alloca i64 | |
%55 = alloca i64 | |
%sig_id = alloca i64 | |
%"#temp#" = alloca i64 | |
%shape_id = alloca i64 | |
%"#temp#1" = alloca i64 | |
%shape_id1 = alloca i64 | |
%"#temp#2" = alloca i64 | |
%shape_id2 = alloca i64 | |
%inner_term = alloca double | |
%"#temp#3" = alloca i64 | |
%sig_id2 = alloca i64 | |
%"#temp#4" = alloca i64 | |
%sig_id1 = alloca i64 | |
%"#temp#5" = alloca i64 | |
%56 = alloca double* | |
%57 = alloca i64 | |
%58 = alloca i64 | |
%59 = alloca double* | |
%60 = alloca i64 | |
%61 = alloca i64 | |
%62 = alloca double* | |
%63 = alloca i64 | |
%64 = alloca i64 | |
%"#temp#6" = alloca i8 | |
%"#temp#7" = alloca i8 | |
%"#temp#8" = alloca i8 | |
%"#temp#9" = alloca double | |
%"#temp#10" = alloca i8 | |
%"#temp#11" = alloca i8 | |
%"#temp#12" = alloca i8 | |
%"#temp#13" = alloca double | |
%"#temp#14" = alloca i8 | |
%"#temp#15" = alloca i8 | |
%"#temp#16" = alloca i8 | |
%"#temp#17" = alloca double | |
store i8** %0, i8*** %bvn_derivs | |
store i8** %1, i8*** %sig_sf | |
store i8** %2, i8*** %wcs_jacobian | |
%65 = bitcast i8** %2 to %jl_array_t* | |
%66 = getelementptr inbounds %jl_array_t, %jl_array_t* %65, i32 0, i32 0 | |
%67 = load i8*, i8** %66 | |
%68 = bitcast i8* %67 to double* | |
store double* %68, double** %53 | |
%69 = bitcast i8** %2 to %jl_array_t* | |
%70 = getelementptr inbounds %jl_array_t, %jl_array_t* %69, i32 0, i32 1 | |
%71 = load i64, i64* %70 | |
store i64 %71, i64* %54 | |
%72 = bitcast i8** %2 to i8*** | |
%73 = getelementptr i8**, i8*** %72, i32 3 | |
%74 = bitcast i8*** %73 to i64* | |
%75 = load i64, i64* %74 | |
store i64 %75, i64* %55 | |
%76 = load i8**, i8*** %bvn_derivs | |
%77 = bitcast i8** %76 to i8* | |
%78 = getelementptr i8, i8* %77, i64 104 | |
%79 = bitcast i8* %78 to i8*** | |
%80 = load i8**, i8*** %79 | |
store i8** %80, i8*** %31 | |
store i8** %80, i8*** %bvn_s_d | |
%81 = load i8**, i8*** %bvn_derivs | |
%82 = bitcast i8** %81 to i8* | |
%83 = getelementptr i8, i8* %82, i64 32 | |
%84 = bitcast i8* %83 to i8*** | |
%85 = load i8**, i8*** %84 | |
store i8** %85, i8*** %32 | |
store i8** %85, i8*** %bvn_sig_d | |
%86 = load i8**, i8*** %bvn_s_d | |
store i8** %86, i8*** %33 | |
%87 = call i8** @"jlsys_fill!_47835"(i8** %86, double 0.000000e+00) | |
store i8** %87, i8*** %34 | |
store i64 1, i64* %30 | |
store i64 1, i64* %"#temp#1" | |
br label %L29 | |
L29: ; preds = %L104, %top | |
%88 = load i64, i64* %30 | |
%89 = add i64 %88, 1 | |
%90 = load i64, i64* %"#temp#1" | |
%91 = icmp eq i64 %90, %89 | |
%92 = zext i1 %91 to i8 | |
%93 = xor i8 %92, 1 | |
%94 = trunc i8 %93 to i1 | |
%95 = xor i1 %94, true | |
br i1 %95, label %L106, label %if | |
if: ; preds = %L29 | |
%96 = bitcast i64* %29 to i8* | |
%97 = bitcast i64* %"#temp#1" to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %96, i8* %97, i64 8, i32 0, i1 false) | |
%98 = load i64, i64* %"#temp#1" | |
%99 = add i64 %98, 1 | |
store i64 %99, i64* %28 | |
%100 = bitcast i64* %29 to i8* | |
%101 = bitcast i64* %shape_id to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i32(i8* %101, i8* %100, i32 8, i32 1, i1 false) | |
%102 = bitcast i64* %28 to i8* | |
%103 = bitcast i64* %"#temp#1" to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i32(i8* %103, i8* %102, i32 8, i32 1, i1 false) | |
store i64 3, i64* %27 | |
store i64 1, i64* %"#temp#" | |
br label %L63 | |
L106: ; preds = %L29 | |
%104 = trunc i8 %3 to i1 | |
%105 = xor i1 %104, true | |
br i1 %105, label %L315, label %if19 | |
L63: ; preds = %L102, %if | |
%106 = load i64, i64* %27 | |
%107 = add i64 %106, 1 | |
%108 = load i64, i64* %"#temp#" | |
%109 = icmp eq i64 %108, %107 | |
%110 = zext i1 %109 to i8 | |
%111 = xor i8 %110, 1 | |
%112 = trunc i8 %111 to i1 | |
%113 = xor i1 %112, true | |
br i1 %113, label %L104, label %if18 | |
if18: ; preds = %L63 | |
%114 = bitcast i64* %26 to i8* | |
%115 = bitcast i64* %"#temp#" to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %114, i8* %115, i64 8, i32 0, i1 false) | |
%116 = load i64, i64* %"#temp#" | |
%117 = add i64 %116, 1 | |
store i64 %117, i64* %25 | |
%118 = bitcast i64* %26 to i8* | |
%119 = bitcast i64* %sig_id to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i32(i8* %119, i8* %118, i32 8, i32 1, i1 false) | |
%120 = bitcast i64* %25 to i8* | |
%121 = bitcast i64* %"#temp#" to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i32(i8* %121, i8* %120, i32 8, i32 1, i1 false) | |
%122 = load i8**, i8*** %bvn_s_d | |
store i8** %122, i8*** %35 | |
%123 = load i64, i64* %shape_id | |
%124 = sub i64 %123, 1 | |
%125 = mul i64 %124, 1 | |
%126 = add i64 0, %125 | |
%127 = bitcast i8** %122 to %jl_array_t* | |
%128 = getelementptr inbounds %jl_array_t, %jl_array_t* %127, i32 0, i32 0 | |
%129 = load i8*, i8** %128 | |
%130 = bitcast i8* %129 to double* | |
%131 = getelementptr double, double* %130, i64 %126 | |
%132 = load double, double* %131 | |
store double %132, double* %24 | |
%133 = load i8**, i8*** %bvn_sig_d | |
store i8** %133, i8*** %36 | |
%134 = load i64, i64* %sig_id | |
%135 = sub i64 %134, 1 | |
%136 = mul i64 %135, 1 | |
%137 = add i64 0, %136 | |
%138 = bitcast i8** %133 to %jl_array_t* | |
%139 = getelementptr inbounds %jl_array_t, %jl_array_t* %138, i32 0, i32 0 | |
%140 = load i8*, i8** %139 | |
%141 = bitcast i8* %140 to double* | |
%142 = getelementptr double, double* %141, i64 %137 | |
%143 = load double, double* %142 | |
store double %143, double* %23 | |
%144 = load i8**, i8*** %sig_sf | |
%145 = bitcast i8** %144 to i8* | |
%146 = getelementptr i8, i8* %145, i64 0 | |
%147 = bitcast i8* %146 to %SMatrix* | |
%148 = getelementptr %SMatrix, %SMatrix* %147, i64 0 | |
%149 = load %SMatrix, %SMatrix* %148, align 16 | |
store %SMatrix %149, %SMatrix* %22 | |
br label %L86 | |
L104: ; preds = %L63 | |
br label %L29 | |
L86: ; preds = %if18 | |
%150 = bitcast %SMatrix* %22 to i8* | |
%151 = getelementptr i8, i8* %150, i64 0 | |
%152 = load i64, i64* %shape_id | |
%153 = sub i64 %152, 1 | |
%154 = mul i64 3, %153 | |
%155 = load i64, i64* %sig_id | |
%156 = add i64 %155, %154 | |
%157 = sub i64 %156, 1 | |
%158 = bitcast i8* %151 to i8*** | |
%159 = bitcast i8*** %158 to double* | |
%160 = getelementptr double, double* %159, i64 %157 | |
%161 = bitcast double* %160 to i8* | |
%162 = bitcast double* %"#temp#9" to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i32(i8* %162, i8* %161, i32 8, i32 1, i1 false) | |
br label %L98 | |
L98: ; preds = %L86 | |
%163 = load double, double* %23 | |
%164 = load double, double* %"#temp#9" | |
%165 = fmul double %163, %164 | |
%166 = load double, double* %24 | |
%167 = fadd double %166, %165 | |
store double %167, double* %21 | |
%168 = load i8**, i8*** %bvn_s_d | |
store i8** %168, i8*** %37 | |
%169 = load i64, i64* %shape_id | |
%170 = sub i64 %169, 1 | |
%171 = mul i64 %170, 1 | |
%172 = add i64 0, %171 | |
%173 = bitcast i8** %168 to %jl_array_t* | |
%174 = getelementptr inbounds %jl_array_t, %jl_array_t* %173, i32 0, i32 0 | |
%175 = load i8*, i8** %174 | |
%176 = load double, double* %21 | |
%177 = bitcast i8* %175 to double* | |
%178 = getelementptr double, double* %177, i64 %172 | |
store double %176, double* %178 | |
br label %L102 | |
L102: ; preds = %L98 | |
br label %L63 | |
if19: ; preds = %L106 | |
%179 = load i8**, i8*** %bvn_derivs | |
%180 = bitcast i8** %179 to i8* | |
%181 = getelementptr i8, i8* %180, i64 112 | |
%182 = bitcast i8* %181 to i8*** | |
%183 = load i8**, i8*** %182 | |
store i8** %183, i8*** %38 | |
%184 = bitcast i8** %183 to %jl_array_t* | |
%185 = getelementptr inbounds %jl_array_t, %jl_array_t* %184, i32 0, i32 0 | |
%186 = load i8*, i8** %185 | |
%187 = bitcast i8* %186 to double* | |
store double* %187, double** %56 | |
%188 = bitcast i8** %183 to %jl_array_t* | |
%189 = getelementptr inbounds %jl_array_t, %jl_array_t* %188, i32 0, i32 1 | |
%190 = load i64, i64* %189 | |
store i64 %190, i64* %57 | |
%191 = bitcast i8** %183 to i8*** | |
%192 = getelementptr i8**, i8*** %191, i32 3 | |
%193 = bitcast i8*** %192 to i64* | |
%194 = load i64, i64* %193 | |
store i64 %194, i64* %58 | |
store i8** %183, i8*** %bvn_ss_h | |
%195 = load i8**, i8*** %bvn_derivs | |
%196 = bitcast i8** %195 to i8* | |
%197 = getelementptr i8, i8* %196, i64 120 | |
%198 = bitcast i8* %197 to i8*** | |
%199 = load i8**, i8*** %198 | |
store i8** %199, i8*** %39 | |
%200 = bitcast i8** %199 to %jl_array_t* | |
%201 = getelementptr inbounds %jl_array_t, %jl_array_t* %200, i32 0, i32 0 | |
%202 = load i8*, i8** %201 | |
%203 = bitcast i8* %202 to double* | |
store double* %203, double** %59 | |
%204 = bitcast i8** %199 to %jl_array_t* | |
%205 = getelementptr inbounds %jl_array_t, %jl_array_t* %204, i32 0, i32 1 | |
%206 = load i64, i64* %205 | |
store i64 %206, i64* %60 | |
%207 = bitcast i8** %199 to i8*** | |
%208 = getelementptr i8**, i8*** %207, i32 3 | |
%209 = bitcast i8*** %208 to i64* | |
%210 = load i64, i64* %209 | |
store i64 %210, i64* %61 | |
store i8** %199, i8*** %bvn_us_h | |
%211 = load i8**, i8*** %bvn_ss_h | |
store i8** %211, i8*** %40 | |
%212 = call i8** @"julia_fill!_68090"(i8** %211, double 0.000000e+00) | |
store i8** %212, i8*** %41 | |
%213 = load i8**, i8*** %bvn_us_h | |
store i8** %213, i8*** %42 | |
%214 = call i8** @"julia_fill!_68090"(i8** %213, double 0.000000e+00) | |
store i8** %214, i8*** %43 | |
%215 = load i8**, i8*** %bvn_derivs | |
%216 = bitcast i8** %215 to i8* | |
%217 = getelementptr i8, i8* %216, i64 56 | |
%218 = bitcast i8* %217 to i8*** | |
%219 = load i8**, i8*** %218 | |
store i8** %219, i8*** %44 | |
%220 = bitcast i8** %219 to %jl_array_t* | |
%221 = getelementptr inbounds %jl_array_t, %jl_array_t* %220, i32 0, i32 0 | |
%222 = load i8*, i8** %221 | |
%223 = bitcast i8* %222 to double* | |
store double* %223, double** %62 | |
%224 = bitcast i8** %219 to %jl_array_t* | |
%225 = getelementptr inbounds %jl_array_t, %jl_array_t* %224, i32 0, i32 1 | |
%226 = load i64, i64* %225 | |
store i64 %226, i64* %63 | |
%227 = bitcast i8** %219 to i8*** | |
%228 = getelementptr i8**, i8*** %227, i32 3 | |
%229 = bitcast i8*** %228 to i64* | |
%230 = load i64, i64* %229 | |
store i64 %230, i64* %64 | |
store i8** %219, i8*** %bvn_sigsig_h | |
store i64 3, i64* %20 | |
store i64 1, i64* %"#temp#5" | |
br label %L140 | |
L315: ; preds = %L106 | |
ret void | |
L140: ; preds = %L310, %if19 | |
%231 = load i64, i64* %20 | |
%232 = add i64 %231, 1 | |
%233 = load i64, i64* %"#temp#5" | |
%234 = icmp eq i64 %233, %232 | |
%235 = zext i1 %234 to i8 | |
%236 = xor i8 %235, 1 | |
%237 = trunc i8 %236 to i1 | |
%238 = xor i1 %237, true | |
br i1 %238, label %L312, label %if20 | |
if20: ; preds = %L140 | |
%239 = bitcast i64* %19 to i8* | |
%240 = bitcast i64* %"#temp#5" to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %239, i8* %240, i64 8, i32 0, i1 false) | |
%241 = load i64, i64* %"#temp#5" | |
%242 = add i64 %241, 1 | |
store i64 %242, i64* %18 | |
%243 = bitcast i64* %19 to i8* | |
%244 = bitcast i64* %sig_id1 to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i32(i8* %244, i8* %243, i32 8, i32 1, i1 false) | |
%245 = bitcast i64* %18 to i8* | |
%246 = bitcast i64* %"#temp#5" to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i32(i8* %246, i8* %245, i32 8, i32 1, i1 false) | |
store i64 3, i64* %17 | |
store i64 1, i64* %"#temp#4" | |
br label %L175 | |
L312: ; preds = %L140 | |
ret void | |
L175: ; preds = %L308, %if20 | |
%247 = load i64, i64* %17 | |
%248 = add i64 %247, 1 | |
%249 = load i64, i64* %"#temp#4" | |
%250 = icmp eq i64 %249, %248 | |
%251 = zext i1 %250 to i8 | |
%252 = xor i8 %251, 1 | |
%253 = trunc i8 %252 to i1 | |
%254 = xor i1 %253, true | |
br i1 %254, label %L310, label %if21 | |
if21: ; preds = %L175 | |
%255 = bitcast i64* %16 to i8* | |
%256 = bitcast i64* %"#temp#4" to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %255, i8* %256, i64 8, i32 0, i1 false) | |
%257 = load i64, i64* %"#temp#4" | |
%258 = add i64 %257, 1 | |
store i64 %258, i64* %15 | |
%259 = bitcast i64* %16 to i8* | |
%260 = bitcast i64* %sig_id2 to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i32(i8* %260, i8* %259, i32 8, i32 1, i1 false) | |
%261 = bitcast i64* %15 to i8* | |
%262 = bitcast i64* %"#temp#4" to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i32(i8* %262, i8* %261, i32 8, i32 1, i1 false) | |
store i64 1, i64* %14 | |
store i64 1, i64* %"#temp#3" | |
br label %L210 | |
L310: ; preds = %L175 | |
br label %L140 | |
L210: ; preds = %L306, %if21 | |
%263 = load i64, i64* %14 | |
%264 = add i64 %263, 1 | |
%265 = load i64, i64* %"#temp#3" | |
%266 = icmp eq i64 %265, %264 | |
%267 = zext i1 %266 to i8 | |
%268 = xor i8 %267, 1 | |
%269 = trunc i8 %268 to i1 | |
%270 = xor i1 %269, true | |
br i1 %270, label %L308, label %if22 | |
if22: ; preds = %L210 | |
%271 = bitcast i64* %13 to i8* | |
%272 = bitcast i64* %"#temp#3" to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %271, i8* %272, i64 8, i32 0, i1 false) | |
%273 = load i64, i64* %"#temp#3" | |
%274 = add i64 %273, 1 | |
store i64 %274, i64* %12 | |
%275 = bitcast i64* %13 to i8* | |
%276 = bitcast i64* %shape_id2 to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i32(i8* %276, i8* %275, i32 8, i32 1, i1 false) | |
%277 = bitcast i64* %12 to i8* | |
%278 = bitcast i64* %"#temp#3" to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i32(i8* %278, i8* %277, i32 8, i32 1, i1 false) | |
%279 = load i8**, i8*** %bvn_sigsig_h | |
store i8** %279, i8*** %45 | |
%280 = load i64, i64* %sig_id1 | |
%281 = load i64, i64* %sig_id2 | |
%282 = sub i64 %280, 1 | |
%283 = mul i64 %282, 1 | |
%284 = add i64 0, %283 | |
%285 = load i64, i64* %64 | |
%286 = mul i64 1, %285 | |
%287 = sub i64 %281, 1 | |
%288 = mul i64 %287, %286 | |
%289 = add i64 %284, %288 | |
%290 = load double*, double** %62 | |
%291 = getelementptr double, double* %290, i64 %289 | |
%292 = load double, double* %291 | |
store double %292, double* %11 | |
%293 = load i8**, i8*** %sig_sf | |
%294 = bitcast i8** %293 to i8* | |
%295 = getelementptr i8, i8* %294, i64 0 | |
%296 = bitcast i8* %295 to %SMatrix* | |
%297 = getelementptr %SMatrix, %SMatrix* %296, i64 0 | |
%298 = load %SMatrix, %SMatrix* %297, align 16 | |
store %SMatrix %298, %SMatrix* %10 | |
br label %L232 | |
L308: ; preds = %L210 | |
br label %L175 | |
L232: ; preds = %if22 | |
%299 = bitcast %SMatrix* %10 to i8* | |
%300 = getelementptr i8, i8* %299, i64 0 | |
%301 = load i64, i64* %shape_id2 | |
%302 = sub i64 %301, 1 | |
%303 = mul i64 3, %302 | |
%304 = load i64, i64* %sig_id2 | |
%305 = add i64 %304, %303 | |
%306 = sub i64 %305, 1 | |
%307 = bitcast i8* %300 to i8*** | |
%308 = bitcast i8*** %307 to double* | |
%309 = getelementptr double, double* %308, i64 %306 | |
%310 = bitcast double* %309 to i8* | |
%311 = bitcast double* %"#temp#13" to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i32(i8* %311, i8* %310, i32 8, i32 1, i1 false) | |
br label %L244 | |
L244: ; preds = %L232 | |
%312 = load double, double* %11 | |
%313 = load double, double* %"#temp#13" | |
%314 = fmul double %312, %313 | |
store double %314, double* %inner_term | |
%315 = load i64, i64* %shape_id2 | |
%316 = icmp sle i64 1, %315 | |
%317 = zext i1 %316 to i8 | |
%318 = trunc i8 %317 to i1 | |
%319 = xor i1 %318, true | |
%320 = load i64, i64* %shape_id2 | |
%321 = select i1 %319, i64 0, i64 %320 | |
store i64 %321, i64* %9 | |
store i64 1, i64* %"#temp#2" | |
br label %L266 | |
L266: ; preds = %L304, %L244 | |
%322 = load i64, i64* %9 | |
%323 = add i64 %322, 1 | |
%324 = load i64, i64* %"#temp#2" | |
%325 = icmp eq i64 %324, %323 | |
%326 = zext i1 %325 to i8 | |
%327 = xor i8 %326, 1 | |
%328 = trunc i8 %327 to i1 | |
%329 = xor i1 %328, true | |
br i1 %329, label %L306, label %if23 | |
if23: ; preds = %L266 | |
%330 = bitcast i64* %8 to i8* | |
%331 = bitcast i64* %"#temp#2" to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %330, i8* %331, i64 8, i32 0, i1 false) | |
%332 = load i64, i64* %"#temp#2" | |
%333 = add i64 %332, 1 | |
store i64 %333, i64* %7 | |
%334 = bitcast i64* %8 to i8* | |
%335 = bitcast i64* %shape_id1 to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i32(i8* %335, i8* %334, i32 8, i32 1, i1 false) | |
%336 = bitcast i64* %7 to i8* | |
%337 = bitcast i64* %"#temp#2" to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i32(i8* %337, i8* %336, i32 8, i32 1, i1 false) | |
%338 = load i8**, i8*** %bvn_ss_h | |
store i8** %338, i8*** %46 | |
%339 = load i64, i64* %shape_id1 | |
%340 = load i64, i64* %shape_id2 | |
%341 = sub i64 %339, 1 | |
%342 = mul i64 %341, 1 | |
%343 = add i64 0, %342 | |
%344 = load i64, i64* %58 | |
%345 = mul i64 1, %344 | |
%346 = sub i64 %340, 1 | |
%347 = mul i64 %346, %345 | |
%348 = add i64 %343, %347 | |
%349 = load double*, double** %56 | |
%350 = getelementptr double, double* %349, i64 %348 | |
%351 = load double, double* %350 | |
store double %351, double* %6 | |
%352 = load i8**, i8*** %sig_sf | |
%353 = bitcast i8** %352 to i8* | |
%354 = getelementptr i8, i8* %353, i64 0 | |
%355 = bitcast i8* %354 to %SMatrix* | |
%356 = getelementptr %SMatrix, %SMatrix* %355, i64 0 | |
%357 = load %SMatrix, %SMatrix* %356, align 16 | |
store %SMatrix %357, %SMatrix* %5 | |
br label %L288 | |
L306: ; preds = %L266 | |
br label %L210 | |
L288: ; preds = %if23 | |
%358 = bitcast %SMatrix* %5 to i8* | |
%359 = getelementptr i8, i8* %358, i64 0 | |
%360 = load i64, i64* %shape_id1 | |
%361 = sub i64 %360, 1 | |
%362 = mul i64 3, %361 | |
%363 = load i64, i64* %sig_id1 | |
%364 = add i64 %363, %362 | |
%365 = sub i64 %364, 1 | |
%366 = bitcast i8* %359 to i8*** | |
%367 = bitcast i8*** %366 to double* | |
%368 = getelementptr double, double* %367, i64 %365 | |
%369 = bitcast double* %368 to i8* | |
%370 = bitcast double* %"#temp#17" to i8* | |
call void @llvm.memcpy.p0i8.p0i8.i32(i8* %370, i8* %369, i32 8, i32 1, i1 false) | |
br label %L300 | |
L300: ; preds = %L288 | |
%371 = load double, double* %inner_term | |
%372 = load double, double* %"#temp#17" | |
%373 = fmul double %371, %372 | |
%374 = load double, double* %6 | |
%375 = fadd double %374, %373 | |
store double %375, double* %4 | |
%376 = load i8**, i8*** %bvn_ss_h | |
store i8** %376, i8*** %47 | |
%377 = load i64, i64* %shape_id1 | |
%378 = load i64, i64* %shape_id2 | |
%379 = sub i64 %377, 1 | |
%380 = mul i64 %379, 1 | |
%381 = add i64 0, %380 | |
%382 = load i64, i64* %58 | |
%383 = mul i64 1, %382 | |
%384 = sub i64 %378, 1 | |
%385 = mul i64 %384, %383 | |
%386 = add i64 %381, %385 | |
%387 = load double*, double** %56 | |
%388 = load double, double* %4 | |
%389 = getelementptr double, double* %387, i64 %386 | |
store double %388, double* %389 | |
br label %L304 | |
L304: ; preds = %L300 | |
br label %L266 | |
} | |
define i8** @"jlcall_bar!_68284"(i8**, i8***, i32) #0 { | |
top: | |
%3 = call i8**** @jl_get_ptls_states() | |
%4 = bitcast i8**** %3 to i8*** | |
%5 = getelementptr i8**, i8*** %4, i64 3 | |
%6 = bitcast i8*** %5 to i64** | |
%7 = load i64*, i64** %6 | |
%8 = getelementptr i8**, i8*** %1, i64 0 | |
%9 = load i8**, i8*** %8 | |
%10 = getelementptr i8**, i8*** %1, i64 1 | |
%11 = load i8**, i8*** %10 | |
%12 = getelementptr i8**, i8*** %1, i64 2 | |
%13 = load i8**, i8*** %12 | |
%14 = getelementptr i8**, i8*** %1, i64 3 | |
%15 = load i8**, i8*** %14 | |
%16 = bitcast i8** %15 to i8* | |
%17 = load i8, i8* %16 | |
call void @"julia_bar!_68285"(i8** %9, i8** %11, i8** %13, i8 %17) | |
ret i8** inttoptr (i64 4528554000 to i8**) | |
} | |
declare i8**** @jl_get_ptls_states() | |
declare i8*** @julia.gc_root_decl() | |
declare i8** @"jlsys_fill!_47835"(i8**, double) | |
declare void @julia.gc_root_kill(i8***) | |
; Function Attrs: argmemonly nounwind | |
declare void @llvm.memcpy.p0i8.p0i8.i64(i8* nocapture writeonly, i8* nocapture readonly, i64, i32, i1) #1 | |
; Function Attrs: argmemonly nounwind | |
declare void @llvm.memcpy.p0i8.p0i8.i32(i8* nocapture writeonly, i8* nocapture readonly, i32, i32, i1) #1 | |
declare i8** @"julia_fill!_68090"(i8**, double) | |
attributes #0 = { "no-frame-pointer-elim"="true" } | |
attributes #1 = { argmemonly nounwind } | |
!llvm.module.flags = !{!0, !1} | |
!llvm.dbg.cu = !{!2} | |
!0 = !{i32 2, !"Dwarf Version", i32 4} | |
!1 = !{i32 1, !"Debug Info Version", i32 3} | |
!2 = distinct !DICompileUnit(language: DW_LANG_C89, file: !3, producer: "julia", isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, enums: !4) | |
!3 = !DIFile(filename: "/Users/andreasnoack/Desktop/testCeleste.jl", directory: ".") | |
!4 = !{} | |
!5 = distinct !DISubprogram(name: "bar!", linkageName: "julia_bar!_68285", scope: null, file: !3, type: !6, isLocal: false, isDefinition: true, isOptimized: true, unit: !2, variables: !4) | |
!6 = !DISubroutineType(types: !4) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment