Slide 85
Slide 85 text
define double @calculatePI(double %cycles, double %r) local_unnamed_addr {
Entry:
%cmpLT3 = fcmp ogt double %cycles, 0.000000e+00
br i1 %cmpLT3, label %for.body.lr.ph, label %for.condition1._crit_edge
for.body.lr.ph: ; preds = %Entry
%0 = fmul double %r, %r
br label %for.body
for.body: ; preds = %for.body.lr.ph, %for.body
%i.05 = phi double [ 0.000000e+00, %for.body.lr.ph ], [ %9, %for.body ]
%inside.04 = phi double [ 0.000000e+00, %for.body.lr.ph ], [ %inside.1, %for.body ]
%1 = tail call double @_Z12Math__randomv()
%2 = fmul double %1, %r
%3 = tail call double @_Z12Math__randomv()
%4 = fmul double %3, %r
%5 = fmul double %2, %2
%6 = fmul double %4, %4
%7 = fadd double %5, %6
%cmpLT2 = fcmp olt double %7, %0
%8 = fadd double %inside.04, 1.000000e+00
%inside.1 = select i1 %cmpLT2, double %8, double %inside.04
%9 = fadd double %i.05, 1.000000e+00
%cmpLT = fcmp olt double %9, %cycles
br i1 %cmpLT, label %for.body, label %for.condition1._crit_edge.loopexit
for.condition1._crit_edge.loopexit: ; preds = %for.body
%phitmp = fmul double %inside.1, 4.000000e+00
br label %for.condition1._crit_edge
for.condition1._crit_edge: ; preds = %for.condition1._crit_edge.loopexit, %Entry
%inside.0.lcssa = phi double [ 0.000000e+00, %Entry ], [ %phitmp, %for.condition1._crit_edge.loopexit ]
%10 = fdiv double %inside.0.lcssa, %cycles
ret double %10
}