Created
July 6, 2012 01:48
-
-
Save gatlin/3057536 to your computer and use it in GitHub Desktop.
LLVM output of a simple Haskell program
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
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-darwin10.0.0" | |
declare ccc i8* @memcpy(i8*, i8*, i64) | |
declare ccc i8* @memmove(i8*, i8*, i64) | |
declare ccc i8* @memset(i8*, i64, i64) | |
declare ccc i64 @newSpark(i8*, i8*) | |
%__stginit_Main_struct = type <{}> | |
@__stginit_Main = global %__stginit_Main_struct<{}> | |
%sfT_srt_struct = type <{i64}> | |
@sfT_srt = internal constant %sfT_srt_struct<{i64 ptrtoint ([0 x i64]* @ghczmprim_GHCziCString_unpackCStringzh_closure to i64)}> | |
@ghczmprim_GHCziCString_unpackCStringzh_closure = external global [0 x i64] | |
%sfT_closure_struct = type <{i64, i64, i64, i64}> | |
@sfT_closure = internal global %sfT_closure_struct<{i64 ptrtoint (void (i64*, i64*, i64*, i64, i64, i64, i64, i64, i64, i64, float, float, float, float, double, double)* @sfT_info to i64), i64 0, i64 0, i64 0}> | |
%cg1_str_struct = type <{[14 x i8]}> | |
@cg1_str = internal constant %cg1_str_struct<{[14 x i8] [i8 72, i8 101, i8 108, i8 108, i8 111, i8 44, i8 32, i8 87, i8 111, i8 114, i8 108, i8 100, i8 33, i8 0]}> | |
%Main_main_srt_struct = type <{i64, i64, i64}> | |
@Main_main_srt = internal constant %Main_main_srt_struct<{i64 ptrtoint ([0 x i64]* @base_GHCziBase_zd_closure to i64), i64 ptrtoint ([0 x i64]* @base_SystemziIO_putStrLn_closure to i64), i64 ptrtoint (%sfT_closure_struct* @sfT_closure to i64)}> | |
@base_GHCziBase_zd_closure = external global [0 x i64] | |
@base_SystemziIO_putStrLn_closure = external global [0 x i64] | |
%Main_main_closure_struct = type <{i64, i64, i64, i64}> | |
@Main_main_closure = global %Main_main_closure_struct<{i64 ptrtoint (void (i64*, i64*, i64*, i64, i64, i64, i64, i64, i64, i64, float, float, float, float, double, double)* @Main_main_info to i64), i64 0, i64 0, i64 0}> | |
%ZCMain_main_srt_struct = type <{i64, i64}> | |
@ZCMain_main_srt = internal constant %ZCMain_main_srt_struct<{i64 ptrtoint ([0 x i64]* @base_GHCziTopHandler_runMainIO_closure to i64), i64 ptrtoint (%Main_main_closure_struct* @Main_main_closure to i64)}> | |
@base_GHCziTopHandler_runMainIO_closure = external global [0 x i64] | |
%ZCMain_main_closure_struct = type <{i64, i64, i64, i64}> | |
@ZCMain_main_closure = global %ZCMain_main_closure_struct<{i64 ptrtoint (void (i64*, i64*, i64*, i64, i64, i64, i64, i64, i64, i64, float, float, float, float, double, double)* @ZCMain_main_info to i64), i64 0, i64 0, i64 0}> | |
%sfT_info_struct = type <{i64, i64, i64}> | |
@sfT_info_itable = internal constant %sfT_info_struct<{i64 add (i64 sub (i64 ptrtoint (%sfT_srt_struct* @sfT_srt to i64),i64 ptrtoint (void (i64*, i64*, i64*, i64, i64, i64, i64, i64, i64, i64, float, float, float, float, double, double)* @sfT_info to i64)),i64 0), i64 0, i64 4294967318}>, section "X98A__STRIP,__me1", align 8 | |
define internal cc 10 void @sfT_info(i64* noalias nocapture %Base_Arg, i64* noalias nocapture %Sp_Arg, i64* noalias nocapture %Hp_Arg, i64 %R1_Arg, i64 %R2_Arg, i64 %R3_Arg, i64 %R4_Arg, i64 %R5_Arg, i64 %R6_Arg, i64 %SpLim_Arg, float %F1_Arg, float %F2_Arg, float %F3_Arg, float %F4_Arg, double %D1_Arg, double %D2_Arg) align 8 nounwind section "X98A__STRIP,__me2" | |
{ | |
chU: | |
%Base_Var = alloca i64*, i32 1 | |
store i64* %Base_Arg, i64** %Base_Var | |
%Sp_Var = alloca i64*, i32 1 | |
store i64* %Sp_Arg, i64** %Sp_Var | |
%Hp_Var = alloca i64*, i32 1 | |
store i64* %Hp_Arg, i64** %Hp_Var | |
%R1_Var = alloca i64, i32 1 | |
store i64 %R1_Arg, i64* %R1_Var | |
%R2_Var = alloca i64, i32 1 | |
store i64 %R2_Arg, i64* %R2_Var | |
%R3_Var = alloca i64, i32 1 | |
store i64 %R3_Arg, i64* %R3_Var | |
%R4_Var = alloca i64, i32 1 | |
store i64 %R4_Arg, i64* %R4_Var | |
%R5_Var = alloca i64, i32 1 | |
store i64 %R5_Arg, i64* %R5_Var | |
%R6_Var = alloca i64, i32 1 | |
store i64 %R6_Arg, i64* %R6_Var | |
%SpLim_Var = alloca i64, i32 1 | |
store i64 %SpLim_Arg, i64* %SpLim_Var | |
%F1_Var = alloca float, i32 1 | |
store float %F1_Arg, float* %F1_Var | |
%F2_Var = alloca float, i32 1 | |
store float %F2_Arg, float* %F2_Var | |
%F3_Var = alloca float, i32 1 | |
store float %F3_Arg, float* %F3_Var | |
%F4_Var = alloca float, i32 1 | |
store float %F4_Arg, float* %F4_Var | |
%D1_Var = alloca double, i32 1 | |
store double %D1_Arg, double* %D1_Var | |
%D2_Var = alloca double, i32 1 | |
store double %D2_Arg, double* %D2_Var | |
%lcgC = alloca i64, i32 1 | |
%lnhV = load i64** %Sp_Var | |
%lnhW = getelementptr inbounds i64* %lnhV, i32 -2 | |
%lnhX = ptrtoint i64* %lnhW to i64 | |
%lnhY = load i64* %SpLim_Var | |
%lnhZ = icmp ult i64 %lnhX, %lnhY | |
br i1 %lnhZ, label %ci1, label %ni2 | |
ni2: | |
%lni3 = load i64** %Hp_Var | |
%lni4 = getelementptr inbounds i64* %lni3, i32 2 | |
%lni5 = ptrtoint i64* %lni4 to i64 | |
%lni6 = inttoptr i64 %lni5 to i64* | |
store i64* %lni6, i64** %Hp_Var | |
%lni7 = load i64** %Hp_Var | |
%lni8 = ptrtoint i64* %lni7 to i64 | |
%lni9 = load i64** %Base_Var | |
%lnia = getelementptr inbounds i64* %lni9, i32 18 | |
%lnib = bitcast i64* %lnia to i64* | |
%lnic = load i64* %lnib | |
%lnid = icmp ugt i64 %lni8, %lnic | |
br i1 %lnid, label %cif, label %nig | |
nig: | |
%lnih = ptrtoint [0 x i64]* @stg_CAF_BLACKHOLE_info to i64 | |
%lnii = load i64** %Hp_Var | |
%lnij = getelementptr inbounds i64* %lnii, i32 -1 | |
store i64 %lnih, i64* %lnij | |
%lnik = load i64** %Base_Var | |
%lnil = getelementptr inbounds i64* %lnik, i32 20 | |
%lnim = bitcast i64* %lnil to i64* | |
%lnin = load i64* %lnim | |
%lnio = load i64** %Hp_Var | |
%lnip = getelementptr inbounds i64* %lnio, i32 0 | |
store i64 %lnin, i64* %lnip | |
%lniq = load i64** %Base_Var | |
%lnir = ptrtoint i64* %lniq to i64 | |
%lnis = inttoptr i64 %lnir to i8* | |
%lnit = load i64* %R1_Var | |
%lniu = inttoptr i64 %lnit to i8* | |
%lniv = load i64** %Hp_Var | |
%lniw = getelementptr inbounds i64* %lniv, i32 -1 | |
%lnix = ptrtoint i64* %lniw to i64 | |
%lniy = inttoptr i64 %lnix to i8* | |
store i64 undef, i64* %R3_Var | |
store i64 undef, i64* %R4_Var | |
store i64 undef, i64* %R5_Var | |
store i64 undef, i64* %R6_Var | |
store float undef, float* %F1_Var | |
store float undef, float* %F2_Var | |
store float undef, float* %F3_Var | |
store float undef, float* %F4_Var | |
store double undef, double* %D1_Var | |
store double undef, double* %D2_Var | |
%lniz = call ccc i64 (i8*,i8*,i8*)* @newCAF( i8* %lnis, i8* %lniu, i8* %lniy ) nounwind | |
store i64 %lniz, i64* %lcgC | |
%lniA = load i64* %lcgC | |
%lniB = icmp eq i64 %lniA, 0 | |
br i1 %lniB, label %ciC, label %niD | |
niD: | |
br label %ciE | |
ci1: | |
%lniF = load i64** %Base_Var | |
%lniG = getelementptr inbounds i64* %lniF, i32 -2 | |
%lniH = bitcast i64* %lniG to i64* | |
%lniI = load i64* %lniH | |
%lniJ = inttoptr i64 %lniI to void (i64*, i64*, i64*, i64, i64, i64, i64, i64, i64, i64, float, float, float, float, double, double)* | |
%lniK = load i64** %Base_Var | |
%lniL = load i64** %Sp_Var | |
%lniM = load i64** %Hp_Var | |
%lniN = load i64* %R1_Var | |
%lniO = load i64* %R2_Var | |
%lniP = load i64* %R3_Var | |
%lniQ = load i64* %R4_Var | |
%lniR = load i64* %R5_Var | |
%lniS = load i64* %R6_Var | |
%lniT = load i64* %SpLim_Var | |
%lniU = load float* %F1_Var | |
%lniV = load float* %F2_Var | |
%lniW = load float* %F3_Var | |
%lniX = load float* %F4_Var | |
%lniY = load double* %D1_Var | |
%lniZ = load double* %D2_Var | |
tail call cc 10 void (i64*,i64*,i64*,i64,i64,i64,i64,i64,i64,i64,float,float,float,float,double,double)* %lniJ( i64* %lniK, i64* %lniL, i64* %lniM, i64 %lniN, i64 %lniO, i64 %lniP, i64 %lniQ, i64 %lniR, i64 %lniS, i64 %lniT, float %lniU, float %lniV, float %lniW, float %lniX, double %lniY, double %lniZ ) nounwind | |
ret void | |
cif: | |
%lnj0 = load i64** %Base_Var | |
%lnj1 = getelementptr inbounds i64* %lnj0, i32 24 | |
store i64 16, i64* %lnj1 | |
br label %ci1 | |
ciC: | |
%lnj2 = load i64* %R1_Var | |
%lnj3 = inttoptr i64 %lnj2 to i64* | |
%lnj4 = load i64* %lnj3 | |
%lnj5 = inttoptr i64 %lnj4 to void (i64*, i64*, i64*, i64, i64, i64, i64, i64, i64, i64, float, float, float, float, double, double)* | |
%lnj6 = load i64** %Base_Var | |
%lnj7 = load i64** %Sp_Var | |
%lnj8 = load i64** %Hp_Var | |
%lnj9 = load i64* %R1_Var | |
%lnja = load i64* %R2_Var | |
%lnjb = load i64* %R3_Var | |
%lnjc = load i64* %R4_Var | |
%lnjd = load i64* %R5_Var | |
%lnje = load i64* %R6_Var | |
%lnjf = load i64* %SpLim_Var | |
%lnjg = load float* %F1_Var | |
%lnjh = load float* %F2_Var | |
%lnji = load float* %F3_Var | |
%lnjj = load float* %F4_Var | |
%lnjk = load double* %D1_Var | |
%lnjl = load double* %D2_Var | |
tail call cc 10 void (i64*,i64*,i64*,i64,i64,i64,i64,i64,i64,i64,float,float,float,float,double,double)* %lnj5( i64* %lnj6, i64* %lnj7, i64* %lnj8, i64 %lnj9, i64 %lnja, i64 %lnjb, i64 %lnjc, i64 %lnjd, i64 %lnje, i64 %lnjf, float %lnjg, float %lnjh, float %lnji, float %lnjj, double %lnjk, double %lnjl ) nounwind | |
ret void | |
ciE: | |
%lnjm = ptrtoint [0 x i64]* @stg_bh_upd_frame_info to i64 | |
%lnjn = load i64** %Sp_Var | |
%lnjo = getelementptr inbounds i64* %lnjn, i32 -2 | |
store i64 %lnjm, i64* %lnjo | |
%lnjp = load i64** %Hp_Var | |
%lnjq = getelementptr inbounds i64* %lnjp, i32 -1 | |
%lnjr = ptrtoint i64* %lnjq to i64 | |
%lnjs = load i64** %Sp_Var | |
%lnjt = getelementptr inbounds i64* %lnjs, i32 -1 | |
store i64 %lnjr, i64* %lnjt | |
%lnju = ptrtoint [0 x i64]* @ghczmprim_GHCziCString_unpackCStringzh_closure to i64 | |
store i64 %lnju, i64* %R1_Var | |
%lnjv = ptrtoint %cg1_str_struct* @cg1_str to i64 | |
store i64 %lnjv, i64* %R2_Var | |
%lnjw = load i64** %Sp_Var | |
%lnjx = getelementptr inbounds i64* %lnjw, i32 -2 | |
%lnjy = ptrtoint i64* %lnjx to i64 | |
%lnjz = inttoptr i64 %lnjy to i64* | |
store i64* %lnjz, i64** %Sp_Var | |
%lnjA = load i64** %Base_Var | |
%lnjB = load i64** %Sp_Var | |
%lnjC = load i64** %Hp_Var | |
%lnjD = load i64* %R1_Var | |
%lnjE = load i64* %R2_Var | |
%lnjF = load i64* %R3_Var | |
%lnjG = load i64* %R4_Var | |
%lnjH = load i64* %R5_Var | |
%lnjI = load i64* %R6_Var | |
%lnjJ = load i64* %SpLim_Var | |
%lnjK = load float* %F1_Var | |
%lnjL = load float* %F2_Var | |
%lnjM = load float* %F3_Var | |
%lnjN = load float* %F4_Var | |
%lnjO = load double* %D1_Var | |
%lnjP = load double* %D2_Var | |
tail call cc 10 void (i64*,i64*,i64*,i64,i64,i64,i64,i64,i64,i64,float,float,float,float,double,double)* @stg_ap_n_fast( i64* %lnjA, i64* %lnjB, i64* %lnjC, i64 %lnjD, i64 %lnjE, i64 %lnjF, i64 %lnjG, i64 %lnjH, i64 %lnjI, i64 %lnjJ, float %lnjK, float %lnjL, float %lnjM, float %lnjN, double %lnjO, double %lnjP ) nounwind | |
ret void | |
} | |
@stg_CAF_BLACKHOLE_info = external global [0 x i64] | |
declare ccc i64 @newCAF(i8*, i8*, i8*) align 8 | |
@stg_bh_upd_frame_info = external global [0 x i64] | |
declare cc 10 void @stg_ap_n_fast(i64* noalias nocapture, i64* noalias nocapture, i64* noalias nocapture, i64, i64, i64, i64, i64, i64, i64, float, float, float, float, double, double) align 8 | |
%Main_main_info_struct = type <{i64, i64, i64}> | |
@Main_main_info_itable = constant %Main_main_info_struct<{i64 add (i64 sub (i64 ptrtoint (%Main_main_srt_struct* @Main_main_srt to i64),i64 ptrtoint (void (i64*, i64*, i64*, i64, i64, i64, i64, i64, i64, i64, float, float, float, float, double, double)* @Main_main_info to i64)),i64 0), i64 0, i64 30064771094}>, section "X98A__STRIP,__me3", align 8 | |
define cc 10 void @Main_main_info(i64* noalias nocapture %Base_Arg, i64* noalias nocapture %Sp_Arg, i64* noalias nocapture %Hp_Arg, i64 %R1_Arg, i64 %R2_Arg, i64 %R3_Arg, i64 %R4_Arg, i64 %R5_Arg, i64 %R6_Arg, i64 %SpLim_Arg, float %F1_Arg, float %F2_Arg, float %F3_Arg, float %F4_Arg, double %D1_Arg, double %D2_Arg) align 8 nounwind section "X98A__STRIP,__me4" | |
{ | |
clP: | |
%Base_Var = alloca i64*, i32 1 | |
store i64* %Base_Arg, i64** %Base_Var | |
%Sp_Var = alloca i64*, i32 1 | |
store i64* %Sp_Arg, i64** %Sp_Var | |
%Hp_Var = alloca i64*, i32 1 | |
store i64* %Hp_Arg, i64** %Hp_Var | |
%R1_Var = alloca i64, i32 1 | |
store i64 %R1_Arg, i64* %R1_Var | |
%R2_Var = alloca i64, i32 1 | |
store i64 %R2_Arg, i64* %R2_Var | |
%R3_Var = alloca i64, i32 1 | |
store i64 %R3_Arg, i64* %R3_Var | |
%R4_Var = alloca i64, i32 1 | |
store i64 %R4_Arg, i64* %R4_Var | |
%R5_Var = alloca i64, i32 1 | |
store i64 %R5_Arg, i64* %R5_Var | |
%R6_Var = alloca i64, i32 1 | |
store i64 %R6_Arg, i64* %R6_Var | |
%SpLim_Var = alloca i64, i32 1 | |
store i64 %SpLim_Arg, i64* %SpLim_Var | |
%F1_Var = alloca float, i32 1 | |
store float %F1_Arg, float* %F1_Var | |
%F2_Var = alloca float, i32 1 | |
store float %F2_Arg, float* %F2_Var | |
%F3_Var = alloca float, i32 1 | |
store float %F3_Arg, float* %F3_Var | |
%F4_Var = alloca float, i32 1 | |
store float %F4_Arg, float* %F4_Var | |
%D1_Var = alloca double, i32 1 | |
store double %D1_Arg, double* %D1_Var | |
%D2_Var = alloca double, i32 1 | |
store double %D2_Arg, double* %D2_Var | |
%lcku = alloca i64, i32 1 | |
%lnlQ = load i64** %Sp_Var | |
%lnlR = getelementptr inbounds i64* %lnlQ, i32 -2 | |
%lnlS = ptrtoint i64* %lnlR to i64 | |
%lnlT = load i64* %SpLim_Var | |
%lnlU = icmp ult i64 %lnlS, %lnlT | |
br i1 %lnlU, label %clW, label %nlX | |
nlX: | |
%lnlY = load i64** %Hp_Var | |
%lnlZ = getelementptr inbounds i64* %lnlY, i32 2 | |
%lnm0 = ptrtoint i64* %lnlZ to i64 | |
%lnm1 = inttoptr i64 %lnm0 to i64* | |
store i64* %lnm1, i64** %Hp_Var | |
%lnm2 = load i64** %Hp_Var | |
%lnm3 = ptrtoint i64* %lnm2 to i64 | |
%lnm4 = load i64** %Base_Var | |
%lnm5 = getelementptr inbounds i64* %lnm4, i32 18 | |
%lnm6 = bitcast i64* %lnm5 to i64* | |
%lnm7 = load i64* %lnm6 | |
%lnm8 = icmp ugt i64 %lnm3, %lnm7 | |
br i1 %lnm8, label %cma, label %nmb | |
nmb: | |
%lnmc = ptrtoint [0 x i64]* @stg_CAF_BLACKHOLE_info to i64 | |
%lnmd = load i64** %Hp_Var | |
%lnme = getelementptr inbounds i64* %lnmd, i32 -1 | |
store i64 %lnmc, i64* %lnme | |
%lnmf = load i64** %Base_Var | |
%lnmg = getelementptr inbounds i64* %lnmf, i32 20 | |
%lnmh = bitcast i64* %lnmg to i64* | |
%lnmi = load i64* %lnmh | |
%lnmj = load i64** %Hp_Var | |
%lnmk = getelementptr inbounds i64* %lnmj, i32 0 | |
store i64 %lnmi, i64* %lnmk | |
%lnml = load i64** %Base_Var | |
%lnmm = ptrtoint i64* %lnml to i64 | |
%lnmn = inttoptr i64 %lnmm to i8* | |
%lnmo = load i64* %R1_Var | |
%lnmp = inttoptr i64 %lnmo to i8* | |
%lnmq = load i64** %Hp_Var | |
%lnmr = getelementptr inbounds i64* %lnmq, i32 -1 | |
%lnms = ptrtoint i64* %lnmr to i64 | |
%lnmt = inttoptr i64 %lnms to i8* | |
store i64 undef, i64* %R3_Var | |
store i64 undef, i64* %R4_Var | |
store i64 undef, i64* %R5_Var | |
store i64 undef, i64* %R6_Var | |
store float undef, float* %F1_Var | |
store float undef, float* %F2_Var | |
store float undef, float* %F3_Var | |
store float undef, float* %F4_Var | |
store double undef, double* %D1_Var | |
store double undef, double* %D2_Var | |
%lnmu = call ccc i64 (i8*,i8*,i8*)* @newCAF( i8* %lnmn, i8* %lnmp, i8* %lnmt ) nounwind | |
store i64 %lnmu, i64* %lcku | |
%lnmv = load i64* %lcku | |
%lnmw = icmp eq i64 %lnmv, 0 | |
br i1 %lnmw, label %cmx, label %nmy | |
nmy: | |
br label %cmz | |
clW: | |
%lnmA = load i64** %Base_Var | |
%lnmB = getelementptr inbounds i64* %lnmA, i32 -2 | |
%lnmC = bitcast i64* %lnmB to i64* | |
%lnmD = load i64* %lnmC | |
%lnmE = inttoptr i64 %lnmD to void (i64*, i64*, i64*, i64, i64, i64, i64, i64, i64, i64, float, float, float, float, double, double)* | |
%lnmF = load i64** %Base_Var | |
%lnmG = load i64** %Sp_Var | |
%lnmH = load i64** %Hp_Var | |
%lnmI = load i64* %R1_Var | |
%lnmJ = load i64* %R2_Var | |
%lnmK = load i64* %R3_Var | |
%lnmL = load i64* %R4_Var | |
%lnmM = load i64* %R5_Var | |
%lnmN = load i64* %R6_Var | |
%lnmO = load i64* %SpLim_Var | |
%lnmP = load float* %F1_Var | |
%lnmQ = load float* %F2_Var | |
%lnmR = load float* %F3_Var | |
%lnmS = load float* %F4_Var | |
%lnmT = load double* %D1_Var | |
%lnmU = load double* %D2_Var | |
tail call cc 10 void (i64*,i64*,i64*,i64,i64,i64,i64,i64,i64,i64,float,float,float,float,double,double)* %lnmE( i64* %lnmF, i64* %lnmG, i64* %lnmH, i64 %lnmI, i64 %lnmJ, i64 %lnmK, i64 %lnmL, i64 %lnmM, i64 %lnmN, i64 %lnmO, float %lnmP, float %lnmQ, float %lnmR, float %lnmS, double %lnmT, double %lnmU ) nounwind | |
ret void | |
cma: | |
%lnmV = load i64** %Base_Var | |
%lnmW = getelementptr inbounds i64* %lnmV, i32 24 | |
store i64 16, i64* %lnmW | |
br label %clW | |
cmx: | |
%lnmX = load i64* %R1_Var | |
%lnmY = inttoptr i64 %lnmX to i64* | |
%lnmZ = load i64* %lnmY | |
%lnn0 = inttoptr i64 %lnmZ to void (i64*, i64*, i64*, i64, i64, i64, i64, i64, i64, i64, float, float, float, float, double, double)* | |
%lnn1 = load i64** %Base_Var | |
%lnn2 = load i64** %Sp_Var | |
%lnn3 = load i64** %Hp_Var | |
%lnn4 = load i64* %R1_Var | |
%lnn5 = load i64* %R2_Var | |
%lnn6 = load i64* %R3_Var | |
%lnn7 = load i64* %R4_Var | |
%lnn8 = load i64* %R5_Var | |
%lnn9 = load i64* %R6_Var | |
%lnna = load i64* %SpLim_Var | |
%lnnb = load float* %F1_Var | |
%lnnc = load float* %F2_Var | |
%lnnd = load float* %F3_Var | |
%lnne = load float* %F4_Var | |
%lnnf = load double* %D1_Var | |
%lnng = load double* %D2_Var | |
tail call cc 10 void (i64*,i64*,i64*,i64,i64,i64,i64,i64,i64,i64,float,float,float,float,double,double)* %lnn0( i64* %lnn1, i64* %lnn2, i64* %lnn3, i64 %lnn4, i64 %lnn5, i64 %lnn6, i64 %lnn7, i64 %lnn8, i64 %lnn9, i64 %lnna, float %lnnb, float %lnnc, float %lnnd, float %lnne, double %lnnf, double %lnng ) nounwind | |
ret void | |
cmz: | |
%lnnh = ptrtoint [0 x i64]* @stg_bh_upd_frame_info to i64 | |
%lnni = load i64** %Sp_Var | |
%lnnj = getelementptr inbounds i64* %lnni, i32 -2 | |
store i64 %lnnh, i64* %lnnj | |
%lnnk = load i64** %Hp_Var | |
%lnnl = getelementptr inbounds i64* %lnnk, i32 -1 | |
%lnnm = ptrtoint i64* %lnnl to i64 | |
%lnnn = load i64** %Sp_Var | |
%lnno = getelementptr inbounds i64* %lnnn, i32 -1 | |
store i64 %lnnm, i64* %lnno | |
%lnnp = ptrtoint [0 x i64]* @base_GHCziBase_zd_closure to i64 | |
store i64 %lnnp, i64* %R1_Var | |
%lnnq = ptrtoint [0 x i64]* @base_SystemziIO_putStrLn_closure to i64 | |
store i64 %lnnq, i64* %R2_Var | |
%lnnr = ptrtoint %sfT_closure_struct* @sfT_closure to i64 | |
store i64 %lnnr, i64* %R3_Var | |
%lnns = load i64** %Sp_Var | |
%lnnt = getelementptr inbounds i64* %lnns, i32 -2 | |
%lnnu = ptrtoint i64* %lnnt to i64 | |
%lnnv = inttoptr i64 %lnnu to i64* | |
store i64* %lnnv, i64** %Sp_Var | |
%lnnw = load i64** %Base_Var | |
%lnnx = load i64** %Sp_Var | |
%lnny = load i64** %Hp_Var | |
%lnnz = load i64* %R1_Var | |
%lnnA = load i64* %R2_Var | |
%lnnB = load i64* %R3_Var | |
%lnnC = load i64* %R4_Var | |
%lnnD = load i64* %R5_Var | |
%lnnE = load i64* %R6_Var | |
%lnnF = load i64* %SpLim_Var | |
%lnnG = load float* %F1_Var | |
%lnnH = load float* %F2_Var | |
%lnnI = load float* %F3_Var | |
%lnnJ = load float* %F4_Var | |
%lnnK = load double* %D1_Var | |
%lnnL = load double* %D2_Var | |
tail call cc 10 void (i64*,i64*,i64*,i64,i64,i64,i64,i64,i64,i64,float,float,float,float,double,double)* @stg_ap_pp_fast( i64* %lnnw, i64* %lnnx, i64* %lnny, i64 %lnnz, i64 %lnnA, i64 %lnnB, i64 %lnnC, i64 %lnnD, i64 %lnnE, i64 %lnnF, float %lnnG, float %lnnH, float %lnnI, float %lnnJ, double %lnnK, double %lnnL ) nounwind | |
ret void | |
} | |
declare cc 10 void @stg_ap_pp_fast(i64* noalias nocapture, i64* noalias nocapture, i64* noalias nocapture, i64, i64, i64, i64, i64, i64, i64, float, float, float, float, double, double) align 8 | |
%ZCMain_main_info_struct = type <{i64, i64, i64}> | |
@ZCMain_main_info_itable = constant %ZCMain_main_info_struct<{i64 add (i64 sub (i64 ptrtoint (%ZCMain_main_srt_struct* @ZCMain_main_srt to i64),i64 ptrtoint (void (i64*, i64*, i64*, i64, i64, i64, i64, i64, i64, i64, float, float, float, float, double, double)* @ZCMain_main_info to i64)),i64 0), i64 0, i64 12884901910}>, section "X98A__STRIP,__me5", align 8 | |
define cc 10 void @ZCMain_main_info(i64* noalias nocapture %Base_Arg, i64* noalias nocapture %Sp_Arg, i64* noalias nocapture %Hp_Arg, i64 %R1_Arg, i64 %R2_Arg, i64 %R3_Arg, i64 %R4_Arg, i64 %R5_Arg, i64 %R6_Arg, i64 %SpLim_Arg, float %F1_Arg, float %F2_Arg, float %F3_Arg, float %F4_Arg, double %D1_Arg, double %D2_Arg) align 8 nounwind section "X98A__STRIP,__me6" | |
{ | |
cpK: | |
%Base_Var = alloca i64*, i32 1 | |
store i64* %Base_Arg, i64** %Base_Var | |
%Sp_Var = alloca i64*, i32 1 | |
store i64* %Sp_Arg, i64** %Sp_Var | |
%Hp_Var = alloca i64*, i32 1 | |
store i64* %Hp_Arg, i64** %Hp_Var | |
%R1_Var = alloca i64, i32 1 | |
store i64 %R1_Arg, i64* %R1_Var | |
%R2_Var = alloca i64, i32 1 | |
store i64 %R2_Arg, i64* %R2_Var | |
%R3_Var = alloca i64, i32 1 | |
store i64 %R3_Arg, i64* %R3_Var | |
%R4_Var = alloca i64, i32 1 | |
store i64 %R4_Arg, i64* %R4_Var | |
%R5_Var = alloca i64, i32 1 | |
store i64 %R5_Arg, i64* %R5_Var | |
%R6_Var = alloca i64, i32 1 | |
store i64 %R6_Arg, i64* %R6_Var | |
%SpLim_Var = alloca i64, i32 1 | |
store i64 %SpLim_Arg, i64* %SpLim_Var | |
%F1_Var = alloca float, i32 1 | |
store float %F1_Arg, float* %F1_Var | |
%F2_Var = alloca float, i32 1 | |
store float %F2_Arg, float* %F2_Var | |
%F3_Var = alloca float, i32 1 | |
store float %F3_Arg, float* %F3_Var | |
%F4_Var = alloca float, i32 1 | |
store float %F4_Arg, float* %F4_Var | |
%D1_Var = alloca double, i32 1 | |
store double %D1_Arg, double* %D1_Var | |
%D2_Var = alloca double, i32 1 | |
store double %D2_Arg, double* %D2_Var | |
%lcoq = alloca i64, i32 1 | |
%lnpL = load i64** %Sp_Var | |
%lnpM = getelementptr inbounds i64* %lnpL, i32 -2 | |
%lnpN = ptrtoint i64* %lnpM to i64 | |
%lnpO = load i64* %SpLim_Var | |
%lnpP = icmp ult i64 %lnpN, %lnpO | |
br i1 %lnpP, label %cpR, label %npS | |
npS: | |
%lnpT = load i64** %Hp_Var | |
%lnpU = getelementptr inbounds i64* %lnpT, i32 2 | |
%lnpV = ptrtoint i64* %lnpU to i64 | |
%lnpW = inttoptr i64 %lnpV to i64* | |
store i64* %lnpW, i64** %Hp_Var | |
%lnpX = load i64** %Hp_Var | |
%lnpY = ptrtoint i64* %lnpX to i64 | |
%lnpZ = load i64** %Base_Var | |
%lnq0 = getelementptr inbounds i64* %lnpZ, i32 18 | |
%lnq1 = bitcast i64* %lnq0 to i64* | |
%lnq2 = load i64* %lnq1 | |
%lnq3 = icmp ugt i64 %lnpY, %lnq2 | |
br i1 %lnq3, label %cq5, label %nq6 | |
nq6: | |
%lnq7 = ptrtoint [0 x i64]* @stg_CAF_BLACKHOLE_info to i64 | |
%lnq8 = load i64** %Hp_Var | |
%lnq9 = getelementptr inbounds i64* %lnq8, i32 -1 | |
store i64 %lnq7, i64* %lnq9 | |
%lnqa = load i64** %Base_Var | |
%lnqb = getelementptr inbounds i64* %lnqa, i32 20 | |
%lnqc = bitcast i64* %lnqb to i64* | |
%lnqd = load i64* %lnqc | |
%lnqe = load i64** %Hp_Var | |
%lnqf = getelementptr inbounds i64* %lnqe, i32 0 | |
store i64 %lnqd, i64* %lnqf | |
%lnqg = load i64** %Base_Var | |
%lnqh = ptrtoint i64* %lnqg to i64 | |
%lnqi = inttoptr i64 %lnqh to i8* | |
%lnqj = load i64* %R1_Var | |
%lnqk = inttoptr i64 %lnqj to i8* | |
%lnql = load i64** %Hp_Var | |
%lnqm = getelementptr inbounds i64* %lnql, i32 -1 | |
%lnqn = ptrtoint i64* %lnqm to i64 | |
%lnqo = inttoptr i64 %lnqn to i8* | |
store i64 undef, i64* %R3_Var | |
store i64 undef, i64* %R4_Var | |
store i64 undef, i64* %R5_Var | |
store i64 undef, i64* %R6_Var | |
store float undef, float* %F1_Var | |
store float undef, float* %F2_Var | |
store float undef, float* %F3_Var | |
store float undef, float* %F4_Var | |
store double undef, double* %D1_Var | |
store double undef, double* %D2_Var | |
%lnqp = call ccc i64 (i8*,i8*,i8*)* @newCAF( i8* %lnqi, i8* %lnqk, i8* %lnqo ) nounwind | |
store i64 %lnqp, i64* %lcoq | |
%lnqq = load i64* %lcoq | |
%lnqr = icmp eq i64 %lnqq, 0 | |
br i1 %lnqr, label %cqs, label %nqt | |
nqt: | |
br label %cqu | |
cpR: | |
%lnqv = load i64** %Base_Var | |
%lnqw = getelementptr inbounds i64* %lnqv, i32 -2 | |
%lnqx = bitcast i64* %lnqw to i64* | |
%lnqy = load i64* %lnqx | |
%lnqz = inttoptr i64 %lnqy to void (i64*, i64*, i64*, i64, i64, i64, i64, i64, i64, i64, float, float, float, float, double, double)* | |
%lnqA = load i64** %Base_Var | |
%lnqB = load i64** %Sp_Var | |
%lnqC = load i64** %Hp_Var | |
%lnqD = load i64* %R1_Var | |
%lnqE = load i64* %R2_Var | |
%lnqF = load i64* %R3_Var | |
%lnqG = load i64* %R4_Var | |
%lnqH = load i64* %R5_Var | |
%lnqI = load i64* %R6_Var | |
%lnqJ = load i64* %SpLim_Var | |
%lnqK = load float* %F1_Var | |
%lnqL = load float* %F2_Var | |
%lnqM = load float* %F3_Var | |
%lnqN = load float* %F4_Var | |
%lnqO = load double* %D1_Var | |
%lnqP = load double* %D2_Var | |
tail call cc 10 void (i64*,i64*,i64*,i64,i64,i64,i64,i64,i64,i64,float,float,float,float,double,double)* %lnqz( i64* %lnqA, i64* %lnqB, i64* %lnqC, i64 %lnqD, i64 %lnqE, i64 %lnqF, i64 %lnqG, i64 %lnqH, i64 %lnqI, i64 %lnqJ, float %lnqK, float %lnqL, float %lnqM, float %lnqN, double %lnqO, double %lnqP ) nounwind | |
ret void | |
cq5: | |
%lnqQ = load i64** %Base_Var | |
%lnqR = getelementptr inbounds i64* %lnqQ, i32 24 | |
store i64 16, i64* %lnqR | |
br label %cpR | |
cqs: | |
%lnqS = load i64* %R1_Var | |
%lnqT = inttoptr i64 %lnqS to i64* | |
%lnqU = load i64* %lnqT | |
%lnqV = inttoptr i64 %lnqU to void (i64*, i64*, i64*, i64, i64, i64, i64, i64, i64, i64, float, float, float, float, double, double)* | |
%lnqW = load i64** %Base_Var | |
%lnqX = load i64** %Sp_Var | |
%lnqY = load i64** %Hp_Var | |
%lnqZ = load i64* %R1_Var | |
%lnr0 = load i64* %R2_Var | |
%lnr1 = load i64* %R3_Var | |
%lnr2 = load i64* %R4_Var | |
%lnr3 = load i64* %R5_Var | |
%lnr4 = load i64* %R6_Var | |
%lnr5 = load i64* %SpLim_Var | |
%lnr6 = load float* %F1_Var | |
%lnr7 = load float* %F2_Var | |
%lnr8 = load float* %F3_Var | |
%lnr9 = load float* %F4_Var | |
%lnra = load double* %D1_Var | |
%lnrb = load double* %D2_Var | |
tail call cc 10 void (i64*,i64*,i64*,i64,i64,i64,i64,i64,i64,i64,float,float,float,float,double,double)* %lnqV( i64* %lnqW, i64* %lnqX, i64* %lnqY, i64 %lnqZ, i64 %lnr0, i64 %lnr1, i64 %lnr2, i64 %lnr3, i64 %lnr4, i64 %lnr5, float %lnr6, float %lnr7, float %lnr8, float %lnr9, double %lnra, double %lnrb ) nounwind | |
ret void | |
cqu: | |
%lnrc = ptrtoint [0 x i64]* @stg_bh_upd_frame_info to i64 | |
%lnrd = load i64** %Sp_Var | |
%lnre = getelementptr inbounds i64* %lnrd, i32 -2 | |
store i64 %lnrc, i64* %lnre | |
%lnrf = load i64** %Hp_Var | |
%lnrg = getelementptr inbounds i64* %lnrf, i32 -1 | |
%lnrh = ptrtoint i64* %lnrg to i64 | |
%lnri = load i64** %Sp_Var | |
%lnrj = getelementptr inbounds i64* %lnri, i32 -1 | |
store i64 %lnrh, i64* %lnrj | |
%lnrk = ptrtoint [0 x i64]* @base_GHCziTopHandler_runMainIO_closure to i64 | |
store i64 %lnrk, i64* %R1_Var | |
%lnrl = ptrtoint %Main_main_closure_struct* @Main_main_closure to i64 | |
store i64 %lnrl, i64* %R2_Var | |
%lnrm = load i64** %Sp_Var | |
%lnrn = getelementptr inbounds i64* %lnrm, i32 -2 | |
%lnro = ptrtoint i64* %lnrn to i64 | |
%lnrp = inttoptr i64 %lnro to i64* | |
store i64* %lnrp, i64** %Sp_Var | |
%lnrq = load i64** %Base_Var | |
%lnrr = load i64** %Sp_Var | |
%lnrs = load i64** %Hp_Var | |
%lnrt = load i64* %R1_Var | |
%lnru = load i64* %R2_Var | |
%lnrv = load i64* %R3_Var | |
%lnrw = load i64* %R4_Var | |
%lnrx = load i64* %R5_Var | |
%lnry = load i64* %R6_Var | |
%lnrz = load i64* %SpLim_Var | |
%lnrA = load float* %F1_Var | |
%lnrB = load float* %F2_Var | |
%lnrC = load float* %F3_Var | |
%lnrD = load float* %F4_Var | |
%lnrE = load double* %D1_Var | |
%lnrF = load double* %D2_Var | |
tail call cc 10 void (i64*,i64*,i64*,i64,i64,i64,i64,i64,i64,i64,float,float,float,float,double,double)* @stg_ap_p_fast( i64* %lnrq, i64* %lnrr, i64* %lnrs, i64 %lnrt, i64 %lnru, i64 %lnrv, i64 %lnrw, i64 %lnrx, i64 %lnry, i64 %lnrz, float %lnrA, float %lnrB, float %lnrC, float %lnrD, double %lnrE, double %lnrF ) nounwind | |
ret void | |
} | |
declare cc 10 void @stg_ap_p_fast(i64* noalias nocapture, i64* noalias nocapture, i64* noalias nocapture, i64, i64, i64, i64, i64, i64, i64, float, float, float, float, double, double) align 8 | |
@llvm.used = appending global [1 x i8*] [i8* bitcast (%sfT_info_struct* @sfT_info_itable to i8*)], section "llvm.metadata" |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment