Created
March 5, 2014 12:11
-
-
Save zefciu/9366017 to your computer and use it in GitHub Desktop.
This file contains 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-linux-gnu" | |
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*) | |
!0 = metadata !{metadata !"top"} | |
!1 = metadata !{metadata !"stack",metadata !0} | |
!2 = metadata !{metadata !"heap",metadata !0} | |
!3 = metadata !{metadata !"rx",metadata !2} | |
!4 = metadata !{metadata !"base",metadata !0} | |
!5 = metadata !{metadata !"other",metadata !0} | |
%__stginit_Main_struct = type <{}> | |
@__stginit_Main = global %__stginit_Main_struct<{}> | |
%siv_srt_struct = type <{i64}> | |
@siv_srt = internal constant %siv_srt_struct<{i64 ptrtoint ([0 x i64]* @ghczmprim_GHCziCString_unpackCStringzh_closure to i64)}> | |
@ghczmprim_GHCziCString_unpackCStringzh_closure = external global [0 x i64] | |
%siv_closure_struct = type <{i64, i64, i64, i64}> | |
@siv_closure = internal global %siv_closure_struct<{i64 ptrtoint (void (i64*, i64*, i64*, i64, i64, i64, i64, i64, i64, i64, float, float, float, float, double, double)* @siv_info to i64), i64 0, i64 0, i64 0}> | |
%ciH_str_struct = type <{[13 x i8]}> | |
@ciH_str = internal constant %ciH_str_struct<{[13 x i8] [i8 72, i8 101, i8 108, i8 108, i8 111, i8 32, i8 119, i8 111, i8 114, i8 108, i8 100, i8 33, i8 0]}> | |
%Main_main_srt_struct = type <{i64, i64}> | |
@Main_main_srt = internal constant %Main_main_srt_struct<{i64 ptrtoint ([0 x i64]* @base_SystemziIO_putStrLn_closure to i64), i64 ptrtoint (%siv_closure_struct* @siv_closure to 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}> | |
%siv_info_struct = type <{i64, i64, i64}> | |
@siv_info_itable = internal constant %siv_info_struct<{i64 add (i64 sub (i64 ptrtoint (%siv_srt_struct* @siv_srt to i64),i64 ptrtoint (void (i64*, i64*, i64*, i64, i64, i64, i64, i64, i64, i64, float, float, float, float, double, double)* @siv_info to i64)),i64 0), i64 0, i64 4294967318}>, section "X98A__STRIP,__me1", align 8 | |
define internal cc 10 void @siv_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" | |
{ | |
ck4: | |
%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 | |
%lcji = alloca i64, i32 1 | |
%lnk5 = load i64** %Sp_Var | |
%lnk6 = getelementptr inbounds i64* %lnk5, i32 -2 | |
%lnk7 = ptrtoint i64* %lnk6 to i64 | |
%lnk8 = load i64* %SpLim_Var | |
%lnk9 = icmp ult i64 %lnk7, %lnk8 | |
br i1 %lnk9, label %ckb, label %nkc | |
nkc: | |
%lnkd = load i64** %Hp_Var | |
%lnke = getelementptr inbounds i64* %lnkd, i32 2 | |
%lnkf = ptrtoint i64* %lnke to i64 | |
%lnkg = inttoptr i64 %lnkf to i64* | |
store i64* %lnkg, i64** %Hp_Var | |
%lnkh = load i64** %Hp_Var | |
%lnki = ptrtoint i64* %lnkh to i64 | |
%lnkj = load i64** %Base_Var | |
%lnkk = getelementptr inbounds i64* %lnkj, i32 18 | |
%lnkl = bitcast i64* %lnkk to i64* | |
%lnkm = load i64* %lnkl, !tbaa !4 | |
%lnkn = icmp ugt i64 %lnki, %lnkm | |
br i1 %lnkn, label %ckp, label %nkq | |
nkq: | |
%lnkr = ptrtoint [0 x i64]* @stg_CAF_BLACKHOLE_info to i64 | |
%lnks = load i64** %Hp_Var | |
%lnkt = getelementptr inbounds i64* %lnks, i32 -1 | |
store i64 %lnkr, i64* %lnkt, !tbaa !2 | |
%lnku = load i64** %Base_Var | |
%lnkv = getelementptr inbounds i64* %lnku, i32 20 | |
%lnkw = bitcast i64* %lnkv to i64* | |
%lnkx = load i64* %lnkw, !tbaa !4 | |
%lnky = load i64** %Hp_Var | |
%lnkz = getelementptr inbounds i64* %lnky, i32 0 | |
store i64 %lnkx, i64* %lnkz, !tbaa !2 | |
%lnkA = load i64** %Base_Var | |
%lnkB = ptrtoint i64* %lnkA to i64 | |
%lnkC = inttoptr i64 %lnkB to i8* | |
%lnkD = load i64* %R1_Var | |
%lnkE = inttoptr i64 %lnkD to i8* | |
%lnkF = load i64** %Hp_Var | |
%lnkG = getelementptr inbounds i64* %lnkF, i32 -1 | |
%lnkH = ptrtoint i64* %lnkG to i64 | |
%lnkI = inttoptr i64 %lnkH 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 | |
%lnkJ = call ccc i64 (i8*,i8*,i8*)* @newCAF( i8* %lnkC, i8* %lnkE, i8* %lnkI ) nounwind | |
store i64 %lnkJ, i64* %lcji | |
%lnkK = load i64* %lcji | |
%lnkL = icmp eq i64 %lnkK, 0 | |
br i1 %lnkL, label %ckM, label %nkN | |
nkN: | |
br label %ckO | |
ckb: | |
%lnkP = load i64** %Base_Var | |
%lnkQ = getelementptr inbounds i64* %lnkP, i32 -2 | |
%lnkR = bitcast i64* %lnkQ to i64* | |
%lnkS = load i64* %lnkR, !tbaa !4 | |
%lnkT = inttoptr i64 %lnkS to void (i64*, i64*, i64*, i64, i64, i64, i64, i64, i64, i64, float, float, float, float, double, double)* | |
%lnkU = load i64** %Base_Var | |
%lnkV = load i64** %Sp_Var | |
%lnkW = load i64** %Hp_Var | |
%lnkX = load i64* %R1_Var | |
%lnkY = load i64* %SpLim_Var | |
tail call cc 10 void (i64*,i64*,i64*,i64,i64,i64,i64,i64,i64,i64,float,float,float,float,double,double)* %lnkT( i64* %lnkU, i64* %lnkV, i64* %lnkW, i64 %lnkX, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 %lnkY, float undef, float undef, float undef, float undef, double undef, double undef ) nounwind | |
ret void | |
ckp: | |
%lnkZ = load i64** %Base_Var | |
%lnl0 = getelementptr inbounds i64* %lnkZ, i32 24 | |
store i64 16, i64* %lnl0, !tbaa !4 | |
br label %ckb | |
ckM: | |
%lnl1 = load i64* %R1_Var | |
%lnl2 = inttoptr i64 %lnl1 to i64* | |
%lnl3 = load i64* %lnl2, !tbaa !3 | |
%lnl4 = inttoptr i64 %lnl3 to void (i64*, i64*, i64*, i64, i64, i64, i64, i64, i64, i64, float, float, float, float, double, double)* | |
%lnl5 = load i64** %Base_Var | |
%lnl6 = load i64** %Sp_Var | |
%lnl7 = load i64** %Hp_Var | |
%lnl8 = load i64* %R1_Var | |
%lnl9 = load i64* %SpLim_Var | |
tail call cc 10 void (i64*,i64*,i64*,i64,i64,i64,i64,i64,i64,i64,float,float,float,float,double,double)* %lnl4( i64* %lnl5, i64* %lnl6, i64* %lnl7, i64 %lnl8, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 %lnl9, float undef, float undef, float undef, float undef, double undef, double undef ) nounwind | |
ret void | |
ckO: | |
%lnla = ptrtoint [0 x i64]* @stg_bh_upd_frame_info to i64 | |
%lnlb = load i64** %Sp_Var | |
%lnlc = getelementptr inbounds i64* %lnlb, i32 -2 | |
store i64 %lnla, i64* %lnlc, !tbaa !1 | |
%lnld = load i64** %Hp_Var | |
%lnle = getelementptr inbounds i64* %lnld, i32 -1 | |
%lnlf = ptrtoint i64* %lnle to i64 | |
%lnlg = load i64** %Sp_Var | |
%lnlh = getelementptr inbounds i64* %lnlg, i32 -1 | |
store i64 %lnlf, i64* %lnlh, !tbaa !1 | |
%lnli = ptrtoint [0 x i64]* @ghczmprim_GHCziCString_unpackCStringzh_closure to i64 | |
store i64 %lnli, i64* %R1_Var | |
%lnlj = ptrtoint %ciH_str_struct* @ciH_str to i64 | |
store i64 %lnlj, i64* %R2_Var | |
%lnlk = load i64** %Sp_Var | |
%lnll = getelementptr inbounds i64* %lnlk, i32 -2 | |
%lnlm = ptrtoint i64* %lnll to i64 | |
%lnln = inttoptr i64 %lnlm to i64* | |
store i64* %lnln, i64** %Sp_Var | |
%lnlo = load i64** %Base_Var | |
%lnlp = load i64** %Sp_Var | |
%lnlq = load i64** %Hp_Var | |
%lnlr = load i64* %R1_Var | |
%lnls = load i64* %R2_Var | |
%lnlt = load i64* %SpLim_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* %lnlo, i64* %lnlp, i64* %lnlq, i64 %lnlr, i64 %lnls, i64 undef, i64 undef, i64 undef, i64 undef, i64 %lnlt, float undef, float undef, float undef, float undef, double undef, double undef ) 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 12884901910}>, 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" | |
{ | |
cmW: | |
%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 | |
%lcm8 = alloca i64, i32 1 | |
%lnmX = load i64** %Sp_Var | |
%lnmY = getelementptr inbounds i64* %lnmX, i32 -2 | |
%lnmZ = ptrtoint i64* %lnmY to i64 | |
%lnn0 = load i64* %SpLim_Var | |
%lnn1 = icmp ult i64 %lnmZ, %lnn0 | |
br i1 %lnn1, label %cn3, label %nn4 | |
nn4: | |
%lnn5 = load i64** %Hp_Var | |
%lnn6 = getelementptr inbounds i64* %lnn5, i32 2 | |
%lnn7 = ptrtoint i64* %lnn6 to i64 | |
%lnn8 = inttoptr i64 %lnn7 to i64* | |
store i64* %lnn8, i64** %Hp_Var | |
%lnn9 = load i64** %Hp_Var | |
%lnna = ptrtoint i64* %lnn9 to i64 | |
%lnnb = load i64** %Base_Var | |
%lnnc = getelementptr inbounds i64* %lnnb, i32 18 | |
%lnnd = bitcast i64* %lnnc to i64* | |
%lnne = load i64* %lnnd, !tbaa !4 | |
%lnnf = icmp ugt i64 %lnna, %lnne | |
br i1 %lnnf, label %cnh, label %nni | |
nni: | |
%lnnj = ptrtoint [0 x i64]* @stg_CAF_BLACKHOLE_info to i64 | |
%lnnk = load i64** %Hp_Var | |
%lnnl = getelementptr inbounds i64* %lnnk, i32 -1 | |
store i64 %lnnj, i64* %lnnl, !tbaa !2 | |
%lnnm = load i64** %Base_Var | |
%lnnn = getelementptr inbounds i64* %lnnm, i32 20 | |
%lnno = bitcast i64* %lnnn to i64* | |
%lnnp = load i64* %lnno, !tbaa !4 | |
%lnnq = load i64** %Hp_Var | |
%lnnr = getelementptr inbounds i64* %lnnq, i32 0 | |
store i64 %lnnp, i64* %lnnr, !tbaa !2 | |
%lnns = load i64** %Base_Var | |
%lnnt = ptrtoint i64* %lnns to i64 | |
%lnnu = inttoptr i64 %lnnt to i8* | |
%lnnv = load i64* %R1_Var | |
%lnnw = inttoptr i64 %lnnv to i8* | |
%lnnx = load i64** %Hp_Var | |
%lnny = getelementptr inbounds i64* %lnnx, i32 -1 | |
%lnnz = ptrtoint i64* %lnny to i64 | |
%lnnA = inttoptr i64 %lnnz 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 | |
%lnnB = call ccc i64 (i8*,i8*,i8*)* @newCAF( i8* %lnnu, i8* %lnnw, i8* %lnnA ) nounwind | |
store i64 %lnnB, i64* %lcm8 | |
%lnnC = load i64* %lcm8 | |
%lnnD = icmp eq i64 %lnnC, 0 | |
br i1 %lnnD, label %cnE, label %nnF | |
nnF: | |
br label %cnG | |
cn3: | |
%lnnH = load i64** %Base_Var | |
%lnnI = getelementptr inbounds i64* %lnnH, i32 -2 | |
%lnnJ = bitcast i64* %lnnI to i64* | |
%lnnK = load i64* %lnnJ, !tbaa !4 | |
%lnnL = inttoptr i64 %lnnK to void (i64*, i64*, i64*, i64, i64, i64, i64, i64, i64, i64, float, float, float, float, double, double)* | |
%lnnM = load i64** %Base_Var | |
%lnnN = load i64** %Sp_Var | |
%lnnO = load i64** %Hp_Var | |
%lnnP = load i64* %R1_Var | |
%lnnQ = load i64* %SpLim_Var | |
tail call cc 10 void (i64*,i64*,i64*,i64,i64,i64,i64,i64,i64,i64,float,float,float,float,double,double)* %lnnL( i64* %lnnM, i64* %lnnN, i64* %lnnO, i64 %lnnP, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 %lnnQ, float undef, float undef, float undef, float undef, double undef, double undef ) nounwind | |
ret void | |
cnh: | |
%lnnR = load i64** %Base_Var | |
%lnnS = getelementptr inbounds i64* %lnnR, i32 24 | |
store i64 16, i64* %lnnS, !tbaa !4 | |
br label %cn3 | |
cnE: | |
%lnnT = load i64* %R1_Var | |
%lnnU = inttoptr i64 %lnnT to i64* | |
%lnnV = load i64* %lnnU, !tbaa !3 | |
%lnnW = inttoptr i64 %lnnV to void (i64*, i64*, i64*, i64, i64, i64, i64, i64, i64, i64, float, float, float, float, double, double)* | |
%lnnX = load i64** %Base_Var | |
%lnnY = load i64** %Sp_Var | |
%lnnZ = load i64** %Hp_Var | |
%lno0 = load i64* %R1_Var | |
%lno1 = load i64* %SpLim_Var | |
tail call cc 10 void (i64*,i64*,i64*,i64,i64,i64,i64,i64,i64,i64,float,float,float,float,double,double)* %lnnW( i64* %lnnX, i64* %lnnY, i64* %lnnZ, i64 %lno0, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 %lno1, float undef, float undef, float undef, float undef, double undef, double undef ) nounwind | |
ret void | |
cnG: | |
%lno2 = ptrtoint [0 x i64]* @stg_bh_upd_frame_info to i64 | |
%lno3 = load i64** %Sp_Var | |
%lno4 = getelementptr inbounds i64* %lno3, i32 -2 | |
store i64 %lno2, i64* %lno4, !tbaa !1 | |
%lno5 = load i64** %Hp_Var | |
%lno6 = getelementptr inbounds i64* %lno5, i32 -1 | |
%lno7 = ptrtoint i64* %lno6 to i64 | |
%lno8 = load i64** %Sp_Var | |
%lno9 = getelementptr inbounds i64* %lno8, i32 -1 | |
store i64 %lno7, i64* %lno9, !tbaa !1 | |
%lnoa = ptrtoint [0 x i64]* @base_SystemziIO_putStrLn_closure to i64 | |
store i64 %lnoa, i64* %R1_Var | |
%lnob = ptrtoint %siv_closure_struct* @siv_closure to i64 | |
store i64 %lnob, i64* %R2_Var | |
%lnoc = load i64** %Sp_Var | |
%lnod = getelementptr inbounds i64* %lnoc, i32 -2 | |
%lnoe = ptrtoint i64* %lnod to i64 | |
%lnof = inttoptr i64 %lnoe to i64* | |
store i64* %lnof, i64** %Sp_Var | |
%lnog = load i64** %Base_Var | |
%lnoh = load i64** %Sp_Var | |
%lnoi = load i64** %Hp_Var | |
%lnoj = load i64* %R1_Var | |
%lnok = load i64* %R2_Var | |
%lnol = load i64* %SpLim_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* %lnog, i64* %lnoh, i64* %lnoi, i64 %lnoj, i64 %lnok, i64 undef, i64 undef, i64 undef, i64 undef, i64 %lnol, float undef, float undef, float undef, float undef, double undef, double undef ) 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 | |
%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" | |
{ | |
cpO: | |
%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 | |
%lcp0 = alloca i64, i32 1 | |
%lnpP = load i64** %Sp_Var | |
%lnpQ = getelementptr inbounds i64* %lnpP, i32 -2 | |
%lnpR = ptrtoint i64* %lnpQ to i64 | |
%lnpS = load i64* %SpLim_Var | |
%lnpT = icmp ult i64 %lnpR, %lnpS | |
br i1 %lnpT, label %cpV, label %npW | |
npW: | |
%lnpX = load i64** %Hp_Var | |
%lnpY = getelementptr inbounds i64* %lnpX, i32 2 | |
%lnpZ = ptrtoint i64* %lnpY to i64 | |
%lnq0 = inttoptr i64 %lnpZ to i64* | |
store i64* %lnq0, i64** %Hp_Var | |
%lnq1 = load i64** %Hp_Var | |
%lnq2 = ptrtoint i64* %lnq1 to i64 | |
%lnq3 = load i64** %Base_Var | |
%lnq4 = getelementptr inbounds i64* %lnq3, i32 18 | |
%lnq5 = bitcast i64* %lnq4 to i64* | |
%lnq6 = load i64* %lnq5, !tbaa !4 | |
%lnq7 = icmp ugt i64 %lnq2, %lnq6 | |
br i1 %lnq7, label %cq9, label %nqa | |
nqa: | |
%lnqb = ptrtoint [0 x i64]* @stg_CAF_BLACKHOLE_info to i64 | |
%lnqc = load i64** %Hp_Var | |
%lnqd = getelementptr inbounds i64* %lnqc, i32 -1 | |
store i64 %lnqb, i64* %lnqd, !tbaa !2 | |
%lnqe = load i64** %Base_Var | |
%lnqf = getelementptr inbounds i64* %lnqe, i32 20 | |
%lnqg = bitcast i64* %lnqf to i64* | |
%lnqh = load i64* %lnqg, !tbaa !4 | |
%lnqi = load i64** %Hp_Var | |
%lnqj = getelementptr inbounds i64* %lnqi, i32 0 | |
store i64 %lnqh, i64* %lnqj, !tbaa !2 | |
%lnqk = load i64** %Base_Var | |
%lnql = ptrtoint i64* %lnqk to i64 | |
%lnqm = inttoptr i64 %lnql to i8* | |
%lnqn = load i64* %R1_Var | |
%lnqo = inttoptr i64 %lnqn to i8* | |
%lnqp = load i64** %Hp_Var | |
%lnqq = getelementptr inbounds i64* %lnqp, i32 -1 | |
%lnqr = ptrtoint i64* %lnqq to i64 | |
%lnqs = inttoptr i64 %lnqr 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 | |
%lnqt = call ccc i64 (i8*,i8*,i8*)* @newCAF( i8* %lnqm, i8* %lnqo, i8* %lnqs ) nounwind | |
store i64 %lnqt, i64* %lcp0 | |
%lnqu = load i64* %lcp0 | |
%lnqv = icmp eq i64 %lnqu, 0 | |
br i1 %lnqv, label %cqw, label %nqx | |
nqx: | |
br label %cqy | |
cpV: | |
%lnqz = load i64** %Base_Var | |
%lnqA = getelementptr inbounds i64* %lnqz, i32 -2 | |
%lnqB = bitcast i64* %lnqA to i64* | |
%lnqC = load i64* %lnqB, !tbaa !4 | |
%lnqD = inttoptr i64 %lnqC to void (i64*, i64*, i64*, i64, i64, i64, i64, i64, i64, i64, float, float, float, float, double, double)* | |
%lnqE = load i64** %Base_Var | |
%lnqF = load i64** %Sp_Var | |
%lnqG = load i64** %Hp_Var | |
%lnqH = load i64* %R1_Var | |
%lnqI = load i64* %SpLim_Var | |
tail call cc 10 void (i64*,i64*,i64*,i64,i64,i64,i64,i64,i64,i64,float,float,float,float,double,double)* %lnqD( i64* %lnqE, i64* %lnqF, i64* %lnqG, i64 %lnqH, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 %lnqI, float undef, float undef, float undef, float undef, double undef, double undef ) nounwind | |
ret void | |
cq9: | |
%lnqJ = load i64** %Base_Var | |
%lnqK = getelementptr inbounds i64* %lnqJ, i32 24 | |
store i64 16, i64* %lnqK, !tbaa !4 | |
br label %cpV | |
cqw: | |
%lnqL = load i64* %R1_Var | |
%lnqM = inttoptr i64 %lnqL to i64* | |
%lnqN = load i64* %lnqM, !tbaa !3 | |
%lnqO = inttoptr i64 %lnqN to void (i64*, i64*, i64*, i64, i64, i64, i64, i64, i64, i64, float, float, float, float, double, double)* | |
%lnqP = load i64** %Base_Var | |
%lnqQ = load i64** %Sp_Var | |
%lnqR = load i64** %Hp_Var | |
%lnqS = load i64* %R1_Var | |
%lnqT = load i64* %SpLim_Var | |
tail call cc 10 void (i64*,i64*,i64*,i64,i64,i64,i64,i64,i64,i64,float,float,float,float,double,double)* %lnqO( i64* %lnqP, i64* %lnqQ, i64* %lnqR, i64 %lnqS, i64 undef, i64 undef, i64 undef, i64 undef, i64 undef, i64 %lnqT, float undef, float undef, float undef, float undef, double undef, double undef ) nounwind | |
ret void | |
cqy: | |
%lnqU = ptrtoint [0 x i64]* @stg_bh_upd_frame_info to i64 | |
%lnqV = load i64** %Sp_Var | |
%lnqW = getelementptr inbounds i64* %lnqV, i32 -2 | |
store i64 %lnqU, i64* %lnqW, !tbaa !1 | |
%lnqX = load i64** %Hp_Var | |
%lnqY = getelementptr inbounds i64* %lnqX, i32 -1 | |
%lnqZ = ptrtoint i64* %lnqY to i64 | |
%lnr0 = load i64** %Sp_Var | |
%lnr1 = getelementptr inbounds i64* %lnr0, i32 -1 | |
store i64 %lnqZ, i64* %lnr1, !tbaa !1 | |
%lnr2 = ptrtoint [0 x i64]* @base_GHCziTopHandler_runMainIO_closure to i64 | |
store i64 %lnr2, i64* %R1_Var | |
%lnr3 = ptrtoint %Main_main_closure_struct* @Main_main_closure to i64 | |
store i64 %lnr3, i64* %R2_Var | |
%lnr4 = load i64** %Sp_Var | |
%lnr5 = getelementptr inbounds i64* %lnr4, i32 -2 | |
%lnr6 = ptrtoint i64* %lnr5 to i64 | |
%lnr7 = inttoptr i64 %lnr6 to i64* | |
store i64* %lnr7, i64** %Sp_Var | |
%lnr8 = load i64** %Base_Var | |
%lnr9 = load i64** %Sp_Var | |
%lnra = load i64** %Hp_Var | |
%lnrb = load i64* %R1_Var | |
%lnrc = load i64* %R2_Var | |
%lnrd = load i64* %SpLim_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* %lnr8, i64* %lnr9, i64* %lnra, i64 %lnrb, i64 %lnrc, i64 undef, i64 undef, i64 undef, i64 undef, i64 %lnrd, float undef, float undef, float undef, float undef, double undef, double undef ) nounwind | |
ret void | |
} | |
@llvm.used = appending global [1 x i8*] [i8* bitcast (%siv_info_struct* @siv_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