Created
June 6, 2014 05:46
-
-
Save jvoorhis/6a3cb89d91b62ad73bef to your computer and use it in GitHub Desktop.
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
; ModuleID = 'Kaleidescope' | |
declare i32 @putchar(i32) | |
define double @put(double) { | |
%2 = fptoui double %0 to i32 | |
%3 = call i32 @putchar(i32 %2) | |
ret double %0 | |
} | |
define double @"unary!"(double %v) { | |
entry: | |
%0 = alloca double | |
store double %v, double* %0 | |
%v1 = load double* %0 | |
%booltmp = fptoui double %v1 to i1 | |
br i1 %booltmp, label %then, label %else | |
then: ; preds = %entry | |
br label %merge | |
else: ; preds = %entry | |
br label %merge | |
merge: ; preds = %else, %then | |
%iftmp = phi double [ 0.000000e+00, %then ], [ 1.000000e+00, %else ] | |
ret double %iftmp | |
} | |
define double @unary-(double %v) { | |
entry: | |
%0 = alloca double | |
store double %v, double* %0 | |
%v1 = load double* %0 | |
%subtmp = fsub double 0.000000e+00, %v1 | |
ret double %subtmp | |
} | |
define double @"binary>"(double %lhs, double %rhs) { | |
entry: | |
%0 = alloca double | |
store double %lhs, double* %0 | |
%1 = alloca double | |
store double %rhs, double* %1 | |
%rhs1 = load double* %1 | |
%lhs2 = load double* %0 | |
%cmptmp = fcmp ule double %rhs1, %lhs2 | |
%booltmp = uitofp i1 %cmptmp to double | |
ret double %booltmp | |
} | |
define double @"binary|"(double %lhs, double %rhs) { | |
entry: | |
%0 = alloca double | |
store double %lhs, double* %0 | |
%1 = alloca double | |
store double %rhs, double* %1 | |
%lhs1 = load double* %0 | |
%booltmp = fptoui double %lhs1 to i1 | |
br i1 %booltmp, label %merge, label %else | |
else: ; preds = %entry | |
%rhs2 = load double* %1 | |
%booltmp3 = fptoui double %rhs2 to i1 | |
br i1 %booltmp3, label %merge, label %else5 | |
merge: ; preds = %else5, %else, %entry | |
%iftmp7 = phi double [ 1.000000e+00, %entry ], [ 0.000000e+00, %else5 ], [ 1.000000e+00, %else ] | |
ret double %iftmp7 | |
else5: ; preds = %else | |
br label %merge | |
} | |
define double @"binary&"(double %lhs, double %rhs) { | |
entry: | |
%0 = alloca double | |
store double %lhs, double* %0 | |
%1 = alloca double | |
store double %rhs, double* %1 | |
%lhs1 = load double* %0 | |
%unop = call double @"unary!"(double %lhs1) | |
%booltmp = fptoui double %unop to i1 | |
br i1 %booltmp, label %then, label %else | |
then: ; preds = %entry | |
br label %merge | |
else: ; preds = %entry | |
%rhs2 = load double* %1 | |
%unop3 = call double @"unary!"(double %rhs2) | |
%unop4 = call double @"unary!"(double %unop3) | |
br label %merge | |
merge: ; preds = %else, %then | |
%iftmp = phi double [ 0.000000e+00, %then ], [ %unop4, %else ] | |
ret double %iftmp | |
} | |
define double @"binary:"(double %x, double %y) { | |
entry: | |
%0 = alloca double | |
store double %x, double* %0 | |
%1 = alloca double | |
store double %y, double* %1 | |
%y1 = load double* %1 | |
ret double %y1 | |
} | |
define double @printdensity(double %d) { | |
entry: | |
%0 = alloca double | |
store double %d, double* %0 | |
%d1 = load double* %0 | |
%binop = call double @"binary>"(double %d1, double 8.000000e+00) | |
%booltmp = fptoui double %binop to i1 | |
br i1 %booltmp, label %then, label %else | |
then: ; preds = %entry | |
%calltmp = call double @put(double 3.200000e+01) | |
br label %merge | |
else: ; preds = %entry | |
%d2 = load double* %0 | |
%binop3 = call double @"binary>"(double %d2, double 4.000000e+00) | |
%booltmp4 = fptoui double %binop3 to i1 | |
br i1 %booltmp4, label %then5, label %else6 | |
merge: ; preds = %then12, %else13, %then5, %then | |
%iftmp18 = phi double [ %calltmp, %then ], [ %calltmp8, %then5 ], [ %calltmp15, %then12 ], [ %calltmp16, %else13 ] | |
ret double %iftmp18 | |
then5: ; preds = %else | |
%calltmp8 = call double @put(double 4.600000e+01) | |
br label %merge | |
else6: ; preds = %else | |
%d9 = load double* %0 | |
%binop10 = call double @"binary>"(double %d9, double 2.000000e+00) | |
%booltmp11 = fptoui double %binop10 to i1 | |
br i1 %booltmp11, label %then12, label %else13 | |
then12: ; preds = %else6 | |
%calltmp15 = call double @put(double 4.300000e+01) | |
br label %merge | |
else13: ; preds = %else6 | |
%calltmp16 = call double @put(double 4.200000e+01) | |
br label %merge | |
} | |
define double @mandleconverger(double %real, double %imag, double %iters, double %creal, double %cimag) { | |
entry: | |
%0 = alloca double | |
store double %real, double* %0 | |
%1 = alloca double | |
store double %imag, double* %1 | |
%2 = alloca double | |
store double %iters, double* %2 | |
%3 = alloca double | |
store double %creal, double* %3 | |
%4 = alloca double | |
store double %cimag, double* %4 | |
%iters1 = load double* %2 | |
%binop = call double @"binary>"(double %iters1, double 2.550000e+02) | |
%real2 = load double* %0 | |
%real3 = load double* %0 | |
%multmp = fmul double %real2, %real3 | |
%imag4 = load double* %1 | |
%addtmp = fadd double %multmp, %imag4 | |
%imag5 = load double* %1 | |
%multmp6 = fmul double %addtmp, %imag5 | |
%binop7 = call double @"binary>"(double %multmp6, double 4.000000e+00) | |
%binop8 = call double @"binary|"(double %binop, double %binop7) | |
%booltmp = fptoui double %binop8 to i1 | |
br i1 %booltmp, label %then, label %else | |
then: ; preds = %entry | |
%iters9 = load double* %2 | |
br label %merge | |
else: ; preds = %entry | |
%real10 = load double* %0 | |
%real11 = load double* %0 | |
%multmp12 = fmul double %real10, %real11 | |
%imag13 = load double* %1 | |
%subtmp = fsub double %multmp12, %imag13 | |
%imag14 = load double* %1 | |
%multmp15 = fmul double %subtmp, %imag14 | |
%creal16 = load double* %3 | |
%addtmp17 = fadd double %multmp15, %creal16 | |
%real18 = load double* %0 | |
%multmp19 = fmul double 2.000000e+00, %real18 | |
%imag20 = load double* %1 | |
%multmp21 = fmul double %multmp19, %imag20 | |
%cimag22 = load double* %4 | |
%addtmp23 = fadd double %multmp21, %cimag22 | |
%iters24 = load double* %2 | |
%addtmp25 = fadd double %iters24, 1.000000e+00 | |
%creal26 = load double* %3 | |
%cimag27 = load double* %4 | |
%calltmp = call double @mandleconverger(double %addtmp17, double %addtmp23, double %addtmp25, double %creal26, double %cimag27) | |
br label %merge | |
merge: ; preds = %else, %then | |
%iftmp = phi double [ %iters9, %then ], [ %calltmp, %else ] | |
ret double %iftmp | |
} | |
define double @mandleconverge(double %real2, double %imag2) { | |
entry: | |
%0 = alloca double | |
store double %real2, double* %0 | |
%1 = alloca double | |
store double %imag2, double* %1 | |
%real21 = load double* %0 | |
%imag22 = load double* %1 | |
%real23 = load double* %0 | |
%imag24 = load double* %1 | |
%calltmp = call double @mandleconverger(double %real21, double %imag22, double 0.000000e+00, double %real23, double %imag24) | |
ret double %calltmp | |
} | |
define double @mandel(double %xmin, double %xstep, double %xcount, double %ymin, double %ystep, double %ycount) { | |
entry: | |
%0 = alloca double | |
store double %xmin, double* %0 | |
%1 = alloca double | |
store double %xstep, double* %1 | |
%2 = alloca double | |
store double %xcount, double* %2 | |
%3 = alloca double | |
store double %ymin, double* %3 | |
%4 = alloca double | |
store double %ystep, double* %4 | |
%5 = alloca double | |
store double %ycount, double* %5 | |
%6 = alloca double | |
%ymin1 = load double* %3 | |
store double %ymin1, double* %6 | |
br label %7 | |
; <label>:7 ; preds = %afterloop, %entry | |
%8 = alloca double | |
%xmin2 = load double* %0 | |
store double %xmin2, double* %8 | |
br label %9 | |
; <label>:9 ; preds = %9, %7 | |
%x = load double* %8 | |
%y = load double* %6 | |
%calltmp = call double @mandleconverge(double %x, double %y) | |
%calltmp3 = call double @printdensity(double %calltmp) | |
%xstep4 = load double* %1 | |
%x5 = load double* %8 | |
%nextvar = fadd double %x5, %xstep4 | |
store double %nextvar, double* %8 | |
%x6 = load double* %8 | |
%xmin7 = load double* %0 | |
%xcount8 = load double* %2 | |
%xstep9 = load double* %1 | |
%multmp = fmul double %xcount8, %xstep9 | |
%addtmp = fadd double %xmin7, %multmp | |
%cmptmp = fcmp ule double %x6, %addtmp | |
%booltmp = uitofp i1 %cmptmp to double | |
%loopcond = fcmp oeq double %booltmp, 0.000000e+00 | |
br i1 %loopcond, label %afterloop, label %9 | |
afterloop: ; preds = %9 | |
%calltmp10 = call double @put(double 1.000000e+01) | |
%binop = call double @"binary:"(double %x5, double %calltmp10) | |
%ystep11 = load double* %4 | |
%y12 = load double* %6 | |
%nextvar13 = fadd double %y12, %ystep11 | |
store double %nextvar13, double* %6 | |
%y14 = load double* %6 | |
%ymin15 = load double* %3 | |
%ycount16 = load double* %5 | |
%ystep17 = load double* %4 | |
%multmp18 = fmul double %ycount16, %ystep17 | |
%addtmp19 = fadd double %ymin15, %multmp18 | |
%cmptmp20 = fcmp ule double %y14, %addtmp19 | |
%booltmp21 = uitofp i1 %cmptmp20 to double | |
%loopcond23 = fcmp oeq double %booltmp21, 0.000000e+00 | |
br i1 %loopcond23, label %afterloop22, label %7 | |
afterloop22: ; preds = %afterloop | |
ret double %y12 | |
} | |
define double @0() { | |
entry: | |
%unop = call double @unary-(double 3.000000e+00) | |
%unop1 = call double @unary-(double 2.400000e+00) | |
%calltmp = call double @mandel(double %unop, double 3.000000e-02, double 1.700000e+02, double %unop1, double 1.000000e-01, double 4.500000e+01) | |
ret double %calltmp | |
} | |
define i32 @main(i32) { | |
%2 = call double @0() | |
ret i32 0 | |
} | |
Function parsed unary! with v | |
Function parsed unary- with v | |
Function parsed binary> with lhs-rhs | |
Function parsed binary| with lhs-rhs | |
Function parsed binary& with lhs-rhs | |
Function parsed binary: with x-y | |
Function parsed printdensity | |
Function parsed printdensity with d | |
Function parsed mandleconverger | |
Function parsed mandleconverger with real-imag-iters-creal-cimag | |
Function parsed mandleconverge | |
Function parsed mandleconverge with real2-imag2 | |
Function parsed mandel | |
Function parsed mandel with xmin-xstep-xcount-ymin-ystep-ycount | |
Evaluated mandel(-3.0,0.03,170.0,-2.4,0.1,45.0) to 2.0000000000000018 | |
*********************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++ | |
*****************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++ | |
*************************************************************************************************************************++++++++++++++++++++++++++++++++++++++++++++++++++ | |
***********************************************************************************+++*****************************++++++++++++++++++++++++++++++++++++++++++++++++++++++++ | |
***********************************************************************************++.+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ | |
**********************************************************************************.++.+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ | |
**********************************************************************************.++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ | |
*********************************************************************************...+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ | |
*********************************************************************************...+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ | |
********************************************************************************..+.++.++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ | |
*******************************************************************************.....+. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ | |
******************************************************************************...+.... .++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ | |
*****************************************************************************...+.. .. .+.++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ | |
***************************************************************************....+... . .++..+++++++++++++++++++++++++++++*******************+++++++++++++++++++++++++++++ | |
**************************************************************************...++.... ...++++..++++++++++++++++++++++++***************************+++++++++++++++++++++ | |
************************************************************************..++++.... ......+++++......+++++++++++++++*********************************++++++++++++++ | |
*********************************************************************..++++++... ............................++++**************************************++++++ | |
*******************************************************************.+++++++... ......... .*************************************** | |
****************************************************************.+++++++... .... ......+++++++++++++++******************************** | |
************************************************************.++++++++.......... ......+++++++++++++++++++++++++******************** | |
*******************************************************.++++++++....++++...... ........++++++++++++++++++++++++++++++++++++*** | |
*************************************************.++++++++...+++++++++..... .......+++++++++++++++++++++++++++++ | |
**************************************..++++++++...+++++++++++++++..... .. . ... ++++++++++++++++ | |
******************...++++.....++++++++++++++++++++++++++++++.......... .... . ........................ | |
++++++++++++++++++++++++++++++++++++++++++++++++++++....................... .......+++++++++++++++++++++++++++++++++++++++++ | |
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++................. ...++++++++++++++++++++++++++++****************** | |
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++............... ...++++++++++++++++++++**************************** | |
+++++++++.+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++............ ...++++++++++++++*********************************** | |
*********++++++++++++++.+++++++++++++++++++++++++++++++++++++++++++++++........... .....+++++++++*************************************** | |
******************+*******+++++.+++++++++++++++++++++++++++++++++++++++++.......... ....+++++++++****************************************** | |
************************************.++++++++++++++++++++++++++++++++++++++........ ....+++++++++********************************************* | |
******************************************+++++++++++++++++++++++++++++++++++...... . ...++++++++*********************************************** | |
***********************************************++++++++++++++++++++++++++++++++..... ....+++++.. ...++++************************************************** | |
**************************************************++++++++++++++++++++++++++++++.... .++++++++++++++******************************************************* | |
****************************************************+++++++++++++++++++++++++++++... ... ......+++++++************************************************************** | |
******************************************************++++++++++++++++++++++++++++.. ... ..........********************************************************************** | |
********************************************************+++++++++++++++++++++++++++. ... ......*************************************************************************** | |
************************************************************+++++++++++++++++++++++..++. ....****************************************************************************** | |
****************************************************************+++++++++++++++++++.+++ ...******************************************************************************** | |
*********************************************************************++++++++++++++++++..********************************************************************************** | |
**************************************************************************++++++++++++..*********************************************************************************** | |
*******************************************************************************+++++++.************************************************************************************ | |
*************************************************************************************+************************************************************************************* | |
*************************************************************************************************************************************************************************** |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment