Skip to content

Instantly share code, notes, and snippets.

@KristofferC
Created June 5, 2015 13:21
Show Gist options
  • Save KristofferC/8f36a0f19c1173685f98 to your computer and use it in GitHub Desktop.
Save KristofferC/8f36a0f19c1173685f98 to your computer and use it in GitHub Desktop.
julia> @code_llvm getindex(s1, 1)
define %jl_value_t* @julia_getindex_21091(%jl_value_t*, %jl_value_t**, i32) {
top:
%3 = alloca [5 x %jl_value_t*], align 8
%.sub = getelementptr inbounds [5 x %jl_value_t*]* %3, i64 0, i64 0
%4 = getelementptr [5 x %jl_value_t*]* %3, i64 0, i64 2
store %jl_value_t* inttoptr (i64 6 to %jl_value_t*), %jl_value_t** %.sub, align 8
%5 = getelementptr [5 x %jl_value_t*]* %3, i64 0, i64 1
%6 = load %jl_value_t*** @jl_pgcstack, align 8
%.c = bitcast %jl_value_t** %6 to %jl_value_t*
store %jl_value_t* %.c, %jl_value_t** %5, align 8
store %jl_value_t** %.sub, %jl_value_t*** @jl_pgcstack, align 8
%7 = getelementptr [5 x %jl_value_t*]* %3, i64 0, i64 3
store %jl_value_t* null, %jl_value_t** %7, align 8
%8 = getelementptr [5 x %jl_value_t*]* %3, i64 0, i64 4
store %jl_value_t* null, %jl_value_t** %8, align 8
store %jl_value_t* null, %jl_value_t** %4, align 8
%9 = load %jl_value_t** %1, align 8
store %jl_value_t* %9, %jl_value_t** %7, align 8
%10 = getelementptr %jl_value_t** %1, i64 1
%11 = load %jl_value_t** %10, align 8
store %jl_value_t* %11, %jl_value_t** %8, align 8
%12 = call %jl_value_t* @julia_checkbounds_20972(%jl_value_t* inttoptr (i64 139936406403024 to %jl_value_t*), %jl_value_t** %7, i32 2)
%13 = getelementptr inbounds %jl_value_t* %9, i64 0, i32 0
%14 = load %jl_value_t** %13, align 8
%15 = getelementptr %jl_value_t* %9, i64 4
%16 = bitcast %jl_value_t* %15 to i64*
%17 = load i64* %16, align 8
%18 = load %jl_value_t** %10, align 8
%19 = bitcast %jl_value_t* %18 to i64*
%20 = load i64* %19, align 8
%21 = add i64 %17, -2
%22 = add i64 %21, %20
%23 = bitcast %jl_value_t* %14 to i8**
%24 = load i8** %23, align 8
%25 = bitcast i8* %24 to double*
%26 = getelementptr double* %25, i64 %22
%27 = load double* %26, align 8
%28 = call %jl_value_t* @alloc_1w()
%29 = getelementptr inbounds %jl_value_t* %28, i64 -1, i32 0
store %jl_value_t* inttoptr (i64 139936369075984 to %jl_value_t*), %jl_value_t** %29, align 8
%30 = bitcast %jl_value_t* %28 to double*
store double %27, double* %30, align 8
%31 = load %jl_value_t** %5, align 8
%32 = getelementptr inbounds %jl_value_t* %31, i64 0, i32 0
store %jl_value_t** %32, %jl_value_t*** @jl_pgcstack, align 8
ret %jl_value_t* %28
}
julia> @code_llvm getindex(s1, 1)
define double @julia_anonymous_44771(%jl_value_t*, i64) {
top:
%2 = bitcast %jl_value_t* %0 to %jl_value_t**
%3 = load %jl_value_t** %2, align 8
%4 = getelementptr %jl_value_t* %0, i64 4
%5 = bitcast %jl_value_t* %4 to i64*
%6 = load i64* %5, align 8
%7 = add i64 %1, -2
%8 = add i64 %7, %6
%9 = bitcast %jl_value_t* %3 to i8**
%10 = load i8** %9, align 8
%11 = bitcast i8* %10 to double*
%12 = getelementptr double* %11, i64 %8
%13 = load double* %12, align 8
ret double %13
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment