

===================== parser output ===============================
(print_int (int_of_float ((((sin (cos (sqrt (abs_float -12.3)))) +. 4.5) -. ((6.7 *. 8.9) /. 1.23456789)) *. (float_of_int 1000000))))

===================== typing output ===============================
(print_int (int_of_float ((((sin (cos (sqrt (abs_float -12.3)))) +. 4.5) -. ((6.7 *. 8.9) /. 1.23456789)) *. (float_of_int 1000000))))

===================== knormal output ===============================

let Ti17  : int = let Td16  : float = let Td13  : float = let Td7  : float = let Td5  : float = let Ti4  : int = let Ti3  : int = let Ti2  : int = let Td1  : float = -12.3 in
EXTERN(abs_float Td1) in
EXTERN(sqrt Ti2) in
EXTERN(cos Ti3) in
EXTERN(sin Ti4) in

let Td6  : float = 4.5 in
(Td5 +. Td6) in

let Td12  : float = let Td10  : float = let Td8  : float = 6.7 in

let Td9  : float = 8.9 in
(Td8 *. Td9) in

let Td11  : float = 1.23456789 in
(Td10 /. Td11) in
(Td7 -. Td12) in

let Td15  : float = let Ti14  : int = 1000000 in
EXTERN(float_of_int Ti14) in
(Td13 *. Td15) in
EXTERN(int_of_float Td16) in
EXTERN(print_int Ti17)

===================== alpha output ===============================

let Ti17_18  : int = let Td16_19  : float = let Td13_20  : float = let Td7_23  : float = let Td5_29  : float = let Ti4_31  : int = let Ti3_32  : int = let Ti2_33  : int = let Td1_34  : float = -12.3 in
EXTERN(abs_float Td1_34) in
EXTERN(sqrt Ti2_33) in
EXTERN(cos Ti3_32) in
EXTERN(sin Ti4_31) in

let Td6_30  : float = 4.5 in
(Td5_29 +. Td6_30) in

let Td12_24  : float = let Td10_25  : float = let Td8_27  : float = 6.7 in

let Td9_28  : float = 8.9 in
(Td8_27 *. Td9_28) in

let Td11_26  : float = 1.23456789 in
(Td10_25 /. Td11_26) in
(Td7_23 -. Td12_24) in

let Td15_21  : float = let Ti14_22  : int = 1000000 in
EXTERN(float_of_int Ti14_22) in
(Td13_20 *. Td15_21) in
EXTERN(int_of_float Td16_19) in
EXTERN(print_int Ti17_18)

===================== simplify output ===============================

let Td1_34  : float = -12.3 in

let Ti2_33  : int = EXTERN(abs_float Td1_34) in

let Ti3_32  : int = EXTERN(sqrt Ti2_33) in

let Ti4_31  : int = EXTERN(cos Ti3_32) in

let Td5_29  : float = EXTERN(sin Ti4_31) in

let Td6_30  : float = 4.5 in

let Td7_23  : float = (Td5_29 +. Td6_30) in

let Td12_24  : float = 48.3003004395 in

let Td13_20  : float = (Td7_23 -. Td12_24) in

let Ti14_22  : int = 1000000 in

let Td15_21  : float = EXTERN(float_of_int Ti14_22) in

let Td16_19  : float = (Td13_20 *. Td15_21) in

let Ti17_18  : int = EXTERN(int_of_float Td16_19) in
EXTERN(print_int Ti17_18)

===================== closure output ===============================

let Td1_34  : float = -12.3 in

let Ti2_33  : int = APPLY_DIRECT(LABEL(min_caml_abs_float) Td1_34) in

let Ti3_32  : int = APPLY_DIRECT(LABEL(min_caml_sqrt) Ti2_33) in

let Ti4_31  : int = APPLY_DIRECT(LABEL(min_caml_cos) Ti3_32) in

let Td5_29  : float = APPLY_DIRECT(LABEL(min_caml_sin) Ti4_31) in

let Td6_30  : float = 4.5 in

let Td7_23  : float = (Td5_29 +. Td6_30) in

let Td12_24  : float = 48.3003004395 in

let Td13_20  : float = (Td7_23 -. Td12_24) in

let Ti14_22  : int = 1000000 in

let Td15_21  : float = APPLY_DIRECT(LABEL(min_caml_float_of_int) Ti14_22) in

let Td16_19  : float = (Td13_20 *. Td15_21) in

let Ti17_18  : int = APPLY_DIRECT(LABEL(min_caml_int_of_float) Td16_19) in
APPLY_DIRECT(LABEL(min_caml_print_int) Ti17_18)

===================== virtual  output ===============================
==== Data Segment =======
l_39:	! 48.300300
	.long	0x3eab623f
	.long	0x40482670
l_37:	! 4.500000
	.long	0x0
	.long	0x40120000
l_35:	! -12.300000
	.long	0x9999999a
	.long	0xc0289999
==== Function Declarations =======
==== Expression =======

LET(l_36, set(LABEL(l_35)), 
   LET(Td1_34, LdDF(l_36, 0), 
      LET(Ti2_33, CallDirect(LABEL(min_caml_abs_float), args=(), farg=(Td1_34)), 
         LET(Ti3_32, CallDirect(LABEL(min_caml_sqrt), args=(Ti2_33), farg=()), 
            LET(Ti4_31, CallDirect(LABEL(min_caml_cos), args=(Ti3_32), farg=()), 
               LET(Td5_29, CallDirect(LABEL(min_caml_sin), args=(Ti4_31), farg=()), 
                  LET(l_38, set(LABEL(l_37)), 
                     LET(Td6_30, LdDF(l_38, 0), 
                        LET(Td7_23, fadd(Td5_29, Td6_30), 
                           LET(l_40, set(LABEL(l_39)), 
                              LET(Td12_24, LdDF(l_40, 0), 
                                 LET(Td13_20, fsub(Td7_23, Td12_24), 
                                    LET(Ti14_22, set(1000000), 
                                       LET(Td15_21, CallDirect(LABEL(min_caml_float_of_int), args=(Ti14_22), farg=()), 
                                          LET(Td16_19, fmul(Td13_20, Td15_21), 
                                             LET(Ti17_18, CallDirect(LABEL(min_caml_int_of_float), args=(), farg=(Td16_19)), 
                                                ANSWER(CallDirect(LABEL(min_caml_print_int), args=(Ti17_18), farg=()))))))))))))))))))


=====================  simm13  output ===============================
==== Data Segment =======
l_39:	! 48.300300
	.long	0x3eab623f
	.long	0x40482670
l_37:	! 4.500000
	.long	0x0
	.long	0x40120000
l_35:	! -12.300000
	.long	0x9999999a
	.long	0xc0289999
==== Function Declarations =======
==== Expression =======

LET(l_36, set(LABEL(l_35)), 
   LET(Td1_34, LdDF(l_36, 0), 
      LET(Ti2_33, CallDirect(LABEL(min_caml_abs_float), args=(), farg=(Td1_34)), 
         LET(Ti3_32, CallDirect(LABEL(min_caml_sqrt), args=(Ti2_33), farg=()), 
            LET(Ti4_31, CallDirect(LABEL(min_caml_cos), args=(Ti3_32), farg=()), 
               LET(Td5_29, CallDirect(LABEL(min_caml_sin), args=(Ti4_31), farg=()), 
                  LET(l_38, set(LABEL(l_37)), 
                     LET(Td6_30, LdDF(l_38, 0), 
                        LET(Td7_23, fadd(Td5_29, Td6_30), 
                           LET(l_40, set(LABEL(l_39)), 
                              LET(Td12_24, LdDF(l_40, 0), 
                                 LET(Td13_20, fsub(Td7_23, Td12_24), 
                                    LET(Ti14_22, set(1000000), 
                                       LET(Td15_21, CallDirect(LABEL(min_caml_float_of_int), args=(Ti14_22), farg=()), 
                                          LET(Td16_19, fmul(Td13_20, Td15_21), 
                                             LET(Ti17_18, CallDirect(LABEL(min_caml_int_of_float), args=(), farg=(Td16_19)), 
                                                ANSWER(CallDirect(LABEL(min_caml_print_int), args=(Ti17_18), farg=()))))))))))))))))))


===================== RegAlloc output ===============================
==== Data Segment =======
l_39:	! 48.300300
	.long	0x3eab623f
	.long	0x40482670
l_37:	! 4.500000
	.long	0x0
	.long	0x40120000
l_35:	! -12.300000
	.long	0x9999999a
	.long	0xc0289999
==== Function Declarations =======
==== Expression =======

LET(%i2, set(LABEL(l_35)), 
   LET(%f0, LdDF(%i2, 0), 
      LET(%i2, CallDirect(LABEL(min_caml_abs_float), args=(), farg=(%f0)), 
         LET(%i2, CallDirect(LABEL(min_caml_sqrt), args=(%i2), farg=()), 
            LET(%i2, CallDirect(LABEL(min_caml_cos), args=(%i2), farg=()), 
               LET(%f0, CallDirect(LABEL(min_caml_sin), args=(%i2), farg=()), 
                  LET(%i2, set(LABEL(l_37)), 
                     LET(%f2, LdDF(%i2, 0), 
                        LET(%f0, fadd(%f0, %f2), 
                           LET(%i2, set(LABEL(l_39)), 
                              LET(%f2, LdDF(%i2, 0), 
                                 LET(%f0, fsub(%f0, %f2), 
                                    LET(%g0, save(%f0, Td13_20), 
                                       LET(%i2, set(1000000), 
                                          LET(%f0, CallDirect(LABEL(min_caml_float_of_int), args=(%i2), farg=()), 
                                             LET(%f0, fmovd(%f0), 
                                                LET(%f2, restore(Td13_20), 
                                                   LET(%f0, fmul(%f2, %f0), 
                                                      LET(%i2, CallDirect(LABEL(min_caml_int_of_float), args=(), farg=(%f0)), 
                                                         ANSWER(CallDirect(LABEL(min_caml_print_int), args=(%i2), farg=())))))))))))))))))))))


===================== Emit output ===============================
.section	".rodata"
.align	8
l_39:	! 48.300300
	.long	0x3eab623f
	.long	0x40482670
l_37:	! 4.500000
	.long	0x0
	.long	0x40120000
l_35:	! -12.300000
	.long	0x9999999a
	.long	0xc0289999
.section	".text"
.global	min_caml_start
min_caml_start:
	save	%sp, -112, %sp
	set	l_35, %i2
	ldd	[%i2 + 0], %f0
	st	%o7, [%i0 + 4]
	call	min_caml_abs_float
	add	%i0, 8, %i0	! delay slot
	sub	%i0, 8, %i0
	ld	[%i0 + 4], %o7
	st	%o7, [%i0 + 4]
	call	min_caml_sqrt
	add	%i0, 8, %i0	! delay slot
	sub	%i0, 8, %i0
	ld	[%i0 + 4], %o7
	st	%o7, [%i0 + 4]
	call	min_caml_cos
	add	%i0, 8, %i0	! delay slot
	sub	%i0, 8, %i0
	ld	[%i0 + 4], %o7
	st	%o7, [%i0 + 4]
	call	min_caml_sin
	add	%i0, 8, %i0	! delay slot
	sub	%i0, 8, %i0
	ld	[%i0 + 4], %o7
	set	l_37, %i2
	ldd	[%i2 + 0], %f2
	faddd	%f0, %f2, %f0
	set	l_39, %i2
	ldd	[%i2 + 0], %f2
	fsubd	%f0, %f2, %f0
	std	%f0, [%i0 + 0]
	set	1000000, %i2
	st	%o7, [%i0 + 12]
	call	min_caml_float_of_int
	add	%i0, 16, %i0	! delay slot
	sub	%i0, 16, %i0
	ld	[%i0 + 12], %o7
	ldd	[%i0 + 0], %f2
	fmuld	%f2, %f0, %f0
	st	%o7, [%i0 + 12]
	call	min_caml_int_of_float
	add	%i0, 16, %i0	! delay slot
	sub	%i0, 16, %i0
	ld	[%i0 + 12], %o7
	st	%o7, [%i0 + 12]
	call	min_caml_print_int
	add	%i0, 16, %i0	! delay slot
	sub	%i0, 16, %i0
	ld	[%i0 + 12], %o7
	ret
	restore
