Skip to content

Instantly share code, notes, and snippets.

@kmsquire
Last active August 29, 2015 14:03
Show Gist options
  • Save kmsquire/bc7d68c9f4f70dde2e24 to your computer and use it in GitHub Desktop.
Save kmsquire/bc7d68c9f4f70dde2e24 to your computer and use it in GitHub Desktop.
Comparison of code generated by normal forward sorting and sorting "by=x->x".
x = rand(1000000);
ord = Base.Sort.ord(isless, x->x, false, Base.Order.Forward)
# The lines below compare the sort code generated using forward ordering,
# and using "by=x->x".
# The output of the code is below
@code_llvm sort!(x, 1, 1000000, QuickSort, Base.Order.Forward)
@code_llvm sort!(x, 1, 1000000, QuickSort, ord)
@code_native sort!(x, 1, 1000000, QuickSort, Base.Order.Forward)
@code_native sort!(x, 1, 1000000, QuickSort, ord)
define %jl_value_t* @"julia_sort!;18847"(%jl_value_t*, i64, i64, %jl_value_t*, %jl_value_t*) {
top:
%5 = alloca [5 x %jl_value_t*], align 8
%.sub = getelementptr inbounds [5 x %jl_value_t*]* %5, i64 0, i64 0
%6 = getelementptr [5 x %jl_value_t*]* %5, i64 0, i64 2, !dbg !923
store %jl_value_t* inttoptr (i64 6 to %jl_value_t*), %jl_value_t** %.sub, align 8
%7 = getelementptr [5 x %jl_value_t*]* %5, i64 0, i64 1, !dbg !923
%8 = load %jl_value_t*** @jl_pgcstack, align 8, !dbg !923
%.c = bitcast %jl_value_t** %8 to %jl_value_t*, !dbg !923
store %jl_value_t* %.c, %jl_value_t** %7, align 8, !dbg !923
store %jl_value_t** %.sub, %jl_value_t*** @jl_pgcstack, align 8, !dbg !923
store %jl_value_t* null, %jl_value_t** %6, align 8
%9 = getelementptr [5 x %jl_value_t*]* %5, i64 0, i64 3
store %jl_value_t* null, %jl_value_t** %9, align 8
%10 = getelementptr [5 x %jl_value_t*]* %5, i64 0, i64 4
store %jl_value_t* null, %jl_value_t** %10, align 8
%11 = icmp slt i64 %1, %2, !dbg !924
br i1 %11, label %L.preheader, label %L72, !dbg !924
L.preheader: ; preds = %top
%12 = getelementptr inbounds %jl_value_t* %0, i64 1, i32 0, !dbg !925
%13 = getelementptr inbounds %jl_value_t* %4, i64 1, i32 0, !dbg !925
%14 = add i64 %2, -1, !dbg !926
br label %L, !dbg !927
L: ; preds = %L.preheader, %L69
%lo.0 = phi i64 [ %332, %L69 ], [ %1, %L.preheader ]
%15 = sub i64 %2, %lo.0, !dbg !927
%16 = icmp sgt i64 %15, 20, !dbg !927
br i1 %16, label %L2, label %if1, !dbg !927
if1: ; preds = %L
%17 = load %jl_value_t** inttoptr (i64 17946240 to %jl_value_t**), align 128, !dbg !927
%18 = call %jl_value_t* @"julia_sort!;18848"(%jl_value_t* %0, i64 %lo.0, i64 %2, %jl_value_t* %17, %jl_value_t* %4), !dbg !927
%19 = load %jl_value_t** %7, align 8, !dbg !927
%20 = getelementptr inbounds %jl_value_t* %19, i64 0, i32 0, !dbg !927
store %jl_value_t** %20, %jl_value_t*** @jl_pgcstack, align 8, !dbg !927
ret %jl_value_t* %18, !dbg !927
L2: ; preds = %L
%21 = load %jl_value_t** %13, align 8, !dbg !925
%22 = icmp eq %jl_value_t* %21, null, !dbg !925
br i1 %22, label %fail, label %pass, !dbg !925
if3: ; preds = %pass7
%23 = load %jl_value_t** %12, align 8, !dbg !928, !tbaa %jtbaa_arrayptr
%24 = getelementptr %jl_value_t* %23, i64 %35, !dbg !928
%25 = bitcast %jl_value_t* %24 to double*, !dbg !928
%26 = load double* %25, align 8, !dbg !928, !tbaa %jtbaa_user
%27 = getelementptr %jl_value_t* %23, i64 %41, !dbg !928
%28 = bitcast %jl_value_t* %27 to double*, !dbg !928
%29 = load double* %28, align 8, !dbg !928, !tbaa %jtbaa_user
store double %26, double* %28, align 8, !dbg !928, !tbaa %jtbaa_user
%30 = load %jl_value_t** %12, align 8, !dbg !928, !tbaa %jtbaa_arrayptr
%31 = getelementptr %jl_value_t* %30, i64 %35, !dbg !928
%32 = bitcast %jl_value_t* %31 to double*, !dbg !928
store double %29, double* %32, align 8, !dbg !928, !tbaa %jtbaa_user
br label %L8, !dbg !928
fail: ; preds = %L2
%33 = load %jl_value_t** @jl_undefref_exception, align 8, !dbg !925, !tbaa %jtbaa_const
call void @jl_throw_with_superfluous_argument(%jl_value_t* %33, i32 249), !dbg !925
unreachable, !dbg !925
pass: ; preds = %L2
%34 = load %jl_value_t** %12, align 8, !dbg !925, !tbaa %jtbaa_arrayptr
%35 = add i64 %lo.0, -1, !dbg !925
%36 = getelementptr %jl_value_t* %34, i64 %35, !dbg !925
%37 = bitcast %jl_value_t* %36 to double*, !dbg !925
%38 = load double* %37, align 8, !dbg !925, !tbaa %jtbaa_user
%39 = add i64 %lo.0, %2, !dbg !935
%40 = lshr i64 %39, 1, !dbg !935
%41 = add i64 %40, -1, !dbg !925
%42 = getelementptr %jl_value_t* %34, i64 %41, !dbg !925
%43 = bitcast %jl_value_t* %42 to double*, !dbg !925
%44 = load double* %43, align 8, !dbg !925, !tbaa %jtbaa_user
store %jl_value_t* %21, %jl_value_t** %6, align 8, !dbg !925
%45 = getelementptr inbounds %jl_value_t* %21, i64 1, i32 0, !dbg !925
%46 = load %jl_value_t** %45, align 8, !dbg !925, !tbaa %jtbaa_func
%47 = bitcast %jl_value_t* %46 to %jl_value_t* (%jl_value_t*, %jl_value_t**, i32)*, !dbg !925
%48 = call %jl_value_t* @alloc_2w(), !dbg !925
%49 = getelementptr inbounds %jl_value_t* %48, i64 0, i32 0, !dbg !925
store %jl_value_t* inttoptr (i64 16366064 to %jl_value_t*), %jl_value_t** %49, align 8, !dbg !925
%50 = getelementptr inbounds %jl_value_t* %48, i64 1, i32 0, !dbg !925
%51 = bitcast %jl_value_t** %50 to double*, !dbg !925
store double %44, double* %51, align 8, !dbg !925
store %jl_value_t* %48, %jl_value_t** %9, align 8, !dbg !925
%52 = call %jl_value_t* %47(%jl_value_t* %21, %jl_value_t** %9, i32 1), !dbg !925
store %jl_value_t* %52, %jl_value_t** %6, align 8, !dbg !925
%53 = load %jl_value_t** %13, align 8, !dbg !925
%54 = icmp eq %jl_value_t* %53, null, !dbg !925
br i1 %54, label %fail4, label %pass5, !dbg !925
fail4: ; preds = %pass
%55 = load %jl_value_t** @jl_undefref_exception, align 8, !dbg !925, !tbaa %jtbaa_const
call void @jl_throw_with_superfluous_argument(%jl_value_t* %55, i32 249), !dbg !925
unreachable, !dbg !925
pass5: ; preds = %pass
store %jl_value_t* %53, %jl_value_t** %9, align 8, !dbg !925
%56 = getelementptr inbounds %jl_value_t* %53, i64 1, i32 0, !dbg !925
%57 = load %jl_value_t** %56, align 8, !dbg !925, !tbaa %jtbaa_func
%58 = bitcast %jl_value_t* %57 to %jl_value_t* (%jl_value_t*, %jl_value_t**, i32)*, !dbg !925
%59 = call %jl_value_t* @alloc_2w(), !dbg !925
%60 = getelementptr inbounds %jl_value_t* %59, i64 0, i32 0, !dbg !925
store %jl_value_t* inttoptr (i64 16366064 to %jl_value_t*), %jl_value_t** %60, align 8, !dbg !925
%61 = getelementptr inbounds %jl_value_t* %59, i64 1, i32 0, !dbg !925
%62 = bitcast %jl_value_t** %61 to double*, !dbg !925
store double %38, double* %62, align 8, !dbg !925
store %jl_value_t* %59, %jl_value_t** %10, align 8, !dbg !925
%63 = call %jl_value_t* %58(%jl_value_t* %53, %jl_value_t** %10, i32 1), !dbg !925
store %jl_value_t* %63, %jl_value_t** %9, align 8, !dbg !925
%64 = call %jl_value_t* @jl_apply_generic(%jl_value_t* inttoptr (i64 29426160 to %jl_value_t*), %jl_value_t** %6, i32 2), !dbg !925
%65 = getelementptr inbounds %jl_value_t* %64, i64 0, i32 0, !dbg !925
%66 = load %jl_value_t** %65, align 8, !dbg !925
%67 = icmp eq %jl_value_t* %66, inttoptr (i64 16355872 to %jl_value_t*), !dbg !925
br i1 %67, label %pass7, label %fail6, !dbg !925
fail6: ; preds = %pass5
call void @jl_type_error_rt(i8* getelementptr inbounds ([6 x i8]* @_j_str33, i64 0, i64 0), i8* getelementptr inbounds ([3 x i8]* @_j_str2, i64 0, i64 0), %jl_value_t* inttoptr (i64 16355872 to %jl_value_t*), %jl_value_t* %64), !dbg !925
unreachable
pass7: ; preds = %pass5
%68 = icmp eq %jl_value_t* %64, inttoptr (i64 16449232 to %jl_value_t*), !dbg !925
br i1 %68, label %L8, label %if3, !dbg !925
L8: ; preds = %if3, %pass7
%69 = load %jl_value_t** %13, align 8, !dbg !926
%70 = icmp eq %jl_value_t* %69, null, !dbg !926
br i1 %70, label %fail10, label %pass11, !dbg !926
if9: ; preds = %pass15
%71 = load %jl_value_t** %12, align 8, !dbg !937, !tbaa %jtbaa_arrayptr
%72 = getelementptr %jl_value_t* %71, i64 %41, !dbg !937
%73 = bitcast %jl_value_t* %72 to double*, !dbg !937
%74 = load double* %73, align 8, !dbg !937, !tbaa %jtbaa_user
%75 = getelementptr %jl_value_t* %71, i64 %14, !dbg !937
%76 = bitcast %jl_value_t* %75 to double*, !dbg !937
%77 = load double* %76, align 8, !dbg !937, !tbaa %jtbaa_user
store double %74, double* %76, align 8, !dbg !937, !tbaa %jtbaa_user
%78 = load %jl_value_t** %12, align 8, !dbg !937, !tbaa %jtbaa_arrayptr
%79 = getelementptr %jl_value_t* %78, i64 %41, !dbg !937
%80 = bitcast %jl_value_t* %79 to double*, !dbg !937
store double %77, double* %80, align 8, !dbg !937, !tbaa %jtbaa_user
br label %L16, !dbg !937
fail10: ; preds = %L8
%81 = load %jl_value_t** @jl_undefref_exception, align 8, !dbg !926, !tbaa %jtbaa_const
call void @jl_throw_with_superfluous_argument(%jl_value_t* %81, i32 252), !dbg !926
unreachable, !dbg !926
pass11: ; preds = %L8
%82 = load %jl_value_t** %12, align 8, !dbg !926, !tbaa %jtbaa_arrayptr
%83 = getelementptr %jl_value_t* %82, i64 %41, !dbg !926
%84 = bitcast %jl_value_t* %83 to double*, !dbg !926
%85 = load double* %84, align 8, !dbg !926, !tbaa %jtbaa_user
%86 = getelementptr %jl_value_t* %82, i64 %14, !dbg !926
%87 = bitcast %jl_value_t* %86 to double*, !dbg !926
%88 = load double* %87, align 8, !dbg !926, !tbaa %jtbaa_user
store %jl_value_t* %69, %jl_value_t** %6, align 8, !dbg !926
%89 = getelementptr inbounds %jl_value_t* %69, i64 1, i32 0, !dbg !926
%90 = load %jl_value_t** %89, align 8, !dbg !926, !tbaa %jtbaa_func
%91 = bitcast %jl_value_t* %90 to %jl_value_t* (%jl_value_t*, %jl_value_t**, i32)*, !dbg !926
%92 = call %jl_value_t* @alloc_2w(), !dbg !926
%93 = getelementptr inbounds %jl_value_t* %92, i64 0, i32 0, !dbg !926
store %jl_value_t* inttoptr (i64 16366064 to %jl_value_t*), %jl_value_t** %93, align 8, !dbg !926
%94 = getelementptr inbounds %jl_value_t* %92, i64 1, i32 0, !dbg !926
%95 = bitcast %jl_value_t** %94 to double*, !dbg !926
store double %88, double* %95, align 8, !dbg !926
store %jl_value_t* %92, %jl_value_t** %9, align 8, !dbg !926
%96 = call %jl_value_t* %91(%jl_value_t* %69, %jl_value_t** %9, i32 1), !dbg !926
store %jl_value_t* %96, %jl_value_t** %6, align 8, !dbg !926
%97 = load %jl_value_t** %13, align 8, !dbg !926
%98 = icmp eq %jl_value_t* %97, null, !dbg !926
br i1 %98, label %fail12, label %pass13, !dbg !926
fail12: ; preds = %pass11
%99 = load %jl_value_t** @jl_undefref_exception, align 8, !dbg !926, !tbaa %jtbaa_const
call void @jl_throw_with_superfluous_argument(%jl_value_t* %99, i32 252), !dbg !926
unreachable, !dbg !926
pass13: ; preds = %pass11
store %jl_value_t* %97, %jl_value_t** %9, align 8, !dbg !926
%100 = getelementptr inbounds %jl_value_t* %97, i64 1, i32 0, !dbg !926
%101 = load %jl_value_t** %100, align 8, !dbg !926, !tbaa %jtbaa_func
%102 = bitcast %jl_value_t* %101 to %jl_value_t* (%jl_value_t*, %jl_value_t**, i32)*, !dbg !926
%103 = call %jl_value_t* @alloc_2w(), !dbg !926
%104 = getelementptr inbounds %jl_value_t* %103, i64 0, i32 0, !dbg !926
store %jl_value_t* inttoptr (i64 16366064 to %jl_value_t*), %jl_value_t** %104, align 8, !dbg !926
%105 = getelementptr inbounds %jl_value_t* %103, i64 1, i32 0, !dbg !926
%106 = bitcast %jl_value_t** %105 to double*, !dbg !926
store double %85, double* %106, align 8, !dbg !926
store %jl_value_t* %103, %jl_value_t** %10, align 8, !dbg !926
%107 = call %jl_value_t* %102(%jl_value_t* %97, %jl_value_t** %10, i32 1), !dbg !926
store %jl_value_t* %107, %jl_value_t** %9, align 8, !dbg !926
%108 = call %jl_value_t* @jl_apply_generic(%jl_value_t* inttoptr (i64 29426160 to %jl_value_t*), %jl_value_t** %6, i32 2), !dbg !926
%109 = getelementptr inbounds %jl_value_t* %108, i64 0, i32 0, !dbg !926
%110 = load %jl_value_t** %109, align 8, !dbg !926
%111 = icmp eq %jl_value_t* %110, inttoptr (i64 16355872 to %jl_value_t*), !dbg !926
br i1 %111, label %pass15, label %fail14, !dbg !926
fail14: ; preds = %pass13
call void @jl_type_error_rt(i8* getelementptr inbounds ([6 x i8]* @_j_str33, i64 0, i64 0), i8* getelementptr inbounds ([3 x i8]* @_j_str2, i64 0, i64 0), %jl_value_t* inttoptr (i64 16355872 to %jl_value_t*), %jl_value_t* %108), !dbg !926
unreachable
pass15: ; preds = %pass13
%112 = icmp eq %jl_value_t* %108, inttoptr (i64 16449232 to %jl_value_t*), !dbg !926
br i1 %112, label %L16, label %if9, !dbg !926
L16: ; preds = %if9, %pass15
%113 = load %jl_value_t** %13, align 8, !dbg !938
%114 = icmp eq %jl_value_t* %113, null, !dbg !938
br i1 %114, label %fail18, label %pass19, !dbg !938
if17: ; preds = %pass23
%115 = load %jl_value_t** %12, align 8, !dbg !939, !tbaa %jtbaa_arrayptr
%116 = getelementptr %jl_value_t* %115, i64 %35, !dbg !939
%117 = bitcast %jl_value_t* %116 to double*, !dbg !939
%118 = load double* %117, align 8, !dbg !939, !tbaa %jtbaa_user
%119 = getelementptr %jl_value_t* %115, i64 %41, !dbg !939
%120 = bitcast %jl_value_t* %119 to double*, !dbg !939
%121 = load double* %120, align 8, !dbg !939, !tbaa %jtbaa_user
store double %118, double* %120, align 8, !dbg !939, !tbaa %jtbaa_user
%122 = load %jl_value_t** %12, align 8, !dbg !939, !tbaa %jtbaa_arrayptr
%123 = getelementptr %jl_value_t* %122, i64 %35, !dbg !939
%124 = bitcast %jl_value_t* %123 to double*, !dbg !939
store double %121, double* %124, align 8, !dbg !939, !tbaa %jtbaa_user
br label %L24, !dbg !939
fail18: ; preds = %L16
%125 = load %jl_value_t** @jl_undefref_exception, align 8, !dbg !938, !tbaa %jtbaa_const
call void @jl_throw_with_superfluous_argument(%jl_value_t* %125, i32 255), !dbg !938
unreachable, !dbg !938
pass19: ; preds = %L16
%126 = load %jl_value_t** %12, align 8, !dbg !938, !tbaa %jtbaa_arrayptr
%127 = getelementptr %jl_value_t* %126, i64 %35, !dbg !938
%128 = bitcast %jl_value_t* %127 to double*, !dbg !938
%129 = load double* %128, align 8, !dbg !938, !tbaa %jtbaa_user
%130 = getelementptr %jl_value_t* %126, i64 %41, !dbg !938
%131 = bitcast %jl_value_t* %130 to double*, !dbg !938
%132 = load double* %131, align 8, !dbg !938, !tbaa %jtbaa_user
store %jl_value_t* %113, %jl_value_t** %6, align 8, !dbg !938
%133 = getelementptr inbounds %jl_value_t* %113, i64 1, i32 0, !dbg !938
%134 = load %jl_value_t** %133, align 8, !dbg !938, !tbaa %jtbaa_func
%135 = bitcast %jl_value_t* %134 to %jl_value_t* (%jl_value_t*, %jl_value_t**, i32)*, !dbg !938
%136 = call %jl_value_t* @alloc_2w(), !dbg !938
%137 = getelementptr inbounds %jl_value_t* %136, i64 0, i32 0, !dbg !938
store %jl_value_t* inttoptr (i64 16366064 to %jl_value_t*), %jl_value_t** %137, align 8, !dbg !938
%138 = getelementptr inbounds %jl_value_t* %136, i64 1, i32 0, !dbg !938
%139 = bitcast %jl_value_t** %138 to double*, !dbg !938
store double %132, double* %139, align 8, !dbg !938
store %jl_value_t* %136, %jl_value_t** %9, align 8, !dbg !938
%140 = call %jl_value_t* %135(%jl_value_t* %113, %jl_value_t** %9, i32 1), !dbg !938
store %jl_value_t* %140, %jl_value_t** %6, align 8, !dbg !938
%141 = load %jl_value_t** %13, align 8, !dbg !938
%142 = icmp eq %jl_value_t* %141, null, !dbg !938
br i1 %142, label %fail20, label %pass21, !dbg !938
fail20: ; preds = %pass19
%143 = load %jl_value_t** @jl_undefref_exception, align 8, !dbg !938, !tbaa %jtbaa_const
call void @jl_throw_with_superfluous_argument(%jl_value_t* %143, i32 255), !dbg !938
unreachable, !dbg !938
pass21: ; preds = %pass19
store %jl_value_t* %141, %jl_value_t** %9, align 8, !dbg !938
%144 = getelementptr inbounds %jl_value_t* %141, i64 1, i32 0, !dbg !938
%145 = load %jl_value_t** %144, align 8, !dbg !938, !tbaa %jtbaa_func
%146 = bitcast %jl_value_t* %145 to %jl_value_t* (%jl_value_t*, %jl_value_t**, i32)*, !dbg !938
%147 = call %jl_value_t* @alloc_2w(), !dbg !938
%148 = getelementptr inbounds %jl_value_t* %147, i64 0, i32 0, !dbg !938
store %jl_value_t* inttoptr (i64 16366064 to %jl_value_t*), %jl_value_t** %148, align 8, !dbg !938
%149 = getelementptr inbounds %jl_value_t* %147, i64 1, i32 0, !dbg !938
%150 = bitcast %jl_value_t** %149 to double*, !dbg !938
store double %129, double* %150, align 8, !dbg !938
store %jl_value_t* %147, %jl_value_t** %10, align 8, !dbg !938
%151 = call %jl_value_t* %146(%jl_value_t* %141, %jl_value_t** %10, i32 1), !dbg !938
store %jl_value_t* %151, %jl_value_t** %9, align 8, !dbg !938
%152 = call %jl_value_t* @jl_apply_generic(%jl_value_t* inttoptr (i64 29426160 to %jl_value_t*), %jl_value_t** %6, i32 2), !dbg !938
%153 = getelementptr inbounds %jl_value_t* %152, i64 0, i32 0, !dbg !938
%154 = load %jl_value_t** %153, align 8, !dbg !938
%155 = icmp eq %jl_value_t* %154, inttoptr (i64 16355872 to %jl_value_t*), !dbg !938
br i1 %155, label %pass23, label %fail22, !dbg !938
fail22: ; preds = %pass21
call void @jl_type_error_rt(i8* getelementptr inbounds ([6 x i8]* @_j_str33, i64 0, i64 0), i8* getelementptr inbounds ([3 x i8]* @_j_str2, i64 0, i64 0), %jl_value_t* inttoptr (i64 16355872 to %jl_value_t*), %jl_value_t* %152), !dbg !938
unreachable
pass23: ; preds = %pass21
%156 = icmp eq %jl_value_t* %152, inttoptr (i64 16449232 to %jl_value_t*), !dbg !938
br i1 %156, label %L24, label %if17, !dbg !938
L24: ; preds = %if17, %pass23
%157 = load %jl_value_t** %12, align 8, !dbg !940, !tbaa %jtbaa_arrayptr
%158 = getelementptr %jl_value_t* %157, i64 %35, !dbg !940
%159 = bitcast %jl_value_t* %158 to double*, !dbg !940
%160 = load double* %159, align 8, !dbg !940, !tbaa %jtbaa_user
%161 = getelementptr %jl_value_t* %157, i64 %41, !dbg !940
%162 = bitcast %jl_value_t* %161 to double*, !dbg !940
%163 = load double* %162, align 8, !dbg !940, !tbaa %jtbaa_user
store double %160, double* %162, align 8, !dbg !940, !tbaa %jtbaa_user
%164 = load %jl_value_t** %12, align 8, !dbg !940, !tbaa %jtbaa_arrayptr
%165 = getelementptr %jl_value_t* %164, i64 %35, !dbg !940
%166 = bitcast %jl_value_t* %165 to double*, !dbg !940
store double %163, double* %166, align 8, !dbg !940, !tbaa %jtbaa_user
%167 = load %jl_value_t** %13, align 8, !dbg !941
%168 = icmp eq %jl_value_t* %167, null, !dbg !941
br i1 %168, label %fail28, label %pass29.lr.ph, !dbg !941
pass29.lr.ph: ; preds = %L24
%169 = load %jl_value_t** %12, align 8, !dbg !942, !tbaa %jtbaa_arrayptr
%170 = getelementptr %jl_value_t* %169, i64 %35, !dbg !942
%171 = bitcast %jl_value_t* %170 to double*, !dbg !942
%172 = load double* %171, align 8, !dbg !942, !tbaa %jtbaa_user
br label %pass29, !dbg !941
fail28: ; preds = %L24, %L63
%173 = load %jl_value_t** @jl_undefref_exception, align 8, !dbg !941, !tbaa %jtbaa_const
call void @jl_throw_with_superfluous_argument(%jl_value_t* %173, i32 263), !dbg !941
unreachable, !dbg !941
pass29: ; preds = %pass29.lr.ph, %L63
%174 = phi %jl_value_t* [ %167, %pass29.lr.ph ], [ %317, %L63 ]
%.in = phi i64 [ %2, %pass29.lr.ph ], [ %j.2, %L63 ]
%.in174 = phi i64 [ %lo.0, %pass29.lr.ph ], [ %i.2, %L63 ]
%j.0173 = phi i64 [ %2, %pass29.lr.ph ], [ %j.2, %L63 ]
%i.0172 = phi i64 [ %lo.0, %pass29.lr.ph ], [ %i.2, %L63 ]
%175 = load %jl_value_t** %12, align 8, !dbg !941, !tbaa %jtbaa_arrayptr
%176 = getelementptr %jl_value_t* %175, i64 %i.0172, !dbg !941
%177 = bitcast %jl_value_t* %176 to double*, !dbg !941
%178 = load double* %177, align 8, !dbg !941, !tbaa %jtbaa_user
store %jl_value_t* %174, %jl_value_t** %6, align 8, !dbg !941
%179 = getelementptr inbounds %jl_value_t* %174, i64 1, i32 0, !dbg !941
%180 = load %jl_value_t** %179, align 8, !dbg !941, !tbaa %jtbaa_func
%181 = bitcast %jl_value_t* %180 to %jl_value_t* (%jl_value_t*, %jl_value_t**, i32)*, !dbg !941
%182 = call %jl_value_t* @alloc_2w(), !dbg !941
%183 = getelementptr inbounds %jl_value_t* %182, i64 0, i32 0, !dbg !941
store %jl_value_t* inttoptr (i64 16366064 to %jl_value_t*), %jl_value_t** %183, align 8, !dbg !941
%184 = getelementptr inbounds %jl_value_t* %182, i64 1, i32 0, !dbg !941
%185 = bitcast %jl_value_t** %184 to double*, !dbg !941
store double %178, double* %185, align 8, !dbg !941
store %jl_value_t* %182, %jl_value_t** %9, align 8, !dbg !941
%186 = call %jl_value_t* %181(%jl_value_t* %174, %jl_value_t** %9, i32 1), !dbg !941
store %jl_value_t* %186, %jl_value_t** %6, align 8, !dbg !941
%187 = load %jl_value_t** %13, align 8, !dbg !941
%188 = icmp eq %jl_value_t* %187, null, !dbg !941
br i1 %188, label %fail30, label %pass31, !dbg !941
fail30: ; preds = %pass29
%189 = load %jl_value_t** @jl_undefref_exception, align 8, !dbg !941, !tbaa %jtbaa_const
call void @jl_throw_with_superfluous_argument(%jl_value_t* %189, i32 263), !dbg !941
unreachable, !dbg !941
pass31: ; preds = %pass29
store %jl_value_t* %187, %jl_value_t** %9, align 8, !dbg !941
%190 = getelementptr inbounds %jl_value_t* %187, i64 1, i32 0, !dbg !941
%191 = load %jl_value_t** %190, align 8, !dbg !941, !tbaa %jtbaa_func
%192 = bitcast %jl_value_t* %191 to %jl_value_t* (%jl_value_t*, %jl_value_t**, i32)*, !dbg !941
%193 = call %jl_value_t* @alloc_2w(), !dbg !941
%194 = getelementptr inbounds %jl_value_t* %193, i64 0, i32 0, !dbg !941
store %jl_value_t* inttoptr (i64 16366064 to %jl_value_t*), %jl_value_t** %194, align 8, !dbg !941
%195 = getelementptr inbounds %jl_value_t* %193, i64 1, i32 0, !dbg !941
%196 = bitcast %jl_value_t** %195 to double*, !dbg !941
store double %172, double* %196, align 8, !dbg !941
store %jl_value_t* %193, %jl_value_t** %10, align 8, !dbg !941
%197 = call %jl_value_t* %192(%jl_value_t* %187, %jl_value_t** %10, i32 1), !dbg !941
store %jl_value_t* %197, %jl_value_t** %9, align 8, !dbg !941
%198 = call %jl_value_t* @jl_apply_generic(%jl_value_t* inttoptr (i64 29426160 to %jl_value_t*), %jl_value_t** %6, i32 2), !dbg !941
%199 = getelementptr inbounds %jl_value_t* %198, i64 0, i32 0, !dbg !941
%200 = load %jl_value_t** %199, align 8, !dbg !941
%201 = icmp eq %jl_value_t* %200, inttoptr (i64 16355872 to %jl_value_t*), !dbg !941
br i1 %201, label %pass33, label %fail32, !dbg !941
fail32: ; preds = %pass31
call void @jl_type_error_rt(i8* getelementptr inbounds ([6 x i8]* @_j_str33, i64 0, i64 0), i8* getelementptr inbounds ([3 x i8]* @_j_str2, i64 0, i64 0), %jl_value_t* inttoptr (i64 16355872 to %jl_value_t*), %jl_value_t* %198), !dbg !941
unreachable
pass33: ; preds = %pass31
%202 = add i64 %.in174, 1, !dbg !943
%203 = icmp eq %jl_value_t* %198, inttoptr (i64 16449232 to %jl_value_t*), !dbg !941
br i1 %203, label %L43, label %L34, !dbg !941
L34: ; preds = %pass33, %pass42
%i.1 = phi i64 [ %235, %pass42 ], [ %202, %pass33 ]
%204 = load %jl_value_t** %13, align 8, !dbg !941
%205 = icmp eq %jl_value_t* %204, null, !dbg !941
br i1 %205, label %fail37, label %pass38, !dbg !941
fail37: ; preds = %L34
%206 = load %jl_value_t** @jl_undefref_exception, align 8, !dbg !941, !tbaa %jtbaa_const
call void @jl_throw_with_superfluous_argument(%jl_value_t* %206, i32 263), !dbg !941
unreachable, !dbg !941
pass38: ; preds = %L34
%207 = load %jl_value_t** %12, align 8, !dbg !941, !tbaa %jtbaa_arrayptr
%208 = getelementptr %jl_value_t* %207, i64 %i.1, !dbg !941
%209 = bitcast %jl_value_t* %208 to double*, !dbg !941
%210 = load double* %209, align 8, !dbg !941, !tbaa %jtbaa_user
store %jl_value_t* %204, %jl_value_t** %6, align 8, !dbg !941
%211 = getelementptr inbounds %jl_value_t* %204, i64 1, i32 0, !dbg !941
%212 = load %jl_value_t** %211, align 8, !dbg !941, !tbaa %jtbaa_func
%213 = bitcast %jl_value_t* %212 to %jl_value_t* (%jl_value_t*, %jl_value_t**, i32)*, !dbg !941
%214 = call %jl_value_t* @alloc_2w(), !dbg !941
%215 = getelementptr inbounds %jl_value_t* %214, i64 0, i32 0, !dbg !941
store %jl_value_t* inttoptr (i64 16366064 to %jl_value_t*), %jl_value_t** %215, align 8, !dbg !941
%216 = getelementptr inbounds %jl_value_t* %214, i64 1, i32 0, !dbg !941
%217 = bitcast %jl_value_t** %216 to double*, !dbg !941
store double %210, double* %217, align 8, !dbg !941
store %jl_value_t* %214, %jl_value_t** %9, align 8, !dbg !941
%218 = call %jl_value_t* %213(%jl_value_t* %204, %jl_value_t** %9, i32 1), !dbg !941
store %jl_value_t* %218, %jl_value_t** %6, align 8, !dbg !941
%219 = load %jl_value_t** %13, align 8, !dbg !941
%220 = icmp eq %jl_value_t* %219, null, !dbg !941
br i1 %220, label %fail39, label %pass40, !dbg !941
fail39: ; preds = %pass38
%221 = load %jl_value_t** @jl_undefref_exception, align 8, !dbg !941, !tbaa %jtbaa_const
call void @jl_throw_with_superfluous_argument(%jl_value_t* %221, i32 263), !dbg !941
unreachable, !dbg !941
pass40: ; preds = %pass38
store %jl_value_t* %219, %jl_value_t** %9, align 8, !dbg !941
%222 = getelementptr inbounds %jl_value_t* %219, i64 1, i32 0, !dbg !941
%223 = load %jl_value_t** %222, align 8, !dbg !941, !tbaa %jtbaa_func
%224 = bitcast %jl_value_t* %223 to %jl_value_t* (%jl_value_t*, %jl_value_t**, i32)*, !dbg !941
%225 = call %jl_value_t* @alloc_2w(), !dbg !941
%226 = getelementptr inbounds %jl_value_t* %225, i64 0, i32 0, !dbg !941
store %jl_value_t* inttoptr (i64 16366064 to %jl_value_t*), %jl_value_t** %226, align 8, !dbg !941
%227 = getelementptr inbounds %jl_value_t* %225, i64 1, i32 0, !dbg !941
%228 = bitcast %jl_value_t** %227 to double*, !dbg !941
store double %172, double* %228, align 8, !dbg !941
store %jl_value_t* %225, %jl_value_t** %10, align 8, !dbg !941
%229 = call %jl_value_t* %224(%jl_value_t* %219, %jl_value_t** %10, i32 1), !dbg !941
store %jl_value_t* %229, %jl_value_t** %9, align 8, !dbg !941
%230 = call %jl_value_t* @jl_apply_generic(%jl_value_t* inttoptr (i64 29426160 to %jl_value_t*), %jl_value_t** %6, i32 2), !dbg !941
store %jl_value_t* %230, %jl_value_t** %6, align 8, !dbg !941
%231 = call %jl_value_t* @jl_apply_generic(%jl_value_t* inttoptr (i64 35355776 to %jl_value_t*), %jl_value_t** %6, i32 1), !dbg !941
%232 = getelementptr inbounds %jl_value_t* %231, i64 0, i32 0, !dbg !941
%233 = load %jl_value_t** %232, align 8, !dbg !941
%234 = icmp eq %jl_value_t* %233, inttoptr (i64 16355872 to %jl_value_t*), !dbg !941
br i1 %234, label %pass42, label %fail41, !dbg !941
fail41: ; preds = %pass40
call void @jl_type_error_rt(i8* getelementptr inbounds ([6 x i8]* @_j_str33, i64 0, i64 0), i8* getelementptr inbounds ([3 x i8]* @_j_str2, i64 0, i64 0), %jl_value_t* inttoptr (i64 16355872 to %jl_value_t*), %jl_value_t* %231), !dbg !941
unreachable
pass42: ; preds = %pass40
%235 = add i64 %i.1, 1, !dbg !941
%236 = icmp eq %jl_value_t* %231, inttoptr (i64 16449232 to %jl_value_t*), !dbg !941
br i1 %236, label %L34, label %L43, !dbg !941
L43: ; preds = %pass42, %pass33
%i.2 = phi i64 [ %202, %pass33 ], [ %235, %pass42 ]
%237 = load %jl_value_t** %13, align 8, !dbg !944
%238 = icmp eq %jl_value_t* %237, null, !dbg !944
br i1 %238, label %fail45, label %pass46, !dbg !944
fail45: ; preds = %L43
%239 = load %jl_value_t** @jl_undefref_exception, align 8, !dbg !944, !tbaa %jtbaa_const
call void @jl_throw_with_superfluous_argument(%jl_value_t* %239, i32 264), !dbg !944
unreachable, !dbg !944
pass46: ; preds = %L43
%240 = add i64 %j.0173, -2, !dbg !944
%241 = load %jl_value_t** %12, align 8, !dbg !944, !tbaa %jtbaa_arrayptr
%242 = getelementptr %jl_value_t* %241, i64 %240, !dbg !944
%243 = bitcast %jl_value_t* %242 to double*, !dbg !944
%244 = load double* %243, align 8, !dbg !944, !tbaa %jtbaa_user
store %jl_value_t* %237, %jl_value_t** %6, align 8, !dbg !944
%245 = getelementptr inbounds %jl_value_t* %237, i64 1, i32 0, !dbg !944
%246 = load %jl_value_t** %245, align 8, !dbg !944, !tbaa %jtbaa_func
%247 = bitcast %jl_value_t* %246 to %jl_value_t* (%jl_value_t*, %jl_value_t**, i32)*, !dbg !944
%248 = call %jl_value_t* @alloc_2w(), !dbg !944
%249 = getelementptr inbounds %jl_value_t* %248, i64 0, i32 0, !dbg !944
store %jl_value_t* inttoptr (i64 16366064 to %jl_value_t*), %jl_value_t** %249, align 8, !dbg !944
%250 = getelementptr inbounds %jl_value_t* %248, i64 1, i32 0, !dbg !944
%251 = bitcast %jl_value_t** %250 to double*, !dbg !944
store double %172, double* %251, align 8, !dbg !944
store %jl_value_t* %248, %jl_value_t** %9, align 8, !dbg !944
%252 = call %jl_value_t* %247(%jl_value_t* %237, %jl_value_t** %9, i32 1), !dbg !944
store %jl_value_t* %252, %jl_value_t** %6, align 8, !dbg !944
%253 = load %jl_value_t** %13, align 8, !dbg !944
%254 = icmp eq %jl_value_t* %253, null, !dbg !944
br i1 %254, label %fail47, label %pass48, !dbg !944
fail47: ; preds = %pass46
%255 = load %jl_value_t** @jl_undefref_exception, align 8, !dbg !944, !tbaa %jtbaa_const
call void @jl_throw_with_superfluous_argument(%jl_value_t* %255, i32 264), !dbg !944
unreachable, !dbg !944
pass48: ; preds = %pass46
store %jl_value_t* %253, %jl_value_t** %9, align 8, !dbg !944
%256 = getelementptr inbounds %jl_value_t* %253, i64 1, i32 0, !dbg !944
%257 = load %jl_value_t** %256, align 8, !dbg !944, !tbaa %jtbaa_func
%258 = bitcast %jl_value_t* %257 to %jl_value_t* (%jl_value_t*, %jl_value_t**, i32)*, !dbg !944
%259 = call %jl_value_t* @alloc_2w(), !dbg !944
%260 = getelementptr inbounds %jl_value_t* %259, i64 0, i32 0, !dbg !944
store %jl_value_t* inttoptr (i64 16366064 to %jl_value_t*), %jl_value_t** %260, align 8, !dbg !944
%261 = getelementptr inbounds %jl_value_t* %259, i64 1, i32 0, !dbg !944
%262 = bitcast %jl_value_t** %261 to double*, !dbg !944
store double %244, double* %262, align 8, !dbg !944
store %jl_value_t* %259, %jl_value_t** %10, align 8, !dbg !944
%263 = call %jl_value_t* %258(%jl_value_t* %253, %jl_value_t** %10, i32 1), !dbg !944
store %jl_value_t* %263, %jl_value_t** %9, align 8, !dbg !944
%264 = call %jl_value_t* @jl_apply_generic(%jl_value_t* inttoptr (i64 29426160 to %jl_value_t*), %jl_value_t** %6, i32 2), !dbg !944
%265 = getelementptr inbounds %jl_value_t* %264, i64 0, i32 0, !dbg !944
%266 = load %jl_value_t** %265, align 8, !dbg !944
%267 = icmp eq %jl_value_t* %266, inttoptr (i64 16355872 to %jl_value_t*), !dbg !944
br i1 %267, label %pass50, label %fail49, !dbg !944
fail49: ; preds = %pass48
call void @jl_type_error_rt(i8* getelementptr inbounds ([6 x i8]* @_j_str33, i64 0, i64 0), i8* getelementptr inbounds ([3 x i8]* @_j_str2, i64 0, i64 0), %jl_value_t* inttoptr (i64 16355872 to %jl_value_t*), %jl_value_t* %264), !dbg !944
unreachable
pass50: ; preds = %pass48
%268 = add i64 %.in, -1, !dbg !943
%269 = icmp eq %jl_value_t* %264, inttoptr (i64 16449232 to %jl_value_t*), !dbg !944
br i1 %269, label %L60, label %L51, !dbg !944
L51: ; preds = %pass50, %pass59
%j.1 = phi i64 [ %302, %pass59 ], [ %268, %pass50 ]
%270 = load %jl_value_t** %13, align 8, !dbg !944
%271 = icmp eq %jl_value_t* %270, null, !dbg !944
br i1 %271, label %fail54, label %pass55, !dbg !944
fail54: ; preds = %L51
%272 = load %jl_value_t** @jl_undefref_exception, align 8, !dbg !944, !tbaa %jtbaa_const
call void @jl_throw_with_superfluous_argument(%jl_value_t* %272, i32 264), !dbg !944
unreachable, !dbg !944
pass55: ; preds = %L51
%273 = add i64 %j.1, -2, !dbg !944
%274 = load %jl_value_t** %12, align 8, !dbg !944, !tbaa %jtbaa_arrayptr
%275 = getelementptr %jl_value_t* %274, i64 %273, !dbg !944
%276 = bitcast %jl_value_t* %275 to double*, !dbg !944
%277 = load double* %276, align 8, !dbg !944, !tbaa %jtbaa_user
store %jl_value_t* %270, %jl_value_t** %6, align 8, !dbg !944
%278 = getelementptr inbounds %jl_value_t* %270, i64 1, i32 0, !dbg !944
%279 = load %jl_value_t** %278, align 8, !dbg !944, !tbaa %jtbaa_func
%280 = bitcast %jl_value_t* %279 to %jl_value_t* (%jl_value_t*, %jl_value_t**, i32)*, !dbg !944
%281 = call %jl_value_t* @alloc_2w(), !dbg !944
%282 = getelementptr inbounds %jl_value_t* %281, i64 0, i32 0, !dbg !944
store %jl_value_t* inttoptr (i64 16366064 to %jl_value_t*), %jl_value_t** %282, align 8, !dbg !944
%283 = getelementptr inbounds %jl_value_t* %281, i64 1, i32 0, !dbg !944
%284 = bitcast %jl_value_t** %283 to double*, !dbg !944
store double %172, double* %284, align 8, !dbg !944
store %jl_value_t* %281, %jl_value_t** %9, align 8, !dbg !944
%285 = call %jl_value_t* %280(%jl_value_t* %270, %jl_value_t** %9, i32 1), !dbg !944
store %jl_value_t* %285, %jl_value_t** %6, align 8, !dbg !944
%286 = load %jl_value_t** %13, align 8, !dbg !944
%287 = icmp eq %jl_value_t* %286, null, !dbg !944
br i1 %287, label %fail56, label %pass57, !dbg !944
fail56: ; preds = %pass55
%288 = load %jl_value_t** @jl_undefref_exception, align 8, !dbg !944, !tbaa %jtbaa_const
call void @jl_throw_with_superfluous_argument(%jl_value_t* %288, i32 264), !dbg !944
unreachable, !dbg !944
pass57: ; preds = %pass55
store %jl_value_t* %286, %jl_value_t** %9, align 8, !dbg !944
%289 = getelementptr inbounds %jl_value_t* %286, i64 1, i32 0, !dbg !944
%290 = load %jl_value_t** %289, align 8, !dbg !944, !tbaa %jtbaa_func
%291 = bitcast %jl_value_t* %290 to %jl_value_t* (%jl_value_t*, %jl_value_t**, i32)*, !dbg !944
%292 = call %jl_value_t* @alloc_2w(), !dbg !944
%293 = getelementptr inbounds %jl_value_t* %292, i64 0, i32 0, !dbg !944
store %jl_value_t* inttoptr (i64 16366064 to %jl_value_t*), %jl_value_t** %293, align 8, !dbg !944
%294 = getelementptr inbounds %jl_value_t* %292, i64 1, i32 0, !dbg !944
%295 = bitcast %jl_value_t** %294 to double*, !dbg !944
store double %277, double* %295, align 8, !dbg !944
store %jl_value_t* %292, %jl_value_t** %10, align 8, !dbg !944
%296 = call %jl_value_t* %291(%jl_value_t* %286, %jl_value_t** %10, i32 1), !dbg !944
store %jl_value_t* %296, %jl_value_t** %9, align 8, !dbg !944
%297 = call %jl_value_t* @jl_apply_generic(%jl_value_t* inttoptr (i64 29426160 to %jl_value_t*), %jl_value_t** %6, i32 2), !dbg !944
store %jl_value_t* %297, %jl_value_t** %6, align 8, !dbg !944
%298 = call %jl_value_t* @jl_apply_generic(%jl_value_t* inttoptr (i64 35355776 to %jl_value_t*), %jl_value_t** %6, i32 1), !dbg !944
%299 = getelementptr inbounds %jl_value_t* %298, i64 0, i32 0, !dbg !944
%300 = load %jl_value_t** %299, align 8, !dbg !944
%301 = icmp eq %jl_value_t* %300, inttoptr (i64 16355872 to %jl_value_t*), !dbg !944
br i1 %301, label %pass59, label %fail58, !dbg !944
fail58: ; preds = %pass57
call void @jl_type_error_rt(i8* getelementptr inbounds ([6 x i8]* @_j_str33, i64 0, i64 0), i8* getelementptr inbounds ([3 x i8]* @_j_str2, i64 0, i64 0), %jl_value_t* inttoptr (i64 16355872 to %jl_value_t*), %jl_value_t* %298), !dbg !944
unreachable
pass59: ; preds = %pass57
%302 = add i64 %j.1, -1, !dbg !944
%303 = icmp eq %jl_value_t* %298, inttoptr (i64 16449232 to %jl_value_t*), !dbg !944
br i1 %303, label %L51, label %L60, !dbg !944
L60: ; preds = %pass59, %pass50
%j.2 = phi i64 [ %268, %pass50 ], [ %302, %pass59 ]
%304 = icmp sgt i64 %j.2, %i.2, !dbg !945
br i1 %304, label %L63, label %L66, !dbg !945
L63: ; preds = %L60
%305 = add i64 %j.2, -1, !dbg !946
%306 = load %jl_value_t** %12, align 8, !dbg !946, !tbaa %jtbaa_arrayptr
%307 = getelementptr %jl_value_t* %306, i64 %305, !dbg !946
%308 = bitcast %jl_value_t* %307 to double*, !dbg !946
%309 = load double* %308, align 8, !dbg !946, !tbaa %jtbaa_user
%310 = add i64 %i.2, -1, !dbg !946
%311 = getelementptr %jl_value_t* %306, i64 %310, !dbg !946
%312 = bitcast %jl_value_t* %311 to double*, !dbg !946
%313 = load double* %312, align 8, !dbg !946, !tbaa %jtbaa_user
store double %309, double* %312, align 8, !dbg !946, !tbaa %jtbaa_user
%314 = load %jl_value_t** %12, align 8, !dbg !946, !tbaa %jtbaa_arrayptr
%315 = getelementptr %jl_value_t* %314, i64 %305, !dbg !946
%316 = bitcast %jl_value_t* %315 to double*, !dbg !946
store double %313, double* %316, align 8, !dbg !946, !tbaa %jtbaa_user
%317 = load %jl_value_t** %13, align 8, !dbg !941
%318 = icmp eq %jl_value_t* %317, null, !dbg !941
br i1 %318, label %fail28, label %pass29, !dbg !941
L66: ; preds = %L60
%319 = load %jl_value_t** %12, align 8, !dbg !947, !tbaa %jtbaa_arrayptr
%320 = getelementptr %jl_value_t* %319, i64 %35, !dbg !947
%321 = bitcast %jl_value_t* %320 to double*, !dbg !947
%322 = load double* %321, align 8, !dbg !947, !tbaa %jtbaa_user
%323 = add i64 %j.2, -1, !dbg !947
%324 = getelementptr %jl_value_t* %319, i64 %323, !dbg !947
%325 = bitcast %jl_value_t* %324 to double*, !dbg !947
%326 = load double* %325, align 8, !dbg !947, !tbaa %jtbaa_user
store double %322, double* %325, align 8, !dbg !947, !tbaa %jtbaa_user
%327 = load %jl_value_t** %12, align 8, !dbg !947, !tbaa %jtbaa_arrayptr
%328 = getelementptr %jl_value_t* %327, i64 %35, !dbg !947
%329 = bitcast %jl_value_t* %328 to double*, !dbg !947
store double %326, double* %329, align 8, !dbg !947, !tbaa %jtbaa_user
%330 = icmp slt i64 %lo.0, %323, !dbg !948
br i1 %330, label %if67, label %L69, !dbg !948
if67: ; preds = %L66
%331 = call %jl_value_t* @"julia_sort!;18847"(%jl_value_t* %0, i64 %lo.0, i64 %323, %jl_value_t* %3, %jl_value_t* %4), !dbg !948
br label %L69, !dbg !948
L69: ; preds = %L66, %if67
%332 = add i64 %j.2, 1, !dbg !949
%333 = icmp slt i64 %332, %2, !dbg !949
br i1 %333, label %L, label %L72, !dbg !949
L72: ; preds = %L69, %top
%334 = load %jl_value_t** %7, align 8, !dbg !950
%335 = getelementptr inbounds %jl_value_t* %334, i64 0, i32 0, !dbg !950
store %jl_value_t** %335, %jl_value_t*** @jl_pgcstack, align 8, !dbg !950
ret %jl_value_t* %0, !dbg !950
}
define %jl_value_t* @"julia_sort!;18879"(%jl_value_t*, i64, i64, %jl_value_t*, %jl_value_t*) {
top:
%5 = icmp slt i64 %1, %2, !dbg !1028
br i1 %5, label %L.preheader, label %L32, !dbg !1028
L.preheader: ; preds = %top
%6 = getelementptr inbounds %jl_value_t* %0, i64 1, i32 0, !dbg !1029
%7 = add i64 %2, -1, !dbg !1030
br label %L, !dbg !1031
L: ; preds = %L.preheader, %L29
%lo.0 = phi i64 [ %204, %L29 ], [ %1, %L.preheader ]
%8 = sub i64 %2, %lo.0, !dbg !1031
%9 = icmp sgt i64 %8, 20, !dbg !1031
br i1 %9, label %L2, label %if1, !dbg !1031
if1: ; preds = %L
%10 = load %jl_value_t** inttoptr (i64 17946240 to %jl_value_t**), align 128, !dbg !1031
%11 = call %jl_value_t* @"julia_sort!;18880"(%jl_value_t* %0, i64 %lo.0, i64 %2, %jl_value_t* %10, %jl_value_t* %4), !dbg !1031
ret %jl_value_t* %11, !dbg !1031
L2: ; preds = %L
%12 = add i64 %lo.0, %2, !dbg !1032
%13 = lshr i64 %12, 1, !dbg !1032
%14 = add i64 %13, -1, !dbg !1029
%15 = load %jl_value_t** %6, align 8, !dbg !1029, !tbaa %jtbaa_arrayptr
%16 = getelementptr %jl_value_t* %15, i64 %14, !dbg !1029
%17 = bitcast %jl_value_t* %16 to double*, !dbg !1029
%18 = load double* %17, align 8, !dbg !1029, !tbaa %jtbaa_user
%19 = add i64 %lo.0, -1, !dbg !1029
%20 = getelementptr %jl_value_t* %15, i64 %19, !dbg !1029
%21 = bitcast %jl_value_t* %20 to double*, !dbg !1029
%22 = load double* %21, align 8, !dbg !1029, !tbaa %jtbaa_user
%23 = bitcast double %18 to i64, !dbg !1029
%24 = bitcast double %22 to i64, !dbg !1029
%25 = icmp ugt i64 %23, %24, !dbg !1029
%26 = icmp slt i64 %23, 0, !dbg !1029
%27 = and i1 %26, %25, !dbg !1029
%28 = icmp slt i64 %23, %24, !dbg !1029
%29 = icmp sgt i64 %23, -1, !dbg !1029
%30 = and i1 %29, %28, !dbg !1029
%31 = or i1 %30, %27, !dbg !1029
%32 = fcmp ord double %18, %22, !dbg !1029
%33 = and i1 %32, %31, !dbg !1029
%34 = fcmp uno double %22, 0.000000e+00, !dbg !1029
%35 = fcmp ord double %18, 0.000000e+00, !dbg !1029
%36 = and i1 %35, %34, !dbg !1029
%37 = or i1 %36, %33, !dbg !1029
br i1 %37, label %if3, label %L4, !dbg !1029
if3: ; preds = %L2
store double %22, double* %17, align 8, !dbg !1038, !tbaa %jtbaa_user
%38 = load %jl_value_t** %6, align 8, !dbg !1038, !tbaa %jtbaa_arrayptr
%39 = getelementptr %jl_value_t* %38, i64 %19, !dbg !1038
%40 = bitcast %jl_value_t* %39 to double*, !dbg !1038
store double %18, double* %40, align 8, !dbg !1038, !tbaa %jtbaa_user
br label %L4, !dbg !1038
L4: ; preds = %L2, %if3
%41 = load %jl_value_t** %6, align 8, !dbg !1030, !tbaa %jtbaa_arrayptr
%42 = getelementptr %jl_value_t* %41, i64 %7, !dbg !1030
%43 = bitcast %jl_value_t* %42 to double*, !dbg !1030
%44 = load double* %43, align 8, !dbg !1030, !tbaa %jtbaa_user
%45 = getelementptr %jl_value_t* %41, i64 %14, !dbg !1030
%46 = bitcast %jl_value_t* %45 to double*, !dbg !1030
%47 = load double* %46, align 8, !dbg !1030, !tbaa %jtbaa_user
%48 = bitcast double %44 to i64, !dbg !1030
%49 = bitcast double %47 to i64, !dbg !1030
%50 = icmp ugt i64 %48, %49, !dbg !1030
%51 = icmp slt i64 %48, 0, !dbg !1030
%52 = and i1 %51, %50, !dbg !1030
%53 = icmp slt i64 %48, %49, !dbg !1030
%54 = icmp sgt i64 %48, -1, !dbg !1030
%55 = and i1 %54, %53, !dbg !1030
%56 = or i1 %55, %52, !dbg !1030
%57 = fcmp ord double %44, %47, !dbg !1030
%58 = and i1 %57, %56, !dbg !1030
%59 = fcmp uno double %47, 0.000000e+00, !dbg !1030
%60 = fcmp ord double %44, 0.000000e+00, !dbg !1030
%61 = and i1 %60, %59, !dbg !1030
%62 = or i1 %61, %58, !dbg !1030
br i1 %62, label %if5, label %L6, !dbg !1030
if5: ; preds = %L4
store double %47, double* %43, align 8, !dbg !1039, !tbaa %jtbaa_user
%63 = load %jl_value_t** %6, align 8, !dbg !1039, !tbaa %jtbaa_arrayptr
%64 = getelementptr %jl_value_t* %63, i64 %14, !dbg !1039
%65 = bitcast %jl_value_t* %64 to double*, !dbg !1039
store double %44, double* %65, align 8, !dbg !1039, !tbaa %jtbaa_user
br label %L6, !dbg !1039
L6: ; preds = %L4, %if5
%66 = load %jl_value_t** %6, align 8, !dbg !1040, !tbaa %jtbaa_arrayptr
%67 = getelementptr %jl_value_t* %66, i64 %14, !dbg !1040
%68 = bitcast %jl_value_t* %67 to double*, !dbg !1040
%69 = load double* %68, align 8, !dbg !1040, !tbaa %jtbaa_user
%70 = getelementptr %jl_value_t* %66, i64 %19, !dbg !1040
%71 = bitcast %jl_value_t* %70 to double*, !dbg !1040
%72 = load double* %71, align 8, !dbg !1040, !tbaa %jtbaa_user
%73 = bitcast double %69 to i64, !dbg !1040
%74 = bitcast double %72 to i64, !dbg !1040
%75 = icmp ugt i64 %73, %74, !dbg !1040
%76 = icmp slt i64 %73, 0, !dbg !1040
%77 = and i1 %76, %75, !dbg !1040
%78 = icmp slt i64 %73, %74, !dbg !1040
%79 = icmp sgt i64 %73, -1, !dbg !1040
%80 = and i1 %79, %78, !dbg !1040
%81 = or i1 %80, %77, !dbg !1040
%82 = fcmp ord double %69, %72, !dbg !1040
%83 = and i1 %82, %81, !dbg !1040
%84 = fcmp uno double %72, 0.000000e+00, !dbg !1040
%85 = fcmp ord double %69, 0.000000e+00, !dbg !1040
%86 = and i1 %85, %84, !dbg !1040
%87 = or i1 %86, %83, !dbg !1040
br i1 %87, label %if7, label %L8, !dbg !1040
if7: ; preds = %L6
store double %72, double* %68, align 8, !dbg !1041, !tbaa %jtbaa_user
%88 = load %jl_value_t** %6, align 8, !dbg !1041, !tbaa %jtbaa_arrayptr
%89 = getelementptr %jl_value_t* %88, i64 %19, !dbg !1041
%90 = bitcast %jl_value_t* %89 to double*, !dbg !1041
store double %69, double* %90, align 8, !dbg !1041, !tbaa %jtbaa_user
br label %L8, !dbg !1041
L8: ; preds = %L6, %if7
%91 = load %jl_value_t** %6, align 8, !dbg !1042, !tbaa %jtbaa_arrayptr
%92 = getelementptr %jl_value_t* %91, i64 %19, !dbg !1042
%93 = bitcast %jl_value_t* %92 to double*, !dbg !1042
%94 = load double* %93, align 8, !dbg !1042, !tbaa %jtbaa_user
%95 = getelementptr %jl_value_t* %91, i64 %14, !dbg !1042
%96 = bitcast %jl_value_t* %95 to double*, !dbg !1042
%97 = load double* %96, align 8, !dbg !1042, !tbaa %jtbaa_user
store double %94, double* %96, align 8, !dbg !1042, !tbaa %jtbaa_user
%98 = load %jl_value_t** %6, align 8, !dbg !1042, !tbaa %jtbaa_arrayptr
%99 = getelementptr %jl_value_t* %98, i64 %19, !dbg !1042
%100 = bitcast %jl_value_t* %99 to double*, !dbg !1042
store double %97, double* %100, align 8, !dbg !1042, !tbaa %jtbaa_user
%101 = load %jl_value_t** %6, align 8, !dbg !1043, !tbaa %jtbaa_arrayptr
%102 = getelementptr %jl_value_t* %101, i64 %19, !dbg !1043
%103 = bitcast %jl_value_t* %102 to double*, !dbg !1043
%104 = load double* %103, align 8, !dbg !1043, !tbaa %jtbaa_user
%105 = bitcast double %104 to i64, !dbg !1044
%106 = fcmp uno double %104, 0.000000e+00, !dbg !1044
%107 = icmp slt i64 %105, 0, !dbg !1045
%108 = icmp sgt i64 %105, -1, !dbg !1045
%109 = fcmp ord double %104, 0.000000e+00, !dbg !1045
br label %L10, !dbg !1046
L10: ; preds = %L23, %L8
%i.0 = phi i64 [ %lo.0, %L8 ], [ %i.2, %L23 ]
%j.0 = phi i64 [ %2, %L8 ], [ %j.2, %L23 ]
%110 = add i64 %i.0, 1, !dbg !1047
%111 = getelementptr %jl_value_t* %101, i64 %i.0, !dbg !1044
%112 = bitcast %jl_value_t* %111 to double*, !dbg !1044
%113 = load double* %112, align 8, !dbg !1044, !tbaa %jtbaa_user
%114 = bitcast double %113 to i64, !dbg !1044
%115 = icmp ugt i64 %114, %105, !dbg !1044
%116 = icmp slt i64 %114, 0, !dbg !1044
%117 = and i1 %116, %115, !dbg !1044
%118 = icmp slt i64 %114, %105, !dbg !1044
%119 = icmp sgt i64 %114, -1, !dbg !1044
%120 = and i1 %119, %118, !dbg !1044
%121 = or i1 %120, %117, !dbg !1044
%122 = fcmp ord double %113, %104, !dbg !1044
%123 = and i1 %122, %121, !dbg !1044
%124 = fcmp ord double %113, 0.000000e+00, !dbg !1044
%125 = and i1 %124, %106, !dbg !1044
%126 = or i1 %125, %123, !dbg !1044
br i1 %126, label %L12.preheader, label %L15, !dbg !1044
L12.preheader: ; preds = %L10
%127 = load %jl_value_t** %6, align 8, !dbg !1044, !tbaa %jtbaa_arrayptr
br label %L12, !dbg !1044
L12: ; preds = %L12.preheader, %L12
%i.1 = phi i64 [ %128, %L12 ], [ %110, %L12.preheader ]
%128 = add i64 %i.1, 1, !dbg !1044
%129 = getelementptr %jl_value_t* %127, i64 %i.1, !dbg !1044
%130 = bitcast %jl_value_t* %129 to double*, !dbg !1044
%131 = load double* %130, align 8, !dbg !1044, !tbaa %jtbaa_user
%132 = bitcast double %131 to i64, !dbg !1044
%133 = icmp ugt i64 %132, %105, !dbg !1044
%134 = icmp slt i64 %132, 0, !dbg !1044
%135 = and i1 %134, %133, !dbg !1044
%136 = icmp slt i64 %132, %105, !dbg !1044
%137 = icmp sgt i64 %132, -1, !dbg !1044
%138 = and i1 %137, %136, !dbg !1044
%139 = or i1 %138, %135, !dbg !1044
%140 = fcmp ord double %131, %104, !dbg !1044
%141 = and i1 %140, %139, !dbg !1044
%142 = fcmp ord double %131, 0.000000e+00, !dbg !1044
%143 = and i1 %142, %106, !dbg !1044
%144 = or i1 %143, %141, !dbg !1044
br i1 %144, label %L12, label %L15, !dbg !1044
L15: ; preds = %L12, %L10
%i.2 = phi i64 [ %110, %L10 ], [ %128, %L12 ]
%145 = add i64 %j.0, -1, !dbg !1047
%146 = add i64 %j.0, -2, !dbg !1045
%147 = getelementptr %jl_value_t* %101, i64 %146, !dbg !1045
%148 = bitcast %jl_value_t* %147 to double*, !dbg !1045
%149 = load double* %148, align 8, !dbg !1045, !tbaa %jtbaa_user
%150 = bitcast double %149 to i64, !dbg !1045
%151 = icmp ugt i64 %105, %150, !dbg !1045
%152 = and i1 %107, %151, !dbg !1045
%153 = icmp slt i64 %105, %150, !dbg !1045
%154 = and i1 %108, %153, !dbg !1045
%155 = or i1 %154, %152, !dbg !1045
%156 = fcmp ord double %104, %149, !dbg !1045
%157 = and i1 %156, %155, !dbg !1045
%158 = fcmp uno double %149, 0.000000e+00, !dbg !1045
%159 = and i1 %109, %158, !dbg !1045
%160 = or i1 %159, %157, !dbg !1045
br i1 %160, label %L17.preheader, label %L20, !dbg !1045
L17.preheader: ; preds = %L15
%161 = load %jl_value_t** %6, align 8, !dbg !1045, !tbaa %jtbaa_arrayptr
br label %L17, !dbg !1045
L17: ; preds = %L17.preheader, %L17
%j.1 = phi i64 [ %162, %L17 ], [ %145, %L17.preheader ]
%162 = add i64 %j.1, -1, !dbg !1045
%163 = add i64 %j.1, -2, !dbg !1045
%164 = getelementptr %jl_value_t* %161, i64 %163, !dbg !1045
%165 = bitcast %jl_value_t* %164 to double*, !dbg !1045
%166 = load double* %165, align 8, !dbg !1045, !tbaa %jtbaa_user
%167 = bitcast double %166 to i64, !dbg !1045
%168 = icmp ugt i64 %105, %167, !dbg !1045
%169 = and i1 %107, %168, !dbg !1045
%170 = icmp slt i64 %105, %167, !dbg !1045
%171 = and i1 %108, %170, !dbg !1045
%172 = or i1 %171, %169, !dbg !1045
%173 = fcmp ord double %104, %166, !dbg !1045
%174 = and i1 %173, %172, !dbg !1045
%175 = fcmp uno double %166, 0.000000e+00, !dbg !1045
%176 = and i1 %109, %175, !dbg !1045
%177 = or i1 %176, %174, !dbg !1045
br i1 %177, label %L17, label %L20, !dbg !1045
L20: ; preds = %L17, %L15
%j.2 = phi i64 [ %145, %L15 ], [ %162, %L17 ]
%178 = icmp sgt i64 %j.2, %i.2, !dbg !1048
br i1 %178, label %L23, label %L26, !dbg !1048
L23: ; preds = %L20
%179 = add i64 %j.2, -1, !dbg !1049
%180 = load %jl_value_t** %6, align 8, !dbg !1049, !tbaa %jtbaa_arrayptr
%181 = getelementptr %jl_value_t* %180, i64 %179, !dbg !1049
%182 = bitcast %jl_value_t* %181 to double*, !dbg !1049
%183 = load double* %182, align 8, !dbg !1049, !tbaa %jtbaa_user
%184 = add i64 %i.2, -1, !dbg !1049
%185 = getelementptr %jl_value_t* %180, i64 %184, !dbg !1049
%186 = bitcast %jl_value_t* %185 to double*, !dbg !1049
%187 = load double* %186, align 8, !dbg !1049, !tbaa %jtbaa_user
store double %183, double* %186, align 8, !dbg !1049, !tbaa %jtbaa_user
%188 = load %jl_value_t** %6, align 8, !dbg !1049, !tbaa %jtbaa_arrayptr
%189 = getelementptr %jl_value_t* %188, i64 %179, !dbg !1049
%190 = bitcast %jl_value_t* %189 to double*, !dbg !1049
store double %187, double* %190, align 8, !dbg !1049, !tbaa %jtbaa_user
br label %L10, !dbg !1049
L26: ; preds = %L20
%191 = load %jl_value_t** %6, align 8, !dbg !1050, !tbaa %jtbaa_arrayptr
%192 = getelementptr %jl_value_t* %191, i64 %19, !dbg !1050
%193 = bitcast %jl_value_t* %192 to double*, !dbg !1050
%194 = load double* %193, align 8, !dbg !1050, !tbaa %jtbaa_user
%195 = add i64 %j.2, -1, !dbg !1050
%196 = getelementptr %jl_value_t* %191, i64 %195, !dbg !1050
%197 = bitcast %jl_value_t* %196 to double*, !dbg !1050
%198 = load double* %197, align 8, !dbg !1050, !tbaa %jtbaa_user
store double %194, double* %197, align 8, !dbg !1050, !tbaa %jtbaa_user
%199 = load %jl_value_t** %6, align 8, !dbg !1050, !tbaa %jtbaa_arrayptr
%200 = getelementptr %jl_value_t* %199, i64 %19, !dbg !1050
%201 = bitcast %jl_value_t* %200 to double*, !dbg !1050
store double %198, double* %201, align 8, !dbg !1050, !tbaa %jtbaa_user
%202 = icmp slt i64 %lo.0, %195, !dbg !1051
br i1 %202, label %if27, label %L29, !dbg !1051
if27: ; preds = %L26
%203 = call %jl_value_t* @"julia_sort!;18879"(%jl_value_t* %0, i64 %lo.0, i64 %195, %jl_value_t* %3, %jl_value_t* %4), !dbg !1051
br label %L29, !dbg !1051
L29: ; preds = %L26, %if27
%204 = add i64 %j.2, 1, !dbg !1052
%205 = icmp slt i64 %204, %2, !dbg !1052
br i1 %205, label %L, label %L32, !dbg !1052
L32: ; preds = %L29, %top
ret %jl_value_t* %0, !dbg !1053
}
.text
Filename: sort.jl
Source line: 246
push RBP
mov RBP, RSP
push R15
push R14
push R13
push R12
push RBX
sub RSP, 120
mov R14, R8
mov QWORD PTR [RBP - 144], RCX
mov QWORD PTR [RBP - 136], RDX
mov R13, RDI
mov QWORD PTR [RBP - 112], R13
mov QWORD PTR [RBP - 80], 6
Source line: 246
movabs RCX, 140500490038576
mov RAX, QWORD PTR [RCX]
mov QWORD PTR [RBP - 72], RAX
lea RAX, QWORD PTR [RBP - 80]
mov QWORD PTR [RCX], RAX
xorps XMM0, XMM0
movups XMMWORD PTR [RBP - 64], XMM0
mov QWORD PTR [RBP - 48], 0
cmp RSI, RDX
jge 2034
Source line: 247
mov RAX, RDX
sub RAX, RSI
cmp RAX, 20
jle 2043
Source line: 249
mov R12, QWORD PTR [R14 + 8]
test R12, R12
je 2088
mov RAX, QWORD PTR [R13 + 8]
movsd XMM0, QWORD PTR [RAX + 8*RSI - 8]
movsd QWORD PTR [RBP - 96], XMM0
movabs R15, 140500474673376
Source line: 248
lea RCX, QWORD PTR [RSI + RDX]
mov QWORD PTR [RBP - 128], RSI
mov R13, RDX
shr RCX
Source line: 249
mov QWORD PTR [RBP - 88], RCX
movsd XMM0, QWORD PTR [RAX + 8*RCX - 8]
movsd QWORD PTR [RBP - 104], XMM0
mov QWORD PTR [RBP - 64], R12
mov RBX, QWORD PTR [R12 + 8]
call R15
mov QWORD PTR [RAX], 16366064
movsd XMM0, QWORD PTR [RBP - 104]
movsd QWORD PTR [RAX + 8], XMM0
mov QWORD PTR [RBP - 56], RAX
mov RDI, R12
lea RSI, QWORD PTR [RBP - 56]
mov EDX, 1
call RBX
mov QWORD PTR [RBP - 64], RAX
mov RBX, QWORD PTR [R14 + 8]
test RBX, RBX
je 1970
mov QWORD PTR [RBP - 56], RBX
mov R12, QWORD PTR [RBX + 8]
call R15
mov QWORD PTR [RAX], 16366064
movsd XMM0, QWORD PTR [RBP - 96]
movsd QWORD PTR [RAX + 8], XMM0
mov QWORD PTR [RBP - 48], RAX
mov RDI, RBX
lea RSI, QWORD PTR [RBP - 48]
mov EDX, 1
call R12
mov QWORD PTR [RBP - 56], RAX
mov EDI, 29426160
Source line: 246
lea RSI, QWORD PTR [RBP - 64]
mov EDX, 2
Source line: 249
movabs RAX, 140500474312064
call RAX
cmp QWORD PTR [RAX], 16355872
jne 2000
cmp RAX, 16449232
mov RDX, QWORD PTR [RBP - 128]
mov RSI, QWORD PTR [RBP - 88]
je 36
mov RCX, QWORD PTR [RBP - 112]
Source line: 250
mov RAX, QWORD PTR [RCX + 8]
movsd XMM0, QWORD PTR [RAX + 8*RSI - 8]
movsd XMM1, QWORD PTR [RAX + 8*RDX - 8]
movsd QWORD PTR [RAX + 8*RSI - 8], XMM1
mov RAX, QWORD PTR [RCX + 8]
movsd QWORD PTR [RAX + 8*RDX - 8], XMM0
Source line: 252
mov R12, QWORD PTR [R14 + 8]
test R12, R12
je 1840
mov RAX, QWORD PTR [RBP - 112]
mov RAX, QWORD PTR [RAX + 8]
movsd XMM0, QWORD PTR [RAX + 8*RSI - 8]
movsd QWORD PTR [RBP - 96], XMM0
movsd XMM0, QWORD PTR [RAX + 8*R13 - 8]
movsd QWORD PTR [RBP - 104], XMM0
mov QWORD PTR [RBP - 64], R12
mov RBX, QWORD PTR [R12 + 8]
Source line: 249
movabs R13, 140500474673376
Source line: 252
call R13
mov QWORD PTR [RAX], 16366064
movsd XMM0, QWORD PTR [RBP - 104]
movsd QWORD PTR [RAX + 8], XMM0
mov QWORD PTR [RBP - 56], RAX
mov RDI, R12
lea RSI, QWORD PTR [RBP - 56]
mov EDX, 1
call RBX
mov QWORD PTR [RBP - 64], RAX
mov RBX, QWORD PTR [R14 + 8]
test RBX, RBX
je 1735
mov QWORD PTR [RBP - 56], RBX
mov R12, QWORD PTR [RBX + 8]
call R13
mov QWORD PTR [RAX], 16366064
movsd XMM0, QWORD PTR [RBP - 96]
movsd QWORD PTR [RAX + 8], XMM0
mov QWORD PTR [RBP - 48], RAX
mov RDI, RBX
lea RSI, QWORD PTR [RBP - 48]
mov EDX, 1
call R12
mov QWORD PTR [RBP - 56], RAX
mov EDI, 29426160
Source line: 246
lea RSI, QWORD PTR [RBP - 64]
mov EDX, 2
Source line: 249
movabs RAX, 140500474312064
Source line: 252
call RAX
cmp QWORD PTR [RAX], 16355872
jne 1735
cmp RAX, 16449232
mov R13, QWORD PTR [RBP - 136]
mov RDX, QWORD PTR [RBP - 88]
je 38
mov RCX, QWORD PTR [RBP - 112]
Source line: 253
mov RAX, QWORD PTR [RCX + 8]
movsd XMM0, QWORD PTR [RAX + 8*R13 - 8]
movsd XMM1, QWORD PTR [RAX + 8*RDX - 8]
movsd QWORD PTR [RAX + 8*R13 - 8], XMM1
mov RAX, QWORD PTR [RCX + 8]
movsd QWORD PTR [RAX + 8*RDX - 8], XMM0
Source line: 255
mov R12, QWORD PTR [R14 + 8]
test R12, R12
mov RCX, QWORD PTR [RBP - 128]
je 1596
mov R13, QWORD PTR [RBP - 112]
mov RAX, QWORD PTR [R13 + 8]
movsd XMM0, QWORD PTR [RAX + 8*RCX - 8]
movsd QWORD PTR [RBP - 96], XMM0
movsd XMM0, QWORD PTR [RAX + 8*RDX - 8]
movsd QWORD PTR [RBP - 104], XMM0
mov QWORD PTR [RBP - 64], R12
mov RBX, QWORD PTR [R12 + 8]
Source line: 249
movabs R15, 140500474673376
Source line: 255
call R15
mov QWORD PTR [RAX], 16366064
movsd XMM0, QWORD PTR [RBP - 104]
movsd QWORD PTR [RAX + 8], XMM0
mov QWORD PTR [RBP - 56], RAX
mov RDI, R12
lea RSI, QWORD PTR [RBP - 56]
mov EDX, 1
call RBX
mov QWORD PTR [RBP - 64], RAX
mov RBX, QWORD PTR [R14 + 8]
test RBX, RBX
je 1492
mov QWORD PTR [RBP - 56], RBX
mov R12, QWORD PTR [RBX + 8]
call R15
mov QWORD PTR [RAX], 16366064
movsd XMM0, QWORD PTR [RBP - 96]
movsd QWORD PTR [RAX + 8], XMM0
mov QWORD PTR [RBP - 48], RAX
mov RDI, RBX
lea RSI, QWORD PTR [RBP - 48]
mov EDX, 1
call R12
mov QWORD PTR [RBP - 56], RAX
mov EDI, 29426160
Source line: 246
lea RSI, QWORD PTR [RBP - 64]
mov EDX, 2
Source line: 249
movabs RAX, 140500474312064
Source line: 255
call RAX
cmp QWORD PTR [RAX], 16355872
jne 1462
cmp RAX, 16449232
mov RCX, QWORD PTR [RBP - 128]
mov RDX, QWORD PTR [RBP - 88]
je 32
Source line: 256
mov RAX, QWORD PTR [R13 + 8]
movsd XMM0, QWORD PTR [RAX + 8*RDX - 8]
movsd XMM1, QWORD PTR [RAX + 8*RCX - 8]
movsd QWORD PTR [RAX + 8*RDX - 8], XMM1
mov RAX, QWORD PTR [R13 + 8]
movsd QWORD PTR [RAX + 8*RCX - 8], XMM0
Source line: 258
mov RAX, QWORD PTR [R13 + 8]
movsd XMM0, QWORD PTR [RAX + 8*RDX - 8]
movsd XMM1, QWORD PTR [RAX + 8*RCX - 8]
movsd QWORD PTR [RAX + 8*RDX - 8], XMM1
mov RAX, QWORD PTR [R13 + 8]
movsd QWORD PTR [RAX + 8*RCX - 8], XMM0
Source line: 263
mov R12, QWORD PTR [R14 + 8]
test R12, R12
Source line: 249
movabs R15, 140500474673376
je 1394
Source line: 260
mov RAX, QWORD PTR [R13 + 8]
movsd XMM0, QWORD PTR [RAX + 8*RCX - 8]
movsd QWORD PTR [RBP - 104], XMM0
mov RBX, QWORD PTR [RBP - 136]
mov QWORD PTR [RBP - 88], RCX
mov QWORD PTR [RBP - 96], RBX
Source line: 263
mov RAX, QWORD PTR [R13 + 8]
movsd XMM0, QWORD PTR [RAX + 8*RCX]
movsd QWORD PTR [RBP - 120], XMM0
mov QWORD PTR [RBP - 64], R12
mov RBX, QWORD PTR [R12 + 8]
call R15
mov QWORD PTR [RAX], 16366064
movsd XMM0, QWORD PTR [RBP - 120]
movsd QWORD PTR [RAX + 8], XMM0
mov QWORD PTR [RBP - 56], RAX
mov RDI, R12
lea RSI, QWORD PTR [RBP - 56]
mov EDX, 1
call RBX
mov QWORD PTR [RBP - 64], RAX
mov RBX, QWORD PTR [R14 + 8]
test RBX, RBX
je 1286
mov QWORD PTR [RBP - 56], RBX
mov R12, QWORD PTR [RBX + 8]
call R15
mov QWORD PTR [RAX], 16366064
movsd XMM0, QWORD PTR [RBP - 104]
movsd QWORD PTR [RAX + 8], XMM0
mov QWORD PTR [RBP - 48], RAX
mov RDI, RBX
lea RSI, QWORD PTR [RBP - 48]
mov EDX, 1
call R12
mov QWORD PTR [RBP - 56], RAX
mov EDI, 29426160
Source line: 246
lea RSI, QWORD PTR [RBP - 64]
mov EDX, 2
Source line: 249
movabs RAX, 140500474312064
Source line: 263
call RAX
cmp QWORD PTR [RAX], 16355872
jne 1156
mov RDX, QWORD PTR [RBP - 88]
Source line: 262
lea RCX, QWORD PTR [RDX + 1]
Source line: 263
cmp RAX, 16449232
je 262
lea R12, QWORD PTR [8*RDX + 8]
mov RBX, QWORD PTR [R14 + 8]
test RBX, RBX
je 1154
mov QWORD PTR [RBP - 88], RCX
mov RAX, QWORD PTR [R13 + 8]
movsd XMM0, QWORD PTR [RAX + R12]
movsd QWORD PTR [RBP - 120], XMM0
mov QWORD PTR [RBP - 64], RBX
mov R13, R14
mov R14, QWORD PTR [RBX + 8]
Source line: 249
movabs R15, 140500474673376
Source line: 263
call R15
mov QWORD PTR [RAX], 16366064
movsd XMM0, QWORD PTR [RBP - 120]
movsd QWORD PTR [RAX + 8], XMM0
mov QWORD PTR [RBP - 56], RAX
mov RDI, RBX
lea RSI, QWORD PTR [RBP - 56]
mov EDX, 1
call R14
mov QWORD PTR [RBP - 64], RAX
mov RBX, QWORD PTR [R13 + 8]
test RBX, RBX
je 1058
mov QWORD PTR [RBP - 56], RBX
mov R14, QWORD PTR [RBX + 8]
call R15
mov QWORD PTR [RAX], 16366064
movsd XMM0, QWORD PTR [RBP - 104]
movsd QWORD PTR [RAX + 8], XMM0
mov QWORD PTR [RBP - 48], RAX
mov RDI, RBX
lea RSI, QWORD PTR [RBP - 48]
mov EDX, 1
call R14
mov QWORD PTR [RBP - 56], RAX
mov EDI, 29426160
Source line: 246
lea RBX, QWORD PTR [RBP - 64]
Source line: 263
mov RSI, RBX
mov EDX, 2
Source line: 249
movabs R14, 140500474312064
Source line: 263
call R14
mov QWORD PTR [RBP - 64], RAX
mov EDI, 35355776
mov RSI, RBX
mov EDX, 1
call R14
cmp QWORD PTR [RAX], 16355872
jne 904
add R12, 8
mov RCX, QWORD PTR [RBP - 88]
inc RCX
cmp RAX, 16449232
mov R14, R13
mov R13, QWORD PTR [RBP - 112]
je -254
Source line: 264
mov RBX, QWORD PTR [R14 + 8]
test RBX, RBX
je 830
mov QWORD PTR [RBP - 88], RCX
mov RAX, QWORD PTR [R13 + 8]
mov RCX, QWORD PTR [RBP - 96]
movsd XMM0, QWORD PTR [RAX + 8*RCX - 16]
movsd QWORD PTR [RBP - 120], XMM0
mov QWORD PTR [RBP - 64], RBX
mov R12, R14
mov R14, QWORD PTR [RBX + 8]
Source line: 249
movabs R15, 140500474673376
Source line: 264
call R15
mov QWORD PTR [RAX], 16366064
movsd XMM0, QWORD PTR [RBP - 104]
movsd QWORD PTR [RAX + 8], XMM0
mov QWORD PTR [RBP - 56], RAX
mov RDI, RBX
lea RSI, QWORD PTR [RBP - 56]
mov EDX, 1
call R14
mov QWORD PTR [RBP - 64], RAX
mov RBX, QWORD PTR [R12 + 8]
test RBX, RBX
je 729
mov QWORD PTR [RBP - 56], RBX
mov R14, QWORD PTR [RBX + 8]
call R15
mov QWORD PTR [RAX], 16366064
movsd XMM0, QWORD PTR [RBP - 120]
movsd QWORD PTR [RAX + 8], XMM0
mov QWORD PTR [RBP - 48], RAX
mov RDI, RBX
lea RSI, QWORD PTR [RBP - 48]
mov EDX, 1
call R14
mov QWORD PTR [RBP - 56], RAX
mov EDI, 29426160
Source line: 246
lea RSI, QWORD PTR [RBP - 64]
mov EDX, 2
Source line: 249
movabs RAX, 140500474312064
Source line: 264
call RAX
cmp QWORD PTR [RAX], 16355872
jne 669
mov RDX, QWORD PTR [RBP - 96]
Source line: 262
lea RCX, QWORD PTR [RDX - 1]
Source line: 264
cmp RAX, 16449232
mov R14, R12
jne 8
mov RBX, RCX
jmpq 265
lea R12, QWORD PTR [8*RDX - 24]
mov RBX, RCX
mov QWORD PTR [RBP - 96], RBX
mov RBX, QWORD PTR [R14 + 8]
test RBX, RBX
je 579
mov RAX, QWORD PTR [R13 + 8]
movsd XMM0, QWORD PTR [RAX + R12]
movsd QWORD PTR [RBP - 120], XMM0
mov QWORD PTR [RBP - 64], RBX
mov R13, R14
mov R14, QWORD PTR [RBX + 8]
Source line: 249
movabs R15, 140500474673376
Source line: 264
call R15
mov QWORD PTR [RAX], 16366064
movsd XMM0, QWORD PTR [RBP - 104]
movsd QWORD PTR [RAX + 8], XMM0
mov QWORD PTR [RBP - 56], RAX
mov RDI, RBX
lea RSI, QWORD PTR [RBP - 56]
mov EDX, 1
call R14
mov QWORD PTR [RBP - 64], RAX
mov RBX, QWORD PTR [R13 + 8]
test RBX, RBX
je 487
mov QWORD PTR [RBP - 56], RBX
mov R14, QWORD PTR [RBX + 8]
call R15
mov QWORD PTR [RAX], 16366064
movsd XMM0, QWORD PTR [RBP - 120]
movsd QWORD PTR [RAX + 8], XMM0
mov QWORD PTR [RBP - 48], RAX
mov RDI, RBX
lea RSI, QWORD PTR [RBP - 48]
mov EDX, 1
call R14
mov QWORD PTR [RBP - 56], RAX
mov EDI, 29426160
Source line: 246
lea RBX, QWORD PTR [RBP - 64]
Source line: 264
mov RSI, RBX
mov EDX, 2
Source line: 249
movabs R14, 140500474312064
Source line: 264
call R14
mov QWORD PTR [RBP - 64], RAX
mov EDI, 35355776
mov RSI, RBX
mov EDX, 1
call R14
cmp QWORD PTR [RAX], 16355872
jne 403
add R12, -8
mov RBX, QWORD PTR [RBP - 96]
dec RBX
cmp RAX, 16449232
mov R14, R13
mov R13, QWORD PTR [RBP - 112]
je -254
mov RCX, QWORD PTR [RBP - 88]
Source line: 265
cmp RBX, RCX
jle 60
Source line: 266
mov RAX, QWORD PTR [R13 + 8]
movsd XMM0, QWORD PTR [RAX + 8*RCX - 8]
movsd XMM1, QWORD PTR [RAX + 8*RBX - 8]
movsd QWORD PTR [RAX + 8*RCX - 8], XMM1
mov RAX, QWORD PTR [R13 + 8]
movsd QWORD PTR [RAX + 8*RBX - 8], XMM0
Source line: 263
mov R12, QWORD PTR [R14 + 8]
test R12, R12
Source line: 249
movabs R15, 140500474673376
jne -1028
jmpq 339
Source line: 268
mov RAX, QWORD PTR [R13 + 8]
movsd XMM0, QWORD PTR [RAX + 8*RBX - 8]
mov RSI, QWORD PTR [RBP - 128]
movsd XMM1, QWORD PTR [RAX + 8*RSI - 8]
movsd QWORD PTR [RAX + 8*RBX - 8], XMM1
mov RAX, QWORD PTR [R13 + 8]
movsd QWORD PTR [RAX + 8*RSI - 8], XMM0
lea RDX, QWORD PTR [RBX - 1]
cmp RSI, RDX
jge 25
Source line: 269
mov RDI, R13
mov RCX, QWORD PTR [RBP - 144]
mov R8, R14
movabs RAX, 140500440550768
call RAX
Source line: 270
inc RBX
mov RDX, QWORD PTR [RBP - 136]
cmp RBX, RDX
mov RSI, RBX
jl -2034
Source line: 272
mov RAX, QWORD PTR [RBP - 72]
Source line: 246
movabs RCX, 140500490038576
Source line: 272
mov QWORD PTR [RCX], RAX
mov RAX, R13
jmpq 43
Source line: 247
mov RCX, QWORD PTR [17946240]
movabs RAX, 140500440358160
mov RDI, R13
mov R8, R14
call RAX
movabs RCX, 140500490038576
mov RDX, QWORD PTR [RBP - 72]
mov QWORD PTR [RCX], RDX
Source line: 272
add RSP, 120
pop RBX
pop R12
pop R13
pop R14
pop R15
pop RBP
ret
Source line: 249
movabs RAX, 140500489336368
mov RDI, QWORD PTR [RAX]
movabs RAX, 140500474609808
mov ESI, 249
call RAX
Source line: 252
movabs RAX, 140500489336368
mov RDI, QWORD PTR [RAX]
movabs RAX, 140500474609808
mov ESI, 252
call RAX
Source line: 255
movabs RAX, 140500489336368
mov RDI, QWORD PTR [RAX]
movabs RAX, 140500474609808
mov ESI, 255
call RAX
Source line: 264
movabs RAX, 140500489336368
mov RDI, QWORD PTR [RAX]
movabs RAX, 140500474609808
mov ESI, 264
call RAX
Source line: 249
movabs RBX, 140500474336400
movabs RDI, 140500440224229
movabs RSI, 140500440223796
mov EDX, 16355872
mov RCX, RAX
call RBX
Source line: 263
movabs RAX, 140500489336368
mov RDI, QWORD PTR [RAX]
movabs RAX, 140500474609808
mov ESI, 263
call RAX
.text
Filename: sort.jl
Source line: 247
push RBP
mov RBP, RSP
push R15
push R14
push R13
push R12
push RBX
sub RSP, 24
mov QWORD PTR [RBP - 48], R8
mov QWORD PTR [RBP - 64], RCX
mov R15, RDX
mov QWORD PTR [RBP - 56], R15
mov R12, RDI
cmp RSI, R15
jge 920
Source line: 247
mov RAX, R15
sub RAX, RSI
cmp RAX, 20
jle 922
Source line: 248
lea RAX, QWORD PTR [RSI + R15]
shr RAX
Source line: 249
mov R11, QWORD PTR [R12 + 8]
movsd XMM0, QWORD PTR [R11 + 8*RAX - 8]
movq RCX, XMM0
test RCX, RCX
setns DL
sets BL
movsd XMM1, QWORD PTR [R11 + 8*RSI - 8]
movq RDI, XMM1
cmp RCX, RDI
setl R8B
seta R9B
ucomisd XMM0, XMM1
setnp DIL
ucomisd XMM1, XMM1
setp R10B
ucomisd XMM0, XMM0
setnp CL
test CL, R10B
jne 17
and BL, R9B
and DL, R8B
or DL, BL
and DIL, DL
je 18
Source line: 250
movsd QWORD PTR [R11 + 8*RAX - 8], XMM1
mov RCX, QWORD PTR [R12 + 8]
movsd QWORD PTR [RCX + 8*RSI - 8], XMM0
Source line: 252
mov R11, QWORD PTR [R12 + 8]
movsd XMM0, QWORD PTR [R11 + 8*R15 - 8]
movq RCX, XMM0
test RCX, RCX
setns DL
sets BL
movsd XMM1, QWORD PTR [R11 + 8*RAX - 8]
movq RDI, XMM1
cmp RCX, RDI
setl R8B
seta R9B
ucomisd XMM0, XMM1
setnp DIL
ucomisd XMM1, XMM1
setp R10B
ucomisd XMM0, XMM0
setnp CL
test CL, R10B
jne 17
and BL, R9B
and DL, R8B
or DL, BL
and DIL, DL
je 18
Source line: 253
movsd QWORD PTR [R11 + 8*R15 - 8], XMM1
mov RCX, QWORD PTR [R12 + 8]
movsd QWORD PTR [RCX + 8*RAX - 8], XMM0
Source line: 255
mov R11, QWORD PTR [R12 + 8]
movsd XMM0, QWORD PTR [R11 + 8*RAX - 8]
movq RCX, XMM0
test RCX, RCX
setns DL
sets BL
movsd XMM1, QWORD PTR [R11 + 8*RSI - 8]
movq RDI, XMM1
cmp RCX, RDI
setl R8B
seta R9B
ucomisd XMM0, XMM1
setnp DIL
ucomisd XMM1, XMM1
setp R10B
ucomisd XMM0, XMM0
setnp CL
test CL, R10B
jne 17
and BL, R9B
and DL, R8B
or DL, BL
and DIL, DL
je 18
Source line: 256
movsd QWORD PTR [R11 + 8*RAX - 8], XMM1
mov RCX, QWORD PTR [R12 + 8]
movsd QWORD PTR [RCX + 8*RSI - 8], XMM0
Source line: 258
mov RCX, QWORD PTR [R12 + 8]
movsd XMM0, QWORD PTR [RCX + 8*RAX - 8]
movsd XMM1, QWORD PTR [RCX + 8*RSI - 8]
movsd QWORD PTR [RCX + 8*RAX - 8], XMM1
mov RAX, QWORD PTR [R12 + 8]
movsd QWORD PTR [RAX + 8*RSI - 8], XMM0
Source line: 260
mov R8, QWORD PTR [R12 + 8]
movsd XMM0, QWORD PTR [R8 + 8*RSI - 8]
Source line: 263
movq R14, XMM0
mov RDI, RSI
mov R9, R15
jmpq 44
Source line: 266
mov RAX, QWORD PTR [R12 + 8]
movsd XMM1, QWORD PTR [RAX + 8*R15 - 8]
movsd XMM2, QWORD PTR [RAX + 8*R13 - 8]
movsd QWORD PTR [RAX + 8*R15 - 8], XMM2
mov RAX, QWORD PTR [R12 + 8]
movsd QWORD PTR [RAX + 8*R13 - 8], XMM1
mov RDI, R15
mov R9, R13
Source line: 263
movsd XMM1, QWORD PTR [R8 + 8*RDI]
movq RCX, XMM1
test RCX, RCX
setns BL
sets AL
cmp RCX, R14
setl R11B
seta R13B
ucomisd XMM0, XMM1
setnp R10B
ucomisd XMM1, XMM1
setnp CL
Source line: 262
lea R15, QWORD PTR [RDI + 1]
ucomisd XMM0, XMM0
setp DL
Source line: 263
test CL, DL
jne 17
and AL, R13B
and BL, R11B
or BL, AL
and R10B, BL
je 89
mov RAX, QWORD PTR [R12 + 8]
lea RDI, QWORD PTR [RAX + 8*RDI + 8]
movsd XMM1, QWORD PTR [RDI]
movq RCX, XMM1
test RCX, RCX
setns BL
sets AL
cmp RCX, R14
setl DL
seta CL
and CL, AL
and DL, BL
or DL, CL
ucomisd XMM0, XMM1
setnp BL
and BL, DL
add RDI, 8
inc R15
ucomisd XMM0, XMM0
setp AL
ucomisd XMM1, XMM1
setnp CL
test CL, AL
jne -71
test BL, BL
jne -79
Source line: 264
movsd XMM1, QWORD PTR [R8 + 8*R9 - 16]
movq RCX, XMM1
test R14, R14
setns AL
sets BL
cmp R14, RCX
setl R10B
seta R11B
ucomisd XMM0, XMM1
setnp DL
ucomisd XMM1, XMM1
setp DIL
Source line: 262
lea R13, QWORD PTR [R9 - 1]
ucomisd XMM0, XMM0
setnp CL
Source line: 264
test CL, DIL
jne 16
and BL, R11B
and AL, R10B
or AL, BL
and DL, AL
je 89
mov RAX, QWORD PTR [R12 + 8]
lea RDI, QWORD PTR [RAX + 8*R9 - 24]
test R14, R14
setns BL
sets CL
movsd XMM1, QWORD PTR [RDI]
movq RAX, XMM1
cmp R14, RAX
setl DL
seta AL
and AL, CL
and DL, BL
or DL, AL
ucomisd XMM0, XMM1
setnp BL
and BL, DL
add RDI, -8
dec R13
ucomisd XMM0, XMM0
setnp AL
ucomisd XMM1, XMM1
setp CL
test AL, CL
jne -71
test BL, BL
jne -79
Source line: 265
cmp R13, R15
jg -396
Source line: 268
mov RAX, QWORD PTR [R12 + 8]
movsd XMM0, QWORD PTR [RAX + 8*R13 - 8]
movsd XMM1, QWORD PTR [RAX + 8*RSI - 8]
movsd QWORD PTR [RAX + 8*R13 - 8], XMM1
mov RAX, QWORD PTR [R12 + 8]
movsd QWORD PTR [RAX + 8*RSI - 8], XMM0
lea RDX, QWORD PTR [R13 - 1]
cmp RSI, RDX
mov R15, QWORD PTR [RBP - 56]
jge 23
Source line: 269
mov RDI, R12
mov RCX, QWORD PTR [RBP - 64]
mov R8, QWORD PTR [RBP - 48]
movabs RAX, 140500440561696
call RAX
Source line: 270
inc R13
cmp R13, R15
mov RSI, R13
jl -920
Source line: 272
mov RAX, R12
add RSP, 24
pop RBX
pop R12
pop R13
pop R14
pop R15
pop RBP
ret
Source line: 247
mov RCX, QWORD PTR [17946240]
movabs RAX, 140500440358352
mov RDI, R12
mov RDX, R15
mov R8, QWORD PTR [RBP - 48]
call RAX
jmpq -50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment