Created
November 21, 2014 03:37
-
-
Save tkelman/556fb9c10e9048e426bf 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
| | | | | | | |/ _` | | | |
| | | |_| | | | (_| | | Version 0.3.0 (2014-08-20 20:43 UTC) | |
| _/ |\__'_|_|_|\__'_| | Official http://julialang.org/ build | |
| |__/ | i686-w64-mingw32 | |
| julia> using Blosc | |
| julia> a=rand(Float64,32); | |
| julia> roundtrip(orig) = Blosc.decompress(eltype(orig), Blosc.compress(orig)) == | |
| orig | |
| roundtrip (generic function with 1 method) | |
| julia> @code_llvm Blosc.decompress(eltype(a), Blosc.compress(a)) == a | |
| ; Function Attrs: alignstack(8) | |
| define i1 @"julia_==;1222"(%jl_value_t*, %jl_value_t*) #2 { | |
| top: | |
| %2 = alloca [3 x %jl_value_t*], align 4 | |
| %.sub = getelementptr inbounds [3 x %jl_value_t*]* %2, i32 0, i32 0 | |
| %3 = getelementptr [3 x %jl_value_t*]* %2, i32 0, i32 2, !dbg !3720 | |
| store %jl_value_t* inttoptr (i32 2 to %jl_value_t*), %jl_value_t** %.sub, alig | |
| n 4 | |
| %4 = getelementptr [3 x %jl_value_t*]* %2, i32 0, i32 1, !dbg !3720 | |
| %5 = load %jl_value_t*** @jl_pgcstack, align 4, !dbg !3720 | |
| %.c = bitcast %jl_value_t** %5 to %jl_value_t*, !dbg !3720 | |
| store %jl_value_t* %.c, %jl_value_t** %4, align 4, !dbg !3720 | |
| store %jl_value_t** %.sub, %jl_value_t*** @jl_pgcstack, align 4, !dbg !3720 | |
| store %jl_value_t* null, %jl_value_t** %3, align 4 | |
| %6 = load %jl_value_t** inttoptr (i32 49253896 to %jl_value_t**), align 8, !db | |
| g !3721 | |
| %7 = getelementptr inbounds %jl_value_t* %6, i32 1, i32 0, !dbg !3721 | |
| %8 = load %jl_value_t** %7, align 4, !dbg !3721, !tbaa %jtbaa_func | |
| %9 = bitcast %jl_value_t* %8 to %jl_value_t* (%jl_value_t*, %jl_value_t**, i32 | |
| )*, !dbg !3721 | |
| store %jl_value_t* %0, %jl_value_t** %3, align 4, !dbg !3721 | |
| %10 = call %jl_value_t* %9(%jl_value_t* %6, %jl_value_t** %3, i32 1), !dbg !37 | |
| 21 | |
| %11 = getelementptr inbounds %jl_value_t* %10, i32 2, i32 0, !dbg !3721 | |
| %12 = load %jl_value_t** %11, align 4, !dbg !3721 | |
| %13 = getelementptr inbounds %jl_value_t* %12, i32 1, i32 0, !dbg !3721 | |
| %14 = bitcast %jl_value_t** %13 to i32*, !dbg !3721 | |
| %15 = load i32* %14, align 4, !dbg !3721 | |
| %16 = insertelement <1 x i32> undef, i32 %15, i32 0, !dbg !3721, !julia_type ! | |
| 3725 | |
| %17 = load %jl_value_t** inttoptr (i32 49253896 to %jl_value_t**), align 8, !d | |
| bg !3721 | |
| %18 = getelementptr inbounds %jl_value_t* %17, i32 1, i32 0, !dbg !3721 | |
| %19 = load %jl_value_t** %18, align 4, !dbg !3721, !tbaa %jtbaa_func | |
| %20 = bitcast %jl_value_t* %19 to %jl_value_t* (%jl_value_t*, %jl_value_t**, i | |
| 32)*, !dbg !3721 | |
| store %jl_value_t* %1, %jl_value_t** %3, align 4, !dbg !3721 | |
| %21 = call %jl_value_t* %20(%jl_value_t* %17, %jl_value_t** %3, i32 1), !dbg ! | |
| 3721 | |
| %22 = getelementptr inbounds %jl_value_t* %21, i32 2, i32 0, !dbg !3721 | |
| %23 = load %jl_value_t** %22, align 4, !dbg !3721 | |
| %24 = getelementptr inbounds %jl_value_t* %23, i32 1, i32 0, !dbg !3721 | |
| %25 = bitcast %jl_value_t** %24 to i32*, !dbg !3721 | |
| %26 = load i32* %25, align 4, !dbg !3721 | |
| %27 = insertelement <1 x i32> undef, i32 %26, i32 0, !dbg !3721, !julia_type ! | |
| 3725 | |
| %28 = call i1 @"julia_==;954"(<1 x i32> %16, <1 x i32> %27), !dbg !3721 | |
| br i1 %28, label %L3, label %if, !dbg !3721 | |
| if: ; preds = %top | |
| %29 = load %jl_value_t** %4, align 4, !dbg !3726 | |
| %30 = getelementptr inbounds %jl_value_t* %29, i32 0, i32 0, !dbg !3726 | |
| store %jl_value_t** %30, %jl_value_t*** @jl_pgcstack, align 4, !dbg !3726 | |
| ret i1 false, !dbg !3726 | |
| L3: ; preds = %top | |
| %31 = getelementptr inbounds %jl_value_t* %0, i32 2, i32 0, !dbg !3727 | |
| %32 = load %jl_value_t** %31, align 4, !dbg !3727, !tbaa %jtbaa_arraylen | |
| %33 = ptrtoint %jl_value_t* %32 to i32, !dbg !3727 | |
| %34 = icmp sle %jl_value_t* %32, null, !dbg !3727 | |
| %35 = select i1 %34, i32 0, i32 %33, !dbg !3727 | |
| %36 = icmp eq i32 %35, 0, !dbg !3727 | |
| br i1 %36, label %L12, label %L5.preheader, !dbg !3727 | |
| L5.preheader: ; preds = %L3 | |
| %37 = load %jl_value_t** %31, align 4, !dbg !3730, !tbaa %jtbaa_arraylen | |
| %38 = ptrtoint %jl_value_t* %37 to i32, !dbg !3730 | |
| %39 = getelementptr inbounds %jl_value_t* %1, i32 2, i32 0, !dbg !3730 | |
| %40 = getelementptr inbounds %jl_value_t* %0, i32 1, i32 0, !dbg !3730 | |
| %41 = getelementptr inbounds %jl_value_t* %1, i32 1, i32 0, !dbg !3730 | |
| br label %L5, !dbg !3727 | |
| L5: ; preds = %L5.preheader, %L10 | |
| %"#s116.0" = phi i32 [ %60, %L10 ], [ 1, %L5.preheader ] | |
| %42 = add i32 %"#s116.0", -1, !dbg !3730 | |
| %43 = icmp ult i32 %42, %38, !dbg !3730 | |
| br i1 %43, label %idxend, label %oob, !dbg !3730 | |
| if6: ; preds = %idxend8 | |
| %44 = load %jl_value_t** %4, align 4, !dbg !3731 | |
| %45 = getelementptr inbounds %jl_value_t* %44, i32 0, i32 0, !dbg !3731 | |
| store %jl_value_t** %45, %jl_value_t*** @jl_pgcstack, align 4, !dbg !3731 | |
| ret i1 false, !dbg !3731 | |
| oob: ; preds = %L5 | |
| %46 = load %jl_value_t** @jl_bounds_exception, align 4, !dbg !3730, !tbaa %jtb | |
| aa_const | |
| call void @jl_throw_with_superfluous_argument(%jl_value_t* %46, i32 883), !dbg | |
| !3730 | |
| unreachable, !dbg !3730 | |
| idxend: ; preds = %L5 | |
| %47 = load %jl_value_t** %39, align 4, !dbg !3730, !tbaa %jtbaa_arraylen | |
| %48 = ptrtoint %jl_value_t* %47 to i32, !dbg !3730 | |
| %49 = icmp ult i32 %42, %48, !dbg !3730 | |
| br i1 %49, label %idxend8, label %oob7, !dbg !3730 | |
| oob7: ; preds = %idxend | |
| %50 = load %jl_value_t** @jl_bounds_exception, align 4, !dbg !3730, !tbaa %jtb | |
| aa_const | |
| call void @jl_throw_with_superfluous_argument(%jl_value_t* %50, i32 883), !dbg | |
| !3730 | |
| unreachable, !dbg !3730 | |
| idxend8: ; preds = %idxend | |
| %51 = load %jl_value_t** %40, align 4, !dbg !3730, !tbaa %jtbaa_arrayptr | |
| %52 = bitcast %jl_value_t* %51 to double*, !dbg !3730 | |
| %53 = getelementptr double* %52, i32 %42, !dbg !3730 | |
| %54 = load double* %53, align 8, !dbg !3730, !tbaa %jtbaa_user | |
| %55 = load %jl_value_t** %41, align 4, !dbg !3730, !tbaa %jtbaa_arrayptr | |
| %56 = bitcast %jl_value_t* %55 to double*, !dbg !3730 | |
| %57 = getelementptr double* %56, i32 %42, !dbg !3730 | |
| %58 = load double* %57, align 8, !dbg !3730, !tbaa %jtbaa_user | |
| %59 = fcmp oeq double %54, %58, !dbg !3730 | |
| br i1 %59, label %L10, label %if6, !dbg !3730 | |
| L10: ; preds = %idxend8 | |
| %60 = add i32 %"#s116.0", 1, !dbg !3727 | |
| %61 = icmp eq i32 %"#s116.0", %35, !dbg !3731 | |
| br i1 %61, label %L12, label %L5, !dbg !3731 | |
| L12: ; preds = %L10, %L3 | |
| %62 = load %jl_value_t** %4, align 4, !dbg !3735 | |
| %63 = getelementptr inbounds %jl_value_t* %62, i32 0, i32 0, !dbg !3735 | |
| store %jl_value_t** %63, %jl_value_t*** @jl_pgcstack, align 4, !dbg !3735 | |
| ret i1 true, !dbg !3735 | |
| } | |
| julia> @code_llvm roundtrip(a) | |
| ; Function Attrs: alignstack(8) | |
| define i1 @"julia_roundtrip;1230"(%jl_value_t*) #2 { | |
| top: | |
| %1 = alloca [6 x %jl_value_t*], align 4 | |
| %.sub = getelementptr inbounds [6 x %jl_value_t*]* %1, i32 0, i32 0 | |
| %2 = getelementptr [6 x %jl_value_t*]* %1, i32 0, i32 2, !dbg !3745 | |
| store %jl_value_t* inttoptr (i32 8 to %jl_value_t*), %jl_value_t** %.sub, alig | |
| n 4 | |
| %3 = getelementptr [6 x %jl_value_t*]* %1, i32 0, i32 1, !dbg !3745 | |
| %4 = load %jl_value_t*** @jl_pgcstack, align 4, !dbg !3745 | |
| %.c = bitcast %jl_value_t** %4 to %jl_value_t*, !dbg !3745 | |
| store %jl_value_t* %.c, %jl_value_t** %3, align 4, !dbg !3745 | |
| store %jl_value_t** %.sub, %jl_value_t*** @jl_pgcstack, align 4, !dbg !3745 | |
| store %jl_value_t* null, %jl_value_t** %2, align 4, !dbg !3745 | |
| %5 = getelementptr [6 x %jl_value_t*]* %1, i32 0, i32 3, !dbg !3745 | |
| store %jl_value_t* null, %jl_value_t** %5, align 4, !dbg !3745 | |
| %6 = getelementptr [6 x %jl_value_t*]* %1, i32 0, i32 4 | |
| %7 = getelementptr [6 x %jl_value_t*]* %1, i32 0, i32 5 | |
| store %jl_value_t* null, %jl_value_t** %7, align 4 | |
| store %jl_value_t* inttoptr (i32 21441248 to %jl_value_t*), %jl_value_t** %6, | |
| align 4, !dbg !3746 | |
| %8 = call %jl_value_t* inttoptr (i32 1737033888 to %jl_value_t* (%jl_value_t*, | |
| i32)*)(%jl_value_t* inttoptr (i32 21441248 to %jl_value_t*), i32 0), !dbg !3746 | |
| store %jl_value_t* %8, %jl_value_t** %2, align 4, !dbg !3746 | |
| store %jl_value_t* %8, %jl_value_t** %6, align 4, !dbg !3746 | |
| store %jl_value_t* %0, %jl_value_t** %7, align 4, !dbg !3746 | |
| %9 = call %jl_value_t* @"julia___compress#5__;1208"(%jl_value_t* inttoptr (i32 | |
| 84387344 to %jl_value_t*), %jl_value_t** %6, i32 2), !dbg !3746 | |
| store %jl_value_t* %9, %jl_value_t** %5, align 4, !dbg !3746 | |
| store %jl_value_t* inttoptr (i32 26987696 to %jl_value_t*), %jl_value_t** %6, | |
| align 4, !dbg !3746 | |
| %10 = call %jl_value_t* inttoptr (i32 1737033888 to %jl_value_t* (%jl_value_t* | |
| , i32)*)(%jl_value_t* inttoptr (i32 26987696 to %jl_value_t*), i32 0), !dbg !374 | |
| 6 | |
| store %jl_value_t* %10, %jl_value_t** %6, align 4, !dbg !3746 | |
| store %jl_value_t* %9, %jl_value_t** %7, align 4, !dbg !3746 | |
| %11 = call %jl_value_t* @"julia_decompress!;1215"(%jl_value_t* inttoptr (i32 8 | |
| 5180336 to %jl_value_t*), %jl_value_t** %6, i32 2), !dbg !3746 | |
| store %jl_value_t* %11, %jl_value_t** %6, align 4, !dbg !3746 | |
| %12 = call i1 @"julia_==;1222"(%jl_value_t* %11, %jl_value_t* %0), !dbg !3746 | |
| %13 = load %jl_value_t** %3, align 4, !dbg !3746 | |
| %14 = getelementptr inbounds %jl_value_t* %13, i32 0, i32 0, !dbg !3746 | |
| store %jl_value_t** %14, %jl_value_t*** @jl_pgcstack, align 4, !dbg !3746 | |
| ret i1 %12, !dbg !3746 | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment