Skip to content

Instantly share code, notes, and snippets.

@gatlin
Created July 6, 2012 01:48
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 gatlin/3057536 to your computer and use it in GitHub Desktop.
Save gatlin/3057536 to your computer and use it in GitHub Desktop.
LLVM output of a simple Haskell program
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