-
-
Save Keno/3314286 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
julia> Base.disassemble(sum,typeof((m,))) | |
define %jl_value_t* @sum705(%jl_value_t*, %jl_value_t**, i32) { | |
top: | |
%3 = alloca [2 x %jl_value_t*], align 8, !dbg !6228 | |
%4 = alloca %jl_gcframe_t, align 8, !dbg !6228 | |
%.sub = getelementptr inbounds [2 x %jl_value_t*]* %3, i64 0, i64 0 | |
%5 = bitcast [2 x %jl_value_t*]* %3 to %jl_value_t***, !dbg !6228 | |
%6 = getelementptr %jl_gcframe_t* %4, i64 0, i32 0, !dbg !6228 | |
store %jl_value_t*** %5, %jl_value_t**** %6, align 8, !dbg !6228 | |
%7 = getelementptr %jl_gcframe_t* %4, i64 0, i32 1, !dbg !6228 | |
store i64 2, i64* %7, align 8, !dbg !6228 | |
%8 = getelementptr %jl_gcframe_t* %4, i64 0, i32 2, !dbg !6228 | |
store i32 0, i32* %8, align 8, !dbg !6228 | |
%9 = load %jl_gcframe_t** @jl_pgcstack, align 8, !dbg !6228 | |
%10 = getelementptr %jl_gcframe_t* %4, i64 0, i32 3, !dbg !6228 | |
store %jl_gcframe_t* %9, %jl_gcframe_t** %10, align 8, !dbg !6228 | |
store %jl_gcframe_t* %4, %jl_gcframe_t** @jl_pgcstack, align 8, !dbg !6228 | |
store %jl_value_t* null, %jl_value_t** %.sub, align 8, !dbg !6228 | |
%11 = getelementptr [2 x %jl_value_t*]* %3, i64 0, i64 1, !dbg !6228 | |
store %jl_value_t* null, %jl_value_t** %11, align 8, !dbg !6228 | |
%12 = load %jl_value_t** %1, align 8, !dbg !6235 | |
%13 = getelementptr inbounds %jl_value_t* %12, i64 0, i32 0, !dbg !6235 | |
%14 = getelementptr %jl_value_t** %13, i64 2, !dbg !6235 | |
%15 = load %jl_value_t** %14, align 8, !dbg !6235 | |
%16 = ptrtoint %jl_value_t* %15 to i64, !dbg !6235 | |
%17 = icmp eq %jl_value_t* %15, null, !dbg !6236 | |
br i1 %17, label %if, label %pass, !dbg !6236 | |
if: ; preds = %top | |
%18 = call %jl_value_t* @alloc_2w(), !dbg !6237 | |
%19 = getelementptr inbounds %jl_value_t* %18, i64 0, i32 0, !dbg !6237 | |
store %jl_value_t* inttoptr (i64 4312119520 to %jl_value_t*), %jl_value_t** %19, align 8, !dbg !6237 | |
%20 = getelementptr %jl_value_t** %19, i64 1, !dbg !6237 | |
%21 = bitcast %jl_value_t** %20 to double*, !dbg !6237 | |
store double 0.000000e+00, double* %21, align 8, !dbg !6237 | |
%22 = load %jl_gcframe_t** %10, align 8, !dbg !6237 | |
store %jl_gcframe_t* %22, %jl_gcframe_t** @jl_pgcstack, align 8, !dbg !6237 | |
ret %jl_value_t* %18, !dbg !6237 | |
pass: ; preds = %top | |
%23 = getelementptr %jl_value_t** %13, i64 1, !dbg !6238 | |
%24 = load %jl_value_t** %23, align 8, !dbg !6238 | |
%25 = bitcast %jl_value_t* %24 to double*, !dbg !6238 | |
%26 = load double* %25, align 8, !dbg !6238 | |
br label %L1, !dbg !6239 | |
L1: ; preds = %L7, %pass | |
%c.0 = phi double [ 0.000000e+00, %pass ], [ %storemerge, %L7 ] | |
%s.0 = phi double [ %26, %pass ], [ %40, %L7 ] | |
%"#134.0" = phi i64 [ 2, %pass ], [ %52, %L7 ] | |
%27 = icmp sgt i64 %"#134.0", %16, !dbg !6239 | |
br i1 %27, label %L10, label %if2, !dbg !6239 | |
if2: ; preds = %L1 | |
%28 = load %jl_value_t** %1, align 8, !dbg !6240 | |
%29 = getelementptr inbounds %jl_value_t* %28, i64 0, i32 0, !dbg !6240 | |
%30 = getelementptr %jl_value_t** %29, i64 2, !dbg !6240 | |
%31 = load %jl_value_t** %30, align 8, !dbg !6240 | |
%32 = ptrtoint %jl_value_t* %31 to i64, !dbg !6240 | |
%33 = add i64 %"#134.0", -1, !dbg !6240 | |
%34 = icmp ult i64 %33, %32, !dbg !6240 | |
br i1 %34, label %pass4, label %fail3, !dbg !6240 | |
fail3: ; preds = %if2 | |
call void @jl_error(i8* getelementptr inbounds ([37 x i8]* @_j_str608, i64 0, i64 0)), !dbg !6240 | |
unreachable | |
pass4: ; preds = %if2 | |
%35 = getelementptr %jl_value_t** %29, i64 1, !dbg !6240 | |
%36 = load %jl_value_t** %35, align 8, !dbg !6240 | |
%37 = bitcast %jl_value_t* %36 to double*, !dbg !6240 | |
%38 = getelementptr double* %37, i64 %33, !dbg !6240 | |
%39 = load double* %38, align 8, !dbg !6240 | |
%40 = fadd double %s.0, %39, !dbg !6241 | |
%41 = bitcast double %39 to i64, !dbg !6242 | |
%42 = and i64 %41, 9223372036854775807, !dbg !6242 | |
%43 = bitcast double %s.0 to i64, !dbg !6242 | |
%44 = and i64 %43, 9223372036854775807, !dbg !6242 | |
%45 = bitcast i64 %42 to double, !dbg !6242 | |
%46 = bitcast i64 %44 to double, !dbg !6242 | |
%47 = fcmp ugt double %45, %46, !dbg !6242 | |
br i1 %47, label %L6, label %if5, !dbg !6242 | |
if5: ; preds = %pass4 | |
%48 = fsub double %s.0, %40, !dbg !6243 | |
%49 = fadd double %48, %39, !dbg !6243 | |
br label %L7, !dbg !6243 | |
L6: ; preds = %pass4 | |
%50 = fsub double %39, %40, !dbg !6244 | |
%51 = fadd double %50, %s.0, !dbg !6244 | |
br label %L7, !dbg !6244 | |
L7: ; preds = %L6, %if5 | |
%.pn = phi double [ %51, %L6 ], [ %49, %if5 ] | |
%storemerge = fadd double %c.0, %.pn, !dbg !6244 | |
%52 = add i64 %"#134.0", 1, !dbg !6245 | |
br label %L1, !dbg !6245 | |
L10: ; preds = %L1 | |
%53 = fadd double %s.0, %c.0, !dbg !6246 | |
%54 = call %jl_value_t* @alloc_2w(), !dbg !6246 | |
%55 = getelementptr inbounds %jl_value_t* %54, i64 0, i32 0, !dbg !6246 | |
store %jl_value_t* inttoptr (i64 4312119520 to %jl_value_t*), %jl_value_t** %55, align 8, !dbg !6246 | |
%56 = getelementptr %jl_value_t** %55, i64 1, !dbg !6246 | |
%57 = bitcast %jl_value_t** %56 to double*, !dbg !6246 | |
store double %53, double* %57, align 8, !dbg !6246 | |
%58 = load %jl_gcframe_t** %10, align 8, !dbg !6246 | |
store %jl_gcframe_t* %58, %jl_gcframe_t** @jl_pgcstack, align 8, !dbg !6246 | |
ret %jl_value_t* %54, !dbg !6246 | |
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
julia> Base.disassemble(sum,typeof((mc,))) | |
define %jl_value_t* @sum704(%jl_value_t*, %jl_value_t**, i32) { | |
top: | |
%3 = alloca [3 x %jl_value_t*], align 8, !dbg !6219 | |
%4 = alloca %jl_gcframe_t, align 8, !dbg !6219 | |
%.sub = getelementptr inbounds [3 x %jl_value_t*]* %3, i64 0, i64 0 | |
%5 = bitcast [3 x %jl_value_t*]* %3 to %jl_value_t***, !dbg !6219 | |
%6 = getelementptr %jl_gcframe_t* %4, i64 0, i32 0, !dbg !6219 | |
store %jl_value_t*** %5, %jl_value_t**** %6, align 8, !dbg !6219 | |
%7 = getelementptr %jl_gcframe_t* %4, i64 0, i32 1, !dbg !6219 | |
store i64 3, i64* %7, align 8, !dbg !6219 | |
%8 = getelementptr %jl_gcframe_t* %4, i64 0, i32 2, !dbg !6219 | |
store i32 0, i32* %8, align 8, !dbg !6219 | |
%9 = load %jl_gcframe_t** @jl_pgcstack, align 8, !dbg !6219 | |
%10 = getelementptr %jl_gcframe_t* %4, i64 0, i32 3, !dbg !6219 | |
store %jl_gcframe_t* %9, %jl_gcframe_t** %10, align 8, !dbg !6219 | |
store %jl_gcframe_t* %4, %jl_gcframe_t** @jl_pgcstack, align 8, !dbg !6219 | |
store %jl_value_t* null, %jl_value_t** %.sub, align 8, !dbg !6219 | |
%11 = getelementptr [3 x %jl_value_t*]* %3, i64 0, i64 1, !dbg !6219 | |
store %jl_value_t* null, %jl_value_t** %11, align 8, !dbg !6219 | |
%12 = getelementptr [3 x %jl_value_t*]* %3, i64 0, i64 2, !dbg !6219 | |
store %jl_value_t* null, %jl_value_t** %12, align 8, !dbg !6219 | |
%13 = load %jl_value_t** %1, align 8, !dbg !6226 | |
%14 = getelementptr inbounds %jl_value_t* %13, i64 0, i32 0, !dbg !6226 | |
%15 = getelementptr %jl_value_t** %14, i64 2, !dbg !6226 | |
%16 = load %jl_value_t** %15, align 8, !dbg !6226 | |
%17 = icmp eq %jl_value_t* %16, null, !dbg !6226 | |
br i1 %17, label %if, label %pass, !dbg !6226 | |
if: ; preds = %top | |
%18 = call %jl_value_t* @allocobj(i64 24), !dbg !6227 | |
%19 = getelementptr inbounds %jl_value_t* %18, i64 0, i32 0, !dbg !6227 | |
store %jl_value_t* inttoptr (i64 4312929664 to %jl_value_t*), %jl_value_t** %19, align 8, !dbg !6227 | |
%20 = getelementptr %jl_value_t** %19, i64 1, !dbg !6227 | |
%21 = bitcast %jl_value_t** %20 to i128*, !dbg !6227 | |
store i128 0, i128* %21, align 8, !dbg !6227 | |
%22 = load %jl_gcframe_t** %10, align 8, !dbg !6227 | |
store %jl_gcframe_t* %22, %jl_gcframe_t** @jl_pgcstack, align 8, !dbg !6227 | |
ret %jl_value_t* %18, !dbg !6227 | |
pass: ; preds = %top | |
%23 = getelementptr %jl_value_t** %14, i64 1, !dbg !6228 | |
%24 = load %jl_value_t** %23, align 8, !dbg !6228 | |
%25 = bitcast %jl_value_t* %24 to i128*, !dbg !6228 | |
%26 = ptrtoint %jl_value_t* %16 to i64, !dbg !6229 | |
br label %L1, !dbg !6229 | |
L1: ; preds = %pass4, %pass | |
%"#134.0" = phi i64 [ 2, %pass ], [ %52, %pass4 ] | |
%v.0.in = phi i128* [ %25, %pass ], [ %51, %pass4 ] | |
%v.0 = load i128* %v.0.in, align 8, !dbg !6228 | |
%27 = icmp sgt i64 %"#134.0", %26, !dbg !6229 | |
%28 = call %jl_value_t* @allocobj(i64 24), !dbg !6230 | |
%29 = getelementptr inbounds %jl_value_t* %28, i64 0, i32 0, !dbg !6230 | |
store %jl_value_t* inttoptr (i64 4312929664 to %jl_value_t*), %jl_value_t** %29, align 8, !dbg !6230 | |
%30 = getelementptr %jl_value_t** %29, i64 1, !dbg !6230 | |
%31 = bitcast %jl_value_t** %30 to i128*, !dbg !6230 | |
store i128 %v.0, i128* %31, align 8, !dbg !6230 | |
br i1 %27, label %L6, label %if2, !dbg !6229 | |
if2: ; preds = %L1 | |
store %jl_value_t* %28, %jl_value_t** %.sub, align 8, !dbg !6231 | |
%32 = load %jl_value_t** %1, align 8, !dbg !6231 | |
%33 = getelementptr inbounds %jl_value_t* %32, i64 0, i32 0, !dbg !6231 | |
%34 = getelementptr %jl_value_t** %33, i64 2, !dbg !6231 | |
%35 = load %jl_value_t** %34, align 8, !dbg !6231 | |
%36 = ptrtoint %jl_value_t* %35 to i64, !dbg !6231 | |
%37 = add i64 %"#134.0", -1, !dbg !6231 | |
%38 = icmp ult i64 %37, %36, !dbg !6231 | |
br i1 %38, label %pass4, label %fail3, !dbg !6231 | |
fail3: ; preds = %if2 | |
call void @jl_error(i8* getelementptr inbounds ([37 x i8]* @_j_str608, i64 0, i64 0)), !dbg !6231 | |
unreachable | |
pass4: ; preds = %if2 | |
%39 = getelementptr %jl_value_t** %33, i64 1, !dbg !6231 | |
%40 = load %jl_value_t** %39, align 8, !dbg !6231 | |
%41 = bitcast %jl_value_t* %40 to i128*, !dbg !6231 | |
%42 = getelementptr i128* %41, i64 %37, !dbg !6231 | |
%43 = load i128* %42, align 8, !dbg !6231, !julia_type !6232 | |
%44 = call %jl_value_t* @allocobj(i64 24), !dbg !6231 | |
%45 = getelementptr inbounds %jl_value_t* %44, i64 0, i32 0, !dbg !6231 | |
store %jl_value_t* inttoptr (i64 4312929664 to %jl_value_t*), %jl_value_t** %45, align 8, !dbg !6231 | |
%46 = getelementptr %jl_value_t** %45, i64 1, !dbg !6231 | |
%47 = bitcast %jl_value_t** %46 to i128*, !dbg !6231 | |
store i128 %43, i128* %47, align 8, !dbg !6231 | |
store %jl_value_t* %44, %jl_value_t** %11, align 8, !dbg !6231 | |
%48 = call %jl_value_t* @"+667"(%jl_value_t* inttoptr (i64 4395888608 to %jl_value_t*), %jl_value_t** %.sub, i32 2), !dbg !6231 | |
%49 = getelementptr inbounds %jl_value_t* %48, i64 0, i32 0, !dbg !6231 | |
%50 = getelementptr %jl_value_t** %49, i64 1, !dbg !6231 | |
%51 = bitcast %jl_value_t** %50 to i128*, !dbg !6231 | |
%52 = add i64 %"#134.0", 1, !dbg !6231 | |
br label %L1, !dbg !6231 | |
L6: ; preds = %L1 | |
%53 = load %jl_gcframe_t** %10, align 8, !dbg !6230 | |
store %jl_gcframe_t* %53, %jl_gcframe_t** @jl_pgcstack, align 8, !dbg !6230 | |
ret %jl_value_t* %28, !dbg !6230 | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment