Skip to content

Instantly share code, notes, and snippets.

@eholk
Created December 5, 2012 17:30
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 eholk/4217710 to your computer and use it in GitHub Desktop.
Save eholk/4217710 to your computer and use it in GitHub Desktop.
LLVM code generated by Rust
; ModuleID = 'trivial-kernel.rc'
target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64"
target triple = "x86_64-apple-darwin"
%shapes = type opaque
%"~enum intrinsic::TyDesc[#0]" = type { [16 x i8] }
%tydesc = type { i64, i64, void (i1*, i1*, %tydesc**, i8*)*, void (i1*, i1*, %tydesc**, i8*)*, void (i1*, i1*, %tydesc**, i8*)*, void (i1*, i1*, %tydesc**, i8*)*, i8*, i8* }
@_rust_crate_map_trivial-kernel_0.0_68a2c114141ca = global { i32, i8*, i64, [2 x i64] } { i32 1, i8* bitcast (void (i1*, { i64, %tydesc*, i8*, i8*, i8 } addrspace(1)*)* @_ZN7cleanup10annihilate17_bde425c43da4f4993_05E to i8*), i64 ptrtoint ([1 x { i64, i64 }]* @_rust_mod_map to i64), [2 x i64] [i64 ptrtoint (i64* @_rust_crate_map_core_0.5_c3ca5d77d81b46c1 to i64), i64 0] }
@shapes = external global %shapes
@_ZN9intrinsic6TyDesc6TyDesc7descrim15_358fde799ef3ca3_00E = constant i64 0
@_rust_crate_map_core_0.5_c3ca5d77d81b46c1 = external global i64
@_rust_mod_map = internal global [1 x { i64, i64 }] zeroinitializer
@rust_abi_version = constant i64 1
@rust_metadata = internal global { [3141 x i8] } { [3141 x i8] c"rust\00\00\00\01\D5Zk\8C\1B\D5\15\B6\D7a\F3X\08\9B\02i\08\09!;wf\9B\84&\1E\8F=c\9B\A6,\84P\08m\A8P@j\D3\ED\D6k\8F\83\8B\D7\BB\F8\B1%(*\8F:\C0\C6i\08\A4\A8i\ABR^}\F0J\9BBx\84\02!i\92\AA\0F\95P\DA@_R\85\84\90\10\12\A2*\95\DAF\E5;\F7\DAwf\1C{=\09\F9\11\12\9D\F1\D8\F7|\E7~\F7\BB\E7>\E6\CE\FE\A47\108\CD\8C\A7\22i]\8F\E2\7F:u?~Y\F5\00.+\1F\C2e\E0;\B8L\C9\E7\0A\D7m\C7\CD<\FE\AD\90\1A\B1\EF\C3\CD\CCr17\9EK\E5?y\9D],\D8yr\98\C5\1D\C6\EDb\89\1CB\E1\A5\E1\1F\E2s\C9\8Fp\D1\1E\A1\A2\F4h\D1~L\14\C5\1E\C5go\DAH\A7b\19\CB\CA\C4\F5\E1\A8\99\D6o\ED\0D,\DEvGo\E0\BC#\13(\9E{\FB7\C2\C9\F0&\DC\05G\AA7\EF\C1\E7\B4\97\AA\01|\DB{3\8A\BB\8F\DC\BE1\9C\D4\13\C2![\A3\EB\D2\CD\B8\CE\CE\0E\E5F\CAK\D7\0E..\AF%\87\F8\86Ba\ED\E0 \E1\E7s|\D7\DE\89\5C\01\F4\0B\A5\5Cz\DF\A6uvy\A8\BC>c\97\D2\D4\F8\C0\CB\88\FC\E0\C6;\02\E2\DF\E3\F2\EE\C5C\BD\81P\F7\9D\B8\04\B7R\90\C0]\BD\81\AE\F7k.\F8\DD\80wo\E3e\12\F5\02\00]{8 H\80]\AD\9C~\06\A7@\85;u\C3)\F0UY\F2S*\B9\82\97\F4P\C9\C0\A6[\02\14\E1\0C\1E!\F8-\92\A4v\DB\9A\F5\97\A0zr\ED\91\D4\02\81V5\EDp\9C\82\DC\A9\FD\F7.\19Dq*\9BS\BBe\8D\A3\8D\AB\86\D6\B7\88\16|XF\0F\DE+\A1\BB\E5\DDs\E4\B3\91\FBL#\9F\1Be\C9.y\F7\14\B1\FA\1B\F7\09\11\ABWd\C9\13\F2\EEI\F2y\94\FB\9CM>\F7\D5\95\12\E4\BB\88\FC\D4\DA\C6b\A5T\CE\D1\FD\A9\EE\8Ek\A5\DCW\9CF_-+\F99y^\EAt\C7\05\F5Jf:\CE!(\E4\A7'v\BA~D\14\F9\FB\B3ms\E1\99\13\9C\0BO7\F7\BD,y\BE\19\DE\FC\FD\0F\18\057\1D\C6\DD9\AF\CAD\FF#\A9z\0F\C9\ACd\AC\A4n*\AF\D3\08\F6\96\F7\B8x\FC\19\B7\17y\8B#T<\CBiN\F7=|L7\D7\EE\AE\E4\A4 \F1'\DC/\92Q\1E\A7(s\C9\FF,\EE\DFK\FE3\9C\19\E1/T\E2\F5\AE\D7Aq\0CY\B2\83J\18\C5Y\C0\E3L\A78g\CA8Nw\1D8\ECi$\C7\F5P\C4n\C5\0E'3'\8C\9E\B7\9A\E7]\D5d\B2I[\F1\16\EFnU<[\16\EF\A2\E2\A9T\DC\B5\B8@\04W\C8\A2'\A8(J\04\979z\B3\A3\DB\1DZ\D1<YQ\15\E7z\E3\9CNU\CC\90\0BB\E15|=\DF\EB2\9F:|\8E\D3\E1\A7\11d\DA\18V\0E\CB\D8\10&n\CB%`'\01x.,r\06\E2\B9-\FA\E4\F1\9B\E5o\DE^}\FA8{\F5\E9\E6^\C5\0A\18zN\AC\80q\BE\02\967;\85\D5\FA<\B0\05?\9DB.\16\96\B5P\C1Y\CC\E4\DDA,k\C1\FF\D2$\FC\BET;\F8vc\1Ei5o\1C \E7g\B9\F3)\E4LkJ\F0^\07\BC\0D\A0\E0\D7\A5\9E\C1R\8B`\04\D1\1D\88F\90\85\0Ed\B6\ACl\1F)uD.\0F\81\F7(\C8;\CE\9C^\A8UK\B9\1Bm\E9\BF\87\FC/w\FA\E6\D3\F5I\D2=\A0k\D5\0A\96\7F?S\E4\8B\CDS$\E1Gk\1BS\F9\DC:G\CC\BD'\B4\CE\97\DAN\CB\BF\94w\FB;M\D0\93T\D4b.\0F^\ED\CD\B5\03\CD\B9F\D3d\CC[\ACM\12\D2\85<\ECI\FE\FD<\F9\A9xAvh\8C\86\E4\92\AB\D6R\FF-\AFpI\97W\06\07\9D\1A-/\EE\13\1Dj\9C\A6\A4\AC\E1\A4\9E\E5\F3\DD\85\12\FB\22a\C3\04X\C2\013\08p\1E}?\C7\11\B9\B79\A07\C6K\C7\15\836\9Cg\1F\BD\E1\AC\8F\06\DA\E0\1E\14\E3\D7\E2\E3w\BC\EAZ\BC\F9\A0\8Dov7\EB\9B\F8\92\1C\FA\E2\EA\84\0Ce\0A\7F\EF\87n\0D\C5\A2f\222\1CI\C4c)+\9D\D1#\C6P8\BC\92\E0\89I\E0\16\ED\84\8A\B9\11=6d\C4\E2\D9\8Cm%\12v\16\FBs\8E\EE\D8\96\99\D3\A9-qC\E7m\B9\9C\98\9F~\C3Z\FE\0B\DF~/\1B\18\ACN\ACY\7FM\AE\94+\8F\16\F9N{'.\11BE\C2zub\9CJ\86\86G\F946\BD1c\0F\8B\CD\FDo\E8Z|\97_\09\16\16\B0h\03V\C8\E5\096UI'R\C9\84\D2\1A\A4\0B\90U\DD\D4\A8k\D4\07JT\A5\87\1BU\A1\F1\9DA\CB\04\C8\A8\DEQ\07\C5}Wd\CA\8At\D37(!AF\C4/(\12\91 3\EAW\BDH\AC\A1^\E5\18\84\88\C4\1BBT|\0Ba\C8\9C\A8\F8\17\C2\90\19Q\F1/\84aI\90\1F!D\CAF\C3\D5\9A\00e\F3\A3\A9\B2\DF\BA\A2F\A3\AE\AC\7F\82Q\99\13Y\FF=\15M4z*}m\AA\E8\B7\AA\98L\8AR\D9\07(&@\B1\EA\16\01\B2\81\C2\B8\BA\A13\D2\14\C8x\F5N\17\B2R\C8]\DF\19jq\A8\A9W\B7\BA\A0\A5|.mw\C6^\C8\B1V\C2\83\CD\E6n\B03|\C6\AAO;K*\F4\BF\DD\E4s\01\8F\910\9C9\8B\B7\F7c\0EX\ECx\DB\E1\0D\C2\1B\CE<\D4h\F5t\05\A70vR\8FL\96xFD\8E\8B1\D1C\9D`\A2:C\0E\DC\A2O\9C\A8.*\A7\96q;\ED\07\96\E40\D3\A8\DE\D5h\1D\F4\B13~\E1\BCs\0D\CB\92\19\05\5CC\E1N\D88\C7&t\99S\84\F5\ABn\82\C0\D1pLf\06\81eVuB_\C6\D1\98~\DCh\99Ws<y\D51A\B8\06Q\0C\C5F;\0Ae\BB8T\14\02N\03\13]Of\DB\10\B9\82c-9\AE\8A\9C\87\9D\E7<\E69<\C6\97i\C3\A9\F0\06\9F\5C\12f#^\DEN\8D\DB>\B9pIcz\B4\91\0A\A2\1D\E9|\AAT\F2\81\E6\89\14\C3<[Gs\9C\D3\16\F4\88\91\D5\93zz\D2\CA1\C1\DC\E5&\EE\B7r\DE\EC\98ez\BB\A0\5C\19\F3\81\E5i\18K\84\1BX\A0<\B4;\E7\BF\19\8E{\F5>\86\8A\CD\88)\93\90\93\B6\0B\95\11\1F\E0+98\A6W\B77\83\87\C6S\C5\5CJ\AC\F6\1Fw2(\E7dQ\BB\E4\B9\88\C74cNL'\9A\7FID\14\E8\B9\DD-I33D1\0D\03\0F\ED\93\89cA\D8\AD\CDQ|\88\C3\97\0D\0B[\92-nq\B2\05\82\CEj\1A\DC\ED\C4\B8\98\C7\88\85\1B1\B2\05\EC%\C7*\9C\FC\99\EE\18\93\0FH\D1\0E3\DAH\10\84\19\AD\94\EBq|e\97\15\97\B3\AB\10A\B4\03X+j&u}\B2\F5\C0J\C8}O\B9\98\CA\F9\DD\F7X\CEj9\EEg3\92\10 \B3z\B7\04\D1\C6\DB^WL\F9\D8\B2\F3\BDE\1CO\07u\A6c\A9b\8A\F7r\8F\94\B9\9D\BA\BA\80\CA\B5\B9d\E7\B3>w\5Cq<#\D4Q\E5\F5c>\F6\22\96@\19\8D\8C\1C\1DK]_\B1\FDm\9F>\C5\B1\D8\C2o\AEO\8E\A3\85\FA\86\AD\B7\D1\C6\C9\D3(!\1E\D7\5C\B3\EBh\A9R\B4\1B\9B\0A\8C\878f\D7\E1\16\D5\D3\A3\E0\BC\A3\1F\05\9D\87;<\0Dv\05E\F8X\F3\BB\99\A9\8Ai\C7\93)\E5e\9C:<)O\F2\06\E4\DD%\87\E0\F4\16=\01\BF\E1\1C\EC\BD\D6\E6-\0B\B9=\E0<p\7F\BB\C5qJ\E8br\8A9\E7\E9\8Be\C9E\ED\0FM>\F4\BB\91\D0@+.G\1DX\E2\EC%\B0\C3s\84\1DZ\E1:\C2\16Ry\CE\A8E\F91\9DQ\8B(\9EC\E0\D0\C0\A4\87\C0\A1\15\9EC`\E1]\AF\83z\9F\F1\DE\0F\B9{_\BCYq\BFLC\16L\19\E0Y\105E\16\B8wB\8A\C8\CE\E5J:\96\C5\AC;X\A0\F3\C97\9D4\90wW\22!\BAv\D3[\B4]R\B8\AEGj\9B\1B\03\ED\E8\94\E8*:\EF\E7\D6\A1\A8k\BE<.\0C\CEu\CEl\02Mg6\DE\C3\B6\D0g\DA\BD\87\09]zb\DF\C3\84V\B6\E5p\09\95\0C:%W5\87\AB\D7|\BAS\F3\94\DA\AD\E5\CC1\9C\FE\C9\BA.#\F4?\DB\CB\D3\E4~\05\95\ACvDXQ\A72\DB\A1\D2Ss\A6\04?:\AC\92w\97\1F_\BB\C7\8F\A7\DD\9F\95w\9F\F3?\1Ft\B5m\C4\EA\16C<8\93\86\F8|9\9CV\D3p\9AI\C3\09Kn\DA\C2\9E%\CE\07y\DC\EB\B1\A8\C3y\A7\03\F6\BCa\08\AD<\BE7\0C\02\D7\FC\DE\C8\09\BB\CAg\D8\D0\85\DE\09m\95kB\13\83\9D\A6\10\AD\ED\14\E2\19\D9tH*\16\D7\A88$-T\85\1B\C5\98s\F4\22$\0A\09\B5T\A0\E2\F5\BF\1Ep|\089\AB\FEg\04\CE\AF\04\99\B8\BD\8AG\9D\883Y-h,\A5|\93\9B\A7\0F]|D6\8C\E4\07\0B\AEP\FB&R\99\8C8\0A\A2\B3\CD\B3\E8O(z\1F$A\E9o\22\BA\C5\DFH\D0\11,\A3#X\E9\AB\9BC\E9\E1\84\AD\0FG\0D3\96\88\0D\1B\06?m\85\B4\D37\A3\FBO\B9u\1B\F5v\8B\CBi|\9A\C1!\F4\FD4G\B6\F3\FAH\5C\1AM\99\F7%\CA\FC\8F\1C\ED\A9\BF\A0\A1trq\0A|/\E0\DBu7\EC\85\93P\D7\F3\0E#\1D>\7F\12\11\9B\8C\EC\DCkh\D74\89C\CF\06\FC\B0\FF$o\8D\BF\B6.\9C\81\1F\16\9F\FC<O\BD\8C\16\A3\0F\1D\12+\D7\14|,|\00\F6c\D8c\B0\9D\B0\A7`\BF\82\FD\0E\F6\0A\0C\E9\BA\F0\AF\B0\7F\C0\DE\84\BD\0D{\17\F6/\D8\7F`\FF\0F\04\FA\10\A8o:l&\EC\0C\D8\1C\D8|X\1F\AC\1Fv>L\87\99\B0\0B`\03\B0\95\B0U\B0+ak`_\80}\19\96\86]\0B\1B\81\15a_\83!\C9\FAn\81m\83m\87}\1F\06\DE}\E0\DD\07\DE}\E0\DD\07\DE}\CF\C1\F6\C0\F6\C3~\0D\FB=\ECU\D8\EB\B0\BF\C3\DE\80\BD\05{\07\F6\1E\EC\DF\B0\FF\E1a'\08\EB\86\F5\C0\A0\8Dr\16l.l\01\8C\C1\16\C1\96\C2\0CX\1C\06\DE\0Ax+\E0\AD\80\B7\02\DE\0Ax+\E0\AD\80\B7\02\DE\0Ax+\E0\AD\80\B7r\1B\AC\06\DB\0A\BB\07\F6]\D8\0F`\0F\C1\1E\86\ED\80=\01{\06\F6<l/\EC \EC\B70\F0V\C0[\01o\05\BC\15\F0V\C0\9BAo\06\BD\19\F4f\D0\9BAo\06\BD\19\F4f\D0\9BAo\06\BD\19\F4f\D0\9BAo\06\DE\0C\BC\19x3\F0f\E0\CD\C0\9B\817\03o\06\DE\0C\BC\19x3\F0f\E0\CD\C0\9B\817\83\DE\0Cz3\E8\CD\A07\83\DE\0Cz3\E8\CD\A07\83\DE\0Cz3\E8\CD\A07\03o\06\DE\0C\BC\19x3\F0f\C4\1Bz\AB\D0[\85\DE*\F4V\A1\B7\0A\BDU\E8\ADBo\15z\AB\D0[\85\DE*\F4V\A1\B7\BA\1C\06\DE*x\AB\E0\AD\82\B7:\06\AB\C0n\84\DD\04\C3vE\9D\80m\81!OT\E4\89\8A<Q\C1[\05o\15\BCU\F0V\C1[\05o\15\BCU\F0V\C1[\05o\15\BCU\F0V\C1[\05o\15\BCU\F0V\C1[\05o\15\BC5\F0\D6\C0[\03o\0D\BC5\F0\D6\C0[\03o\0D\BC5\F0\D6\A0\B7\06\BD5\E8\ADAo\0D\BC5\F0\D6\C0[\03o\0Dzk\D0[\83\DE\1A\F4\D6\A0\B7\06\BD5\E8\ADAo\0Dzk\D0[C\9Eh\C8\13\0Dy\A2!O4\E4\89\86<\D1\90'\1A\F2DC\9Eh\C8\13\0Dy\A2!O\B4C0\F0\D6\C0[\03o\0D\BC5\F0\D6\C0\BB\1F\BC\FB\C1\BB\1F\BC\FB\C1\BB\1F\BC\FB\C1\BB\1F\BC\03\81\0F\00" }, section "__DATA,__note.rustc"
@llvm.used = appending global [1 x i8*] [i8* getelementptr inbounds ({ [3141 x i8] }* @rust_metadata, i32 0, i32 0, i32 0)]
declare void @llvm.gcroot(i8**, i8*) nounwind
declare void @llvm.gcread(i8*, i8**) nounwind readonly
declare void @llvm.memcpy.p0i8.p0i8.i32(i8* nocapture, i8* nocapture, i32, i32, i1) nounwind
declare void @llvm.memcpy.p0i8.p0i8.i64(i8* nocapture, i8* nocapture, i64, i32, i1) nounwind
declare void @llvm.memset.p0i8.i32(i8* nocapture, i8, i32, i32, i1) nounwind
declare void @llvm.memset.p0i8.i64(i8* nocapture, i8, i64, i32, i1) nounwind
declare void @llvm.trap() noreturn nounwind
declare i8* @llvm.frameaddress(i32) nounwind readnone
declare void @upcall_trace(i8*, i8*, i64)
declare i64 @upcall_call_shim_on_c_stack(i8*, i8*)
declare i64 @upcall_call_shim_on_rust_stack(i8*, i8*)
declare i32 @upcall_rust_personality() nounwind
declare void @upcall_reset_stack_limit() nounwind
define internal void @_ZN9intrinsic6TyDesc6TyDesc6TyDesc17_54692b2985a7cd123_00E(%"~enum intrinsic::TyDesc[#0]"*, { i64, %tydesc*, i8*, i8*, i8 } addrspace(1)*, { { i64, i64 } }*) inlinehint {
static_allocas:
br label %3
return: ; preds = %3
ret void
; <label>:3 ; preds = %static_allocas
%4 = bitcast %"~enum intrinsic::TyDesc[#0]"* %0 to { { { i64, i64 } } }*
%5 = getelementptr inbounds { { { i64, i64 } } }* %4, i32 0, i32 0
%6 = bitcast { { i64, i64 } }* %2 to i8*
%7 = bitcast { { i64, i64 } }* %5 to i8*
call void @llvm.memcpy.p0i8.p0i8.i64(i8* %7, i8* %6, i64 mul nuw (i64 ptrtoint (i64* getelementptr (i64* null, i32 1) to i64), i64 2), i32 1, i1 false)
br label %return
}
define void @_ZN9add_float16_cb9e1b436595b333_00E(i1*, { i64, %tydesc*, i8*, i8*, i8 } addrspace(1)*, double*, double*, double*) uwtable {
static_allocas:
%5 = alloca double*
%6 = alloca double*
%7 = alloca double*
br label %8
return: ; preds = %8
ret void
; <label>:8 ; preds = %static_allocas
store double* %2, double** %5
store double* %3, double** %6
store double* %4, double** %7
call void asm "# *z = *x + *y; (trivial-kernel.rs:3:4: 3:16)", ""()
%9 = load double** %5
%10 = load double** %6
%11 = load double* %9
%12 = load double* %10
%13 = fadd double %11, %12
%14 = load double** %7
store double %13, double* %14
br label %return
}
declare void @_ZN7cleanup10annihilate17_bde425c43da4f4993_05E(i1*, { i64, %tydesc*, i8*, i8*, i8 } addrspace(1)*)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment