Skip to content

Instantly share code, notes, and snippets.

@yuyichao
Last active August 29, 2015 14:22
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save yuyichao/08a9fc9d1c5506fc3b31 to your computer and use it in GitHub Desktop.
Save yuyichao/08a9fc9d1c5506fc3b31 to your computer and use it in GitHub Desktop.
#11284 Helper function
define i64 @julia_f0_20978(i64, i64) {
top:
ret i64 %0
}
define i64 @julia_f1_20980(i64, i64) {
top:
%2 = icmp eq i64 %1, 0
br i1 %2, label %if, label %L
if: ; preds = %top
%3 = load %jl_value_t** inttoptr (i64 140063145420952 to %jl_value_t**), align 8
call void @julia_throw1_20981(%jl_value_t* %3, i64 %0, i64 0)
br label %L
L: ; preds = %if, %top
ret i64 %0
}
define i64 @julia_f2_20982(i64, i64) {
top:
%2 = icmp eq i64 %1, 0
br i1 %2, label %if, label %L
if: ; preds = %top
%3 = load %jl_value_t** inttoptr (i64 140063145420952 to %jl_value_t**), align 8
%4 = icmp eq %jl_value_t* %3, null
br i1 %4, label %err, label %ok
err: ; preds = %if
call void @jl_undefined_var_error(%jl_value_t* inttoptr (i64 140071829897360 to %jl_value_t*))
unreachable
ok: ; preds = %if
call void @julia_throw_with_args_20983(%jl_value_t* %3, i64 %0, i64 0)
br label %L
L: ; preds = %ok, %top
ret i64 %0
}
define i64 @julia_f3_20984(i64, i64) {
top:
%2 = icmp eq i64 %1, 0
br i1 %2, label %if, label %L
if: ; preds = %top
%3 = load %jl_value_t** inttoptr (i64 140063162192360 to %jl_value_t**), align 8
call void @julia_throw_interp_20985(%jl_value_t* %3, i64 %0, i64 0)
br label %L
L: ; preds = %if, %top
ret i64 %0
}
define i64 @julia_f4_20986(i64, i64) {
top:
%2 = alloca [7 x %jl_value_t*], align 8
%.sub = getelementptr inbounds [7 x %jl_value_t*]* %2, i64 0, i64 0
%3 = getelementptr [7 x %jl_value_t*]* %2, i64 0, i64 2
%4 = bitcast [7 x %jl_value_t*]* %2 to i64*
store i64 10, i64* %4, align 8
%5 = getelementptr [7 x %jl_value_t*]* %2, i64 0, i64 1
%6 = bitcast %jl_value_t** %5 to %jl_value_t***
%7 = load %jl_value_t*** @jl_pgcstack, align 8
store %jl_value_t** %7, %jl_value_t*** %6, align 8
store %jl_value_t** %.sub, %jl_value_t*** @jl_pgcstack, align 8
store %jl_value_t* null, %jl_value_t** %3, align 8
%8 = getelementptr [7 x %jl_value_t*]* %2, i64 0, i64 3
store %jl_value_t* null, %jl_value_t** %8, align 8
%9 = getelementptr [7 x %jl_value_t*]* %2, i64 0, i64 4
store %jl_value_t* null, %jl_value_t** %9, align 8
%10 = getelementptr [7 x %jl_value_t*]* %2, i64 0, i64 5
store %jl_value_t* null, %jl_value_t** %10, align 8
%11 = getelementptr [7 x %jl_value_t*]* %2, i64 0, i64 6
store %jl_value_t* null, %jl_value_t** %11, align 8
%12 = icmp eq i64 %1, 0
br i1 %12, label %if, label %L
if: ; preds = %top
%13 = load %jl_value_t** inttoptr (i64 140063180602488 to %jl_value_t**), align 8
%14 = icmp eq %jl_value_t* %13, null
br i1 %14, label %err, label %ok
err: ; preds = %if
call void @jl_undefined_var_error(%jl_value_t* inttoptr (i64 140071829891384 to %jl_value_t*))
unreachable
ok: ; preds = %if
store %jl_value_t* %13, %jl_value_t** %3, align 8
store %jl_value_t* inttoptr (i64 140063179874464 to %jl_value_t*), %jl_value_t** %8, align 8
%15 = call %jl_value_t* @jl_box_int64(i64 signext %0)
store %jl_value_t* %15, %jl_value_t** %9, align 8
store %jl_value_t* inttoptr (i64 140063179874480 to %jl_value_t*), %jl_value_t** %10, align 8
%16 = call %jl_value_t* @jl_box_int64(i64 signext 0)
store %jl_value_t* %16, %jl_value_t** %11, align 8
%17 = call %jl_value_t* @julia_print_to_string(%jl_value_t* inttoptr (i64 140063166698704 to %jl_value_t*), %jl_value_t** %8, i32 4)
store %jl_value_t* %17, %jl_value_t** %8, align 8
%18 = getelementptr inbounds %jl_value_t* %13, i64 -1, i32 0
%19 = load %jl_value_t** %18, align 8
%20 = ptrtoint %jl_value_t* %19 to i64
%21 = and i64 %20, -4
%22 = inttoptr i64 %21 to %jl_value_t*
%23 = icmp eq %jl_value_t* %22, inttoptr (i64 140063145427184 to %jl_value_t*)
br i1 %23, label %isf, label %notf
isf: ; preds = %ok
%24 = bitcast %jl_value_t* %13 to %jl_value_t* (%jl_value_t*, %jl_value_t**, i32)**
%25 = load %jl_value_t* (%jl_value_t*, %jl_value_t**, i32)** %24, align 8
%26 = call %jl_value_t* %25(%jl_value_t* %13, %jl_value_t** %8, i32 1)
br label %mergef
notf: ; preds = %ok
%27 = call %jl_value_t* @jl_apply_generic(%jl_value_t* inttoptr (i64 140063171404528 to %jl_value_t*), %jl_value_t** %3, i32 2)
br label %mergef
mergef: ; preds = %notf, %isf
%28 = phi %jl_value_t* [ %26, %isf ], [ %27, %notf ]
call void @jl_throw_with_superfluous_argument(%jl_value_t* %28, i32 41)
br label %L
L: ; preds = %mergef, %top
%29 = load %jl_value_t*** %6, align 8
store %jl_value_t** %29, %jl_value_t*** @jl_pgcstack, align 8
ret i64 %0
}
define %jl_value_t* @julia_getindex_20990(%jl_value_t*, i64) {
top:
%2 = alloca [3 x %jl_value_t*], align 8
%.sub = getelementptr inbounds [3 x %jl_value_t*]* %2, i64 0, i64 0
%3 = getelementptr [3 x %jl_value_t*]* %2, i64 0, i64 2
%4 = bitcast [3 x %jl_value_t*]* %2 to i64*
store i64 2, i64* %4, align 8
%5 = getelementptr [3 x %jl_value_t*]* %2, i64 0, i64 1
%6 = bitcast %jl_value_t** %5 to %jl_value_t***
%7 = load %jl_value_t*** @jl_pgcstack, align 8
store %jl_value_t** %7, %jl_value_t*** %6, align 8
store %jl_value_t** %.sub, %jl_value_t*** @jl_pgcstack, align 8
store %jl_value_t* null, %jl_value_t** %3, align 8
%8 = icmp slt i64 %1, 1
br i1 %8, label %if2, label %L1
L1: ; preds = %top
%9 = bitcast %jl_value_t* %0 to i64*
%10 = load i64* %9, align 8
%phitmp9 = icmp slt i64 %10, %1
br i1 %phitmp9, label %if2, label %L3
if2: ; preds = %L1, %top
%11 = load %jl_value_t** inttoptr (i64 140063145420952 to %jl_value_t**), align 8
%12 = icmp eq %jl_value_t* %11, null
br i1 %12, label %err, label %ok
err: ; preds = %if2
call void @jl_undefined_var_error(%jl_value_t* inttoptr (i64 140071829897360 to %jl_value_t*))
unreachable
ok: ; preds = %if2
call void @julia_throw_with_args5294(%jl_value_t* %11, %jl_value_t* %0, i64 %1)
br label %L3
L3: ; preds = %ok, %L1
%13 = ptrtoint %jl_value_t* %0 to i64
%14 = shl i64 %1, 3
%15 = add i64 %14, %13
%16 = inttoptr i64 %15 to i8**
%17 = load i8** %16, align 1
%18 = icmp eq i8* %17, null
br i1 %18, label %if4, label %L8
if4: ; preds = %L3
%19 = load %jl_value_t** inttoptr (i64 140063145417928 to %jl_value_t**), align 8
%20 = icmp eq %jl_value_t* %19, null
br i1 %20, label %err5, label %ok6
err5: ; preds = %if4
call void @jl_undefined_var_error(%jl_value_t* inttoptr (i64 140071829911056 to %jl_value_t*))
unreachable
ok6: ; preds = %if4
store %jl_value_t* %19, %jl_value_t** %3, align 8
%21 = call %jl_value_t* @julia_throw_with_args5268(%jl_value_t* inttoptr (i64 140063176961584 to %jl_value_t*), %jl_value_t** %3, i32 1)
br label %L8
L8: ; preds = %ok6, %L3
%22 = bitcast i8* %17 to %jl_value_t*
%23 = load %jl_value_t*** %6, align 8
store %jl_value_t** %23, %jl_value_t*** @jl_pgcstack, align 8
ret %jl_value_t* %22
}
f0(Int64,Int64)
1.603 seconds
f1(Int64,Int64)
2.230 seconds
f2(Int64,Int64)
1.918 seconds
f3(Int64,Int64)
2.287 seconds
f4(Int64,Int64)
4.149 seconds
getindex(SimpleVector,Int64)
5.266 seconds
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment