; ModuleID = 'cholesky.ibc.opt.1'
source_filename = "llvm-link"
target datalayout = "e-m:o-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-apple-macosx10.14.0"
%struct.__sFILE = type { i8*, i32, i32, i16, i16, %struct.__sbuf, i32, i8*, i32 (i8*)*, i32 (i8*, i8*, i32)*, i64 (i8*, i64, i32)*, i32 (i8*, i8*, i32)*, %struct.__sbuf, %struct.__sFILEX*, i32, [3 x
i8], [1 x
i8], %struct.__sbuf, i32, i64 }
%struct.__sFILEX = type opaque
%struct.__sbuf = type { i8*, i32 }
@.str = private unnamed_addr
constant [12 x
i8] c
"value: %lf\0A\00", align 1
@.str.1 = private unnamed_addr
constant [1 x
i8] zeroinitializer, align 1
@__stderrp = external
global %struct.__sFILE*, align 8
@.str.2 = private unnamed_addr
constant [23 x
i8] c
"==BEGIN DUMP_ARRAYS==\0A\00", align 1
@.str.3 = private unnamed_addr
constant [15 x
i8] c
"begin dump: %s\00", align 1
@.str.4 = private unnamed_addr
constant [2 x
i8] c
"A\00", align 1
@.str.5 = private unnamed_addr
constant [2 x
i8] c
"\0A\00", align 1
@.str.6 = private unnamed_addr
constant [8 x
i8] c
"%0.2lf \00", align 1
@.str.7 = private unnamed_addr
constant [17 x
i8] c
"\0Aend dump: %s\0A\00", align 1
@.str.8 = private unnamed_addr
constant [23 x
i8] c
"==END DUMP_ARRAYS==\0A\00", align 1
@.str.9 = private unnamed_addr
constant [12 x
i8] c
"polybench.c\00", align 1
@.str.1.10 = private unnamed_addr
constant [12 x
i8] c
"tmp <= 10.0\00", align 1
@.str.2.11 = private unnamed_addr
constant [7 x
i8] c
"%0.6f\0A\00", align 1
@.str.3.14 = private unnamed_addr
constant [51 x
i8] c
"[PolyBench] posix_memalign: cannot allocate memory\00", align 1
@0 = private unnamed_addr
constant [11 x
i8] c
"function: \00"
@1 = private unnamed_addr
constant [9 x
i8] c
"sampling\00"
@2 = private unnamed_addr
constant [2 x
i8] c
"\0A\00"
@3 = private unnamed_addr
constant [15 x
i8] c
"cnt value: %d\0A\00"
@4 = private unnamed_addr
constant [14 x
i8] c
"eq value: %d\0A\00"
@5 = private unnamed_addr
constant [15 x
i8] c
"sub value: %d\0A\00"
; Function Attrs: noinline nounwind ssp uwtable
entry:
ret void
}
; Function Attrs: noinline nounwind ssp uwtable
entry:
%arraydecay = bitcast i8* %call to [2000 x
double]*
%cmp = icmp sgt
i32 %argc, 42
br i1 %cmp, label %land.lhs.true, label %if.end
land.lhs.true: ; preds = %entry
%tmp = load i8*, i8** %argv, align 8
%strcmpload = load i8, i8* %tmp, align 1
%tobool = icmp eq
i8 %strcmpload, 0
br i1 %tobool, label %if.then, label %if.end
if.then: ; preds = %land.lhs.true
br label %if.end
if.end: ; preds = %if.then, %land.lhs.true, %entry
}
; Function Attrs: noinline nounwind ssp uwtable
entry:
br label %for.cond
for.cond: ; preds = %for.inc23, %entry
%indvars.iv32 = phi i64 [ %indvars.iv.next33, %for.inc23 ], [ 1, %entry ]
%indvars.iv26 = phi i64 [ %indvars.iv.next27, %for.inc23 ], [ 0, %entry ]
%cmp = icmp slt
i64 %indvars.iv26, %tmp34
br i1 %cmp, label %for.body, label %for.end25
for.body: ; preds = %for.cond
br label %for.cond1
for.cond1: ; preds = %for.inc, %for.body
%indvars.iv19 = phi i64 [ %indvars.iv.next20, %for.inc ], [ 0, %for.body ]
%exitcond25 = icmp eq
i64 %indvars.iv19, %indvars.iv32
br i1 %exitcond25, label %for.end, label %for.body3
for.body3: ; preds = %for.cond1
%tmp35 = sub nsw i64 0, %indvars.iv19
%tmp36 = trunc i64 %tmp35 to i32
%rem = srem i32 %tmp36, %n
%conv = sitofp i32 %rem to double
%conv4 = sitofp i32 %n to double
%div = fdiv double %conv, %conv4
%add = fadd double %div, 1.000000e+00
%arrayidx6 = getelementptr inbounds [2000 x
double], [2000 x
double]* %A, i64 %indvars.iv26, i64 %indvars.iv19
store double %add, double* %arrayidx6, align 8
br label %for.inc
for.inc: ; preds = %for.body3
%indvars.iv.next20 = add nuw nsw i64 %indvars.iv19, 1
br label %for.cond1
for.end: ; preds = %for.cond1
br label %for.cond8
for.cond8: ; preds = %for.inc16, %for.end
%indvars.iv28 = phi i64 [ %indvars.iv.next29, %for.inc16 ], [ %indvars.iv26, %for.end ]
%indvars.iv.next29 = add nuw nsw i64 %indvars.iv28, 1
%wide.trip.count30 = zext i32 %tmp to i64
%exitcond31 = icmp ne
i64 %indvars.iv28, %wide.trip.count30
br i1 %exitcond31, label %for.body11, label %for.end18
for.body11: ; preds = %for.cond8
%arrayidx15 = getelementptr inbounds [2000 x
double], [2000 x
double]* %A, i64 %indvars.iv26, i64 %indvars.iv.next29
store double 0.000000e+00, double* %arrayidx15, align 8
br label %for.inc16
for.inc16: ; preds = %for.body11
br label %for.cond8
for.end18: ; preds = %for.cond8
%arrayidx22 = getelementptr inbounds [2000 x
double], [2000 x
double]* %A, i64 %indvars.iv26, i64 %indvars.iv26
store double 1.000000e+00, double* %arrayidx22, align 8
br label %for.inc23
for.inc23: ; preds = %for.end18
%indvars.iv.next27 = add nuw nsw i64 %indvars.iv26, 1
%indvars.iv.next33 = add nuw nsw i64 %indvars.iv32, 1
br label %for.cond
for.end25: ; preds = %for.cond
%tmp37 = bitcast i8* %call to [2000 x
[2000 x
double]]*
br label %for.cond26
for.cond26: ; preds = %for.inc41, %for.end25
%indvars.iv17 = phi i64 [ %indvars.iv.next18, %for.inc41 ], [ 0, %for.end25 ]
%cmp27 = icmp slt
i64 %indvars.iv17, %tmp38
br i1 %cmp27, label %for.body29, label %for.end43
for.body29: ; preds = %for.cond26
br label %for.cond30
for.cond30: ; preds = %for.inc38, %for.body29
%indvars.iv13 = phi i64 [ %indvars.iv.next14, %for.inc38 ], [ 0, %for.body29 ]
%wide.trip.count15 = zext i32 %n to i64
%exitcond16 = icmp ne
i64 %indvars.iv13, %wide.trip.count15
br i1 %exitcond16, label %for.body33, label %for.end40
for.body33: ; preds = %for.cond30
%arrayidx37 = getelementptr inbounds [2000 x
[2000 x
double]], [2000 x
[2000 x
double]]* %tmp37, i64 0, i64 %indvars.iv17, i64 %indvars.iv13
store double 0.000000e+00, double* %arrayidx37, align 8
br label %for.inc38
for.inc38: ; preds = %for.body33
%indvars.iv.next14 = add nuw nsw i64 %indvars.iv13, 1
br label %for.cond30
for.end40: ; preds = %for.cond30
br label %for.inc41
for.inc41: ; preds = %for.end40
%indvars.iv.next18 = add nuw nsw i64 %indvars.iv17, 1
br label %for.cond26
for.end43: ; preds = %for.cond26
br i1 %call1, label %for.end43.split.c, label %for.end43.split
for.end43.split: ; preds = %for.end43
br label %for.cond44
for.cond44: ; preds = %for.inc75, %for.end43.split
%indvars.iv11 = phi i64 [ %indvars.iv.next12, %for.inc75 ], [ 0, %for.end43.split ]
%cmp45 = icmp slt
i64 %indvars.iv11, %tmp39
br i1 %cmp45, label %for.body47, label %for.end77
for.body47: ; preds = %for.cond44
br label %for.cond48
for.cond48: ; preds = %for.inc72, %for.body47
%indvars.iv7 = phi i64 [ %indvars.iv.next8, %for.inc72 ], [ 0, %for.body47 ]
%wide.trip.count9 = zext i32 %n to i64
%exitcond10 = icmp ne
i64 %indvars.iv7, %wide.trip.count9
br i1 %exitcond10, label %for.body51, label %for.end74
for.body51: ; preds = %for.cond48
br label %for.cond52
for.cond52: ; preds = %for.inc69, %for.body51
%indvars.iv3 = phi i64 [ %indvars.iv.next4, %for.inc69 ], [ 0, %for.body51 ]
%wide.trip.count5 = zext i32 %n to i64
%exitcond6 = icmp ne
i64 %indvars.iv3, %wide.trip.count5
br i1 %exitcond6, label %for.body55, label %for.end71
for.body55: ; preds = %for.cond52
%arrayidx59 = getelementptr inbounds [2000 x
double], [2000 x
double]* %A, i64 %indvars.iv7, i64 %indvars.iv11
%tmp40 = load double, double* %arrayidx59, align 8
%arrayidx63 = getelementptr inbounds [2000 x
double], [2000 x
double]* %A, i64 %indvars.iv3, i64 %indvars.iv11
%tmp41 = load double, double* %arrayidx63, align 8
%mul = fmul double %tmp40, %tmp41
%arrayidx67 = getelementptr inbounds [2000 x
[2000 x
double]], [2000 x
[2000 x
double]]* %tmp37, i64 0, i64 %indvars.iv7, i64 %indvars.iv3
%tmp42 = load double, double* %arrayidx67, align 8
%add68 = fadd double %tmp42, %mul
store double %add68, double* %arrayidx67, align 8
br label %split
split: ; preds = %for.body55
br label %for.inc69
for.inc69: ; preds = %split
%indvars.iv.next4 = add nuw nsw i64 %indvars.iv3, 1
br label %for.cond52
for.end71: ; preds = %for.cond52
br label %for.inc72
for.inc72: ; preds = %for.end71
%indvars.iv.next8 = add nuw nsw i64 %indvars.iv7, 1
br label %for.cond48
for.end74: ; preds = %for.cond48
br label %for.inc75
for.inc75: ; preds = %for.end74
%indvars.iv.next12 = add nuw nsw i64 %indvars.iv11, 1
br label %for.cond44
for.end77: ; preds = %for.cond44.c, %for.cond44
br label %for.cond78
for.cond78: ; preds = %for.inc97, %for.end77
%indvars.iv1 = phi i64 [ %indvars.iv.next2, %for.inc97 ], [ 0, %for.end77 ]
%cmp79 = icmp slt
i64 %indvars.iv1, %tmp43
br i1 %cmp79, label %for.body81, label %for.end99
for.body81: ; preds = %for.cond78
br label %for.cond82
for.cond82: ; preds = %for.inc94, %for.body81
%indvars.iv = phi i64 [ %indvars.iv.next, %for.inc94 ], [ 0, %for.body81 ]
%wide.trip.count = zext i32 %n to i64
%exitcond = icmp ne
i64 %indvars.iv, %wide.trip.count
br i1 %exitcond, label %for.body85, label %for.end96
for.body85: ; preds = %for.cond82
%arrayidx89 = getelementptr inbounds [2000 x
[2000 x
double]], [2000 x
[2000 x
double]]* %tmp37, i64 0, i64 %indvars.iv1, i64 %indvars.iv
%tmp44 = bitcast double* %arrayidx89 to i64*
%tmp45 = load i64, i64* %tmp44, align 8
%arrayidx93 = getelementptr inbounds [2000 x
double], [2000 x
double]* %A, i64 %indvars.iv1, i64 %indvars.iv
%tmp46 = bitcast double* %arrayidx93 to i64*
store i64 %tmp45, i64* %tmp46, align 8
br label %for.inc94
for.inc94: ; preds = %for.body85
%indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
br label %for.cond82
for.end96: ; preds = %for.cond82
br label %for.inc97
for.inc97: ; preds = %for.end96
%indvars.iv.next2 = add nuw nsw i64 %indvars.iv1, 1
br label %for.cond78
for.end99: ; preds = %for.cond78
ret void
for.end43.split.c: ; preds = %for.end43
br label %for.cond44.c
for.cond44.c: ; preds = %for.end43.split.c, %for.inc75.c
%indvars.iv11.c = phi i64 [ %indvars.iv.next12.c, %for.inc75.c ], [ 0, %for.end43.split.c ]
%cmp45.c = icmp slt
i64 %indvars.iv11.c, %tmp39.c
br i1 %cmp45.c, label %for.body47.c, label %for.end77
for.body47.c: ; preds = %for.cond44.c
br label %for.cond48.c
for.cond48.c: ; preds = %for.inc72.c, %for.body47.c
%indvars.iv7.c = phi i64 [ %indvars.iv.next8.c, %for.inc72.c ], [ 0, %for.body47.c ]
%wide.trip.count9.c = zext i32 %n to i64
%exitcond10.c = icmp ne
i64 %indvars.iv7.c, %wide.trip.count9.c
br i1 %exitcond10.c, label %for.body51.c, label %for.end74.c
for.end74.c: ; preds = %for.cond48.c
br label %for.inc75.c
for.inc75.c: ; preds = %for.end74.c
%indvars.iv.next12.c = add nuw nsw i64 %indvars.iv11.c, 1
br label %for.cond44.c
for.body51.c: ; preds = %for.cond48.c
br label %for.cond52.c
for.cond52.c: ; preds = %for.inc69.c, %for.body51.c
%indvars.iv3.c = phi i64 [ %indvars.iv.next4.c, %for.inc69.c ], [ 0, %for.body51.c ]
%wide.trip.count5.c = zext i32 %n to i64
%exitcond6.c = icmp ne
i64 %indvars.iv3.c, %wide.trip.count5.c
br i1 %exitcond6.c, label %for.body55.c, label %for.end71.c
for.end71.c: ; preds = %for.cond52.c
br label %for.inc72.c
for.inc72.c: ; preds = %for.end71.c
%indvars.iv.next8.c = add nuw nsw i64 %indvars.iv7.c, 1
br label %for.cond48.c
for.body55.c: ; preds = %for.cond52.c
%arrayidx59.c = getelementptr inbounds [2000 x
double], [2000 x
double]* %A, i64 %indvars.iv7.c, i64 %indvars.iv11.c
%tmp40.c = load double, double* %arrayidx59.c, align 8
%0 = fcmp one double %tmp40.c, 0.000000e+00
br i1 %0, label %1, label %5
; <label>:1: ; preds = %for.body55.c
%arrayidx63.c = getelementptr inbounds [2000 x
double], [2000 x
double]* %A, i64 %indvars.iv3.c, i64 %indvars.iv11.c
%tmp41.c = load double, double* %arrayidx63.c, align 8
%2 = fcmp one double %tmp41.c, 0.000000e+00
br i1 %2, label %3, label %4
; <label>:3: ; preds = %1
%mul.c = fmul double %tmp40.c, %tmp41.c
%arrayidx67.c = getelementptr inbounds [2000 x
[2000 x
double]], [2000 x
[2000 x
double]]* %tmp37, i64 0, i64 %indvars.iv7.c, i64 %indvars.iv3.c
%tmp42.c = load double, double* %arrayidx67.c, align 8
%add68.c = fadd double %tmp42.c, %mul.c
store double %add68.c, double* %arrayidx67.c, align 8
br label %4
; <label>:4: ; preds = %1, %3
br label %5
; <label>:5: ; preds = %for.body55.c, %4
br label %split.c
for.inc69.c: ; preds = %split.c
%indvars.iv.next4.c = add nuw nsw i64 %indvars.iv3.c, 1
br label %for.cond52.c
split.c: ; preds = %5
br label %for.inc69.c
}
; Function Attrs: noinline nounwind ssp uwtable
entry:
br label %for.cond
for.cond: ; preds = %for.inc56, %entry
%indvars.iv8 = phi i64 [ %indvars.iv.next9, %for.inc56 ], [ 0, %entry ]
%cmp = icmp slt
i64 %indvars.iv8, %tmp
br i1 %cmp, label %for.body, label %for.end58
for.body: ; preds = %for.cond
br label %for.cond1
for.cond1: ; preds = %for.inc25, %for.body
%indvars.iv1 = phi i64 [ %indvars.iv.next2, %for.inc25 ], [ 0, %for.body ]
%exitcond4 = icmp ne
i64 %indvars.iv1, %indvars.iv8
br i1 %exitcond4, label %for.body3, label %for.end27
for.body3: ; preds = %for.cond1
br label %for.cond4
for.cond4: ; preds = %for.inc, %for.body3
%indvars.iv = phi i64 [ %indvars.iv.next, %for.inc ], [ 0, %for.body3 ]
%exitcond = icmp ne
i64 %indvars.iv, %indvars.iv1
br i1 %exitcond, label %for.body6, label %for.end
for.body6: ; preds = %for.cond4
%arrayidx8 = getelementptr inbounds [2000 x
double], [2000 x
double]* %A, i64 %indvars.iv8, i64 %indvars.iv
%tmp10 = load double, double* %arrayidx8, align 8
%arrayidx12 = getelementptr inbounds [2000 x
double], [2000 x
double]* %A, i64 %indvars.iv1, i64 %indvars.iv
%tmp11 = load double, double* %arrayidx12, align 8
%mul = fmul double %tmp10, %tmp11
%arrayidx16 = getelementptr inbounds [2000 x
double], [2000 x
double]* %A, i64 %indvars.iv8, i64 %indvars.iv1
%tmp12 = load double, double* %arrayidx16, align 8
%sub = fsub double %tmp12, %mul
store double %sub, double* %arrayidx16, align 8
br label %split
split: ; preds = %for.body6
br label %for.inc
for.inc: ; preds = %split
%indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
br label %for.cond4
for.end: ; preds = %for.cond4
%arrayidx20 = getelementptr inbounds [2000 x
double], [2000 x
double]* %A, i64 %indvars.iv1, i64 %indvars.iv1
%tmp13 = load double, double* %arrayidx20, align 8
%arrayidx24 = getelementptr inbounds [2000 x
double], [2000 x
double]* %A, i64 %indvars.iv8, i64 %indvars.iv1
%tmp14 = load double, double* %arrayidx24, align 8
%div = fdiv double %tmp14, %tmp13
store double %div, double* %arrayidx24, align 8
br label %split1
split1: ; preds = %for.end
br label %for.inc25
for.inc25: ; preds = %split1
%indvars.iv.next2 = add nuw nsw i64 %indvars.iv1, 1
br label %for.cond1
for.end27: ; preds = %for.cond1
br label %for.cond28
for.cond28: ; preds = %for.inc45, %for.end27
%indvars.iv5 = phi i64 [ %indvars.iv.next6, %for.inc45 ], [ 0, %for.end27 ]
%exitcond7 = icmp ne
i64 %indvars.iv5, %indvars.iv8
br i1 %exitcond7, label %for.body30, label %for.end47
for.body30: ; preds = %for.cond28
%arrayidx34 = getelementptr inbounds [2000 x
double], [2000 x
double]* %A, i64 %indvars.iv8, i64 %indvars.iv5
%tmp15 = load double, double* %arrayidx34, align 8
%mul39 = fmul double %tmp15, %tmp15
%arrayidx43 = getelementptr inbounds [2000 x
double], [2000 x
double]* %A, i64 %indvars.iv8, i64 %indvars.iv8
%tmp16 = load double, double* %arrayidx43, align 8
%sub44 = fsub double %tmp16, %mul39
store double %sub44, double* %arrayidx43, align 8
br label %split2
split2: ; preds = %for.body30
br label %for.inc45
for.inc45: ; preds = %split2
%indvars.iv.next6 = add nuw nsw i64 %indvars.iv5, 1
br label %for.cond28
for.end47: ; preds = %for.cond28
%arrayidx51 = getelementptr inbounds [2000 x
double], [2000 x
double]* %A, i64 %indvars.iv8, i64 %indvars.iv8
%tmp17 = load double, double* %arrayidx51, align 8
store double %tmp18, double* %arrayidx51, align 8
br label %for.inc56
for.inc56: ; preds = %for.end47
%indvars.iv.next9 = add nuw nsw i64 %indvars.iv8, 1
br label %for.cond
for.end58: ; preds = %for.cond
ret void
}
; Function Attrs: noinline nounwind ssp uwtable
entry:
%tmp = load %struct.__sFILE*, %struct.__sFILE** @__stderrp, align 8
%tmp8 = load %struct.__sFILE*, %struct.__sFILE** @__stderrp, align 8
%call1 = call i32 (%struct.__sFILE*, i8*, ...) @fprintf(%struct.__sFILE* %tmp8, i8* getelementptr inbounds ([15 x
i8], [15 x
i8]* @.str.3, i64 0, i64 0), i8* getelementptr inbounds ([2 x
i8], [2 x
i8]* @.str.4, i64 0, i64 0)) #
6
br label %for.cond
for.cond: ; preds = %for.inc10, %entry
%indvars.iv5 = phi i64 [ %indvars.iv.next6, %for.inc10 ], [ 0, %entry ]
%indvars.iv3 = phi i64 [ %indvars.iv.next4, %for.inc10 ], [ 1, %entry ]
%cmp = icmp slt
i64 %indvars.iv5, %tmp9
br i1 %cmp, label %for.body, label %for.end12
for.body: ; preds = %for.cond
br label %for.cond2
for.cond2: ; preds = %for.inc, %for.body
%indvars.iv = phi i64 [ %indvars.iv.next, %for.inc ], [ 0, %for.body ]
%exitcond = icmp eq
i64 %indvars.iv, %indvars.iv3
br i1 %exitcond, label %for.end, label %for.body4
for.body4: ; preds = %for.cond2
%tmp10 = trunc i64 %indvars.iv5 to i32
%mul = mul nsw i32 %tmp10, %n
%tmp11 = trunc i64 %indvars.iv to i32
%add = add nsw i32 %mul, %tmp11
%cmp5 = icmp eq
i32 %rem, 0
br i1 %cmp5, label %if.then, label %if.end
if.then: ; preds = %for.body4
%tmp12 = load %struct.__sFILE*, %struct.__sFILE** @__stderrp, align 8
br label %if.end
if.end: ; preds = %if.then, %for.body4
%tmp13 = load %struct.__sFILE*, %struct.__sFILE** @__stderrp, align 8
%arrayidx8 = getelementptr inbounds [2000 x
double], [2000 x
double]* %A, i64 %indvars.iv5, i64 %indvars.iv
%tmp14 = load double, double* %arrayidx8, align 8
%call9 = call i32 (%struct.__sFILE*, i8*, ...) @fprintf(%struct.__sFILE* %tmp13, i8* getelementptr inbounds ([8 x
i8], [8 x
i8]* @.str.6, i64 0, i64 0), double %tmp14) #
6
br label %for.inc
for.inc: ; preds = %if.end
%indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
br label %for.cond2
for.end: ; preds = %for.cond2
br label %for.inc10
for.inc10: ; preds = %for.end
%indvars.iv.next6 = add nuw nsw i64 %indvars.iv5, 1
%indvars.iv.next4 = add nuw nsw i64 %indvars.iv3, 1
br label %for.cond
for.end12: ; preds = %for.cond
%tmp15 = load %struct.__sFILE*, %struct.__sFILE** @__stderrp, align 8
%call13 = call i32 (%struct.__sFILE*, i8*, ...) @fprintf(%struct.__sFILE* %tmp15, i8* getelementptr inbounds ([17 x
i8], [17 x
i8]* @.str.7, i64 0, i64 0), i8* getelementptr inbounds ([2 x
i8], [2 x
i8]* @.str.4, i64 0, i64 0)) #
6
%tmp16 = load %struct.__sFILE*, %struct.__sFILE** @__stderrp, align 8
ret void
}
; Function Attrs: nounwind readnone speculatable
; Function Attrs: noinline nounwind ssp uwtable
entry:
%tmp = bitcast i8* %call to double*
br label %for.cond
for.cond: ; preds = %for.inc, %entry
%indvars.iv = phi i64 [ %indvars.iv.next, %for.inc ], [ 0, %entry ]
%tmp.0 = phi double [ 0.000000e+00, %entry ], [ %add, %for.inc ]
%exitcond = icmp ne
i64 %indvars.iv, 4194560
br i1 %exitcond, label %for.body, label %for.end
for.body: ; preds = %for.cond
br label %for.inc
for.inc: ; preds = %for.body
%arrayidx = getelementptr inbounds double, double* %tmp, i64 %indvars.iv
%tmp1 = load double, double* %arrayidx, align 8
%add = fadd double %tmp.0, %tmp1
%indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
br label %for.cond
for.end: ; preds = %for.cond
%tmp.0.lcssa = phi double [ %tmp.0, %for.cond ]
%cmp2 = fcmp ugt double %tmp.0.lcssa, 1.000000e+01
br i1 %cmp2, label %cond.true, label %cond.false
cond.true: ; preds = %for.end
call void @__assert_rtn(i8* getelementptr inbounds ([22 x
i8], [22 x
i8]* @__func__.polybench_flush_cache, i64 0, i64 0), i8* getelementptr inbounds ([12 x
i8], [12 x
i8]* @.str.9, i64 0, i64 0), i32 123, i8* getelementptr inbounds ([12 x
i8], [12 x
i8]* @.str.1.10, i64 0, i64 0)) #
8
unreachable
bb: ; No predecessors!
br label %cond.end
cond.false: ; preds = %for.end
br label %cond.end
cond.end: ; preds = %cond.false, %bb
ret void
}
; Function Attrs: allocsize(0,1)
; Function Attrs: noreturn
; Function Attrs: noinline nounwind ssp uwtable
entry:
ret void
}
; Function Attrs: noinline nounwind ssp uwtable
entry:
ret void
}
; Function Attrs: noinline nounwind ssp uwtable
entry:
ret double 0.000000e+00
}
; Function Attrs: noinline nounwind ssp uwtable
entry:
ret void
}
; Function Attrs: noinline nounwind ssp uwtable
entry:
%sub = fsub double %tmp, %tmp1
ret void
}
; Function Attrs: noinline nounwind ssp uwtable
entry:
ret void
}
; Function Attrs: noinline nounwind ssp uwtable
entry:
%conv = sext i32 %elt_size to i64
}
; Function Attrs: noinline nounwind ssp uwtable
entry:
%ret = alloca i8*, align 8
store i8* null, i8** %ret, align 8
%add1 = add i64 %tmp, %alloc_sz
%tmp1 = load i8*, i8** %ret, align 8
%tobool = icmp eq
i8* %tmp1, null
br i1 %tobool, label %if.then, label %lor.lhs.false
lor.lhs.false: ; preds = %entry
%tobool2 = icmp eq
i32 %call, 0
br i1 %tobool2, label %if.end, label %if.then
if.then: ; preds = %lor.lhs.false, %entry
%tmp2 = load %struct.__sFILE*, %struct.__sFILE** @__stderrp, align 8
unreachable
if.end: ; preds = %lor.lhs.false
}
; Function Attrs: noreturn
; Function Attrs: nounwind
; Function Attrs: nounwind
; Function Attrs: noinline nounwind ssp uwtable
entry.s:
br label %for.end43.split.s
for.end43.split.s: ; preds = %entry.s
br label %for.cond44.s
for.cond44.s: ; preds = %for.inc75.s, %for.end43.split.s
%indvars.iv11.s = phi i64 [ %indvars.iv.next12.s, %for.inc75.s ], [ 0, %for.end43.split.s ]
%cmp45.s = icmp slt
i64 %indvars.iv11.s, %tmp39.s
br i1 %cmp45.s, label %for.body47.s, label %for.end77.s
for.body47.s: ; preds = %for.cond44.s
br label %for.cond48.s
for.cond48.s: ; preds = %for.inc72.s, %for.body47.s
%indvars.iv7.s = phi i64 [ %indvars.iv.next8.s, %for.inc72.s ], [ 0, %for.body47.s ]
%wide.trip.count9.s = zext i32 %n to i64
%exitcond10.s = icmp ne
i64 %indvars.iv7.s, %wide.trip.count9.s
br i1 %exitcond10.s, label %for.body51.s, label %for.end74.s
for.body51.s: ; preds = %for.cond48.s
br label %for.cond52.s
for.cond52.s: ; preds = %for.inc69.s, %for.body51.s
%indvars.iv3.s = phi i64 [ %indvars.iv.next4.s, %for.inc69.s ], [ 0, %for.body51.s ]
%wide.trip.count5.s = zext i32 %n to i64
%exitcond6.s = icmp ne
i64 %indvars.iv3.s, %wide.trip.count5.s
br i1 %exitcond6.s, label %for.body55.s, label %for.end71.s
for.body55.s: ; preds = %for.cond52.s
%arrayidx59.s = getelementptr inbounds [2000 x
double], [2000 x
double]* %A, i64 %indvars.iv7.s, i64 %indvars.iv11.s
%tmp40.s = load double, double* %arrayidx59.s, align 8
%arrayidx63.s = getelementptr inbounds [2000 x
double], [2000 x
double]* %A, i64 %indvars.iv3.s, i64 %indvars.iv11.s
%tmp41.s = load double, double* %arrayidx63.s, align 8
%mul.s = fmul double %tmp40.s, %tmp41.s
%arrayidx67.s = getelementptr inbounds [2000 x
[2000 x
double]], [2000 x
[2000 x
double]]* undef, i64 0, i64 %indvars.iv7.s, i64 %indvars.iv3.s
%tmp42.s = load double, double* %arrayidx67.s, align 8
%add68.s = fadd double %tmp42.s, %mul.s
%cnt_inc = add i32 %cnt1, 1
%eq_counter = load i32, i32* %eq
%fcmp = fcmp oeq double %tmp42.s, %add68.s
%eq_inc = add i32 %eq_counter, %0
br label %for.body55.s.split
for.body55.s.split: ; preds = %for.body55.s
br i1 %2, label %for.inc69.s, label %function_exit
for.inc69.s: ; preds = %for.body55.s.split
%indvars.iv.next4.s = add nuw nsw i64 %indvars.iv3.s, 1
br label %for.cond52.s
for.end71.s: ; preds = %for.cond52.s
br label %for.inc72.s
for.inc72.s: ; preds = %for.end71.s
%indvars.iv.next8.s = add nuw nsw i64 %indvars.iv7.s, 1
br label %for.cond48.s
for.end74.s: ; preds = %for.cond48.s
br label %for.inc75.s
for.inc75.s: ; preds = %for.end74.s
%indvars.iv.next12.s = add nuw nsw i64 %indvars.iv11.s, 1
br label %for.cond44.s
function_exit: ; preds = %for.body55.s.split, %for.end77.s
%sub = sub i32 %cnt2, %eq3
%cmp = icmp sle
i32 %sub, 2
%3 = select i1 %cmp, i1 true, i1 false
for.end77.s: ; preds = %for.cond44.s
br label %function_exit
}
attributes #0 = { noinline nounwind ssp uwtable "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-jump-tables"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="penryn" "target-features"="+cx16,+fxsr,+mmx,+sahf,+sse,+sse2,+sse3,+sse4.1,+ssse3,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" }
attributes #1 = { "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="penryn" "target-features"="+cx16,+fxsr,+mmx,+sahf,+sse,+sse2,+sse3,+sse4.1,+ssse3,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" }
attributes #2 = { nounwind readnone speculatable }
attributes #3 = { allocsize(0,1) "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="penryn" "target-features"="+cx16,+fxsr,+mmx,+sahf,+sse,+sse2,+sse3,+sse4.1,+ssse3,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" }
attributes #4 = { noreturn "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="true" "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="penryn" "target-features"="+cx16,+fxsr,+mmx,+sahf,+sse,+sse2,+sse3,+sse4.1,+ssse3,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" }
attributes #5 = { noreturn "correctly-rounded-divide-sqrt-fp-math"="false" "disable-tail-calls"="false" "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-signed-zeros-fp-math"="false" "no-trapping-math"="false" "stack-protector-buffer-size"="8" "target-cpu"="penryn" "target-features"="+cx16,+fxsr,+mmx,+sahf,+sse,+sse2,+sse3,+sse4.1,+ssse3,+x87" "unsafe-fp-math"="false" "use-soft-float"="false" }
attributes #6 = { nounwind }
attributes #7 = { nounwind allocsize(0,1) }
attributes #8 = { noreturn nounwind }
!llvm.ident = !{!0, !0}
!llvm.module.flags = !{!1, !2}
!0 = !{!"clang version 6.0.1 (tags/RELEASE_601/final 342957)"}
!1 = !{i32 1, !"wchar_size", i32 4}
!2 = !{i32 7, !"PIC Level", i32 2}