

===================== parser output ===============================

let x  = (truncate 1.23)
in 
   let y  = (truncate 4.56)
   in 
      let z  = (truncate F.neg(7.89))
      in (print_int ((
         if not((0 <= z))
         then y
         else x + 
         if not((x <= 0))
         then z
         else y) + 
         if not((0 <= y))
         then x
         else z))

===================== typing output ===============================

let x  : int = (truncate 1.23)
in 
   let y  : int = (truncate 4.56)
   in 
      let z  : int = (truncate F.neg(7.89))
      in (print_int ((
         if not((0 <= z))
         then y
         else x + 
         if not((x <= 0))
         then z
         else y) + 
         if not((0 <= y))
         then x
         else z))

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

let x  : int = let Td1  : float = 1.23 in
EXTERN(truncate Td1) in

let y  : int = let Td2  : float = 4.56 in
EXTERN(truncate Td2) in

let z  : int = let Td4  : float = let Td3  : float = 7.89 in
F.neg(Td3) in
EXTERN(truncate Td4) in

let Ti12  : int = let Ti9  : int = let Ti6  : int = let Ti5  : int = 0 in

if Ti5 <= z 
then x
else y in

let Ti8  : int = let Ti7  : int = 0 in

if x <= Ti7 
then y
else z in
(Ti6 + Ti8) in

let Ti11  : int = let Ti10  : int = 0 in

if Ti10 <= y 
then z
else x in
(Ti9 + Ti11) in
EXTERN(print_int Ti12)

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

let x_13  : int = let Td1_27  : float = 1.23 in
EXTERN(truncate Td1_27) in

let y_14  : int = let Td2_26  : float = 4.56 in
EXTERN(truncate Td2_26) in

let z_15  : int = let Td4_24  : float = let Td3_25  : float = 7.89 in
F.neg(Td3_25) in
EXTERN(truncate Td4_24) in

let Ti12_16  : int = let Ti9_17  : int = let Ti6_20  : int = let Ti5_23  : int = 0 in

if Ti5_23 <= z_15 
then x_13
else y_14 in

let Ti8_21  : int = let Ti7_22  : int = 0 in

if x_13 <= Ti7_22 
then y_14
else z_15 in
(Ti6_20 + Ti8_21) in

let Ti11_18  : int = let Ti10_19  : int = 0 in

if Ti10_19 <= y_14 
then z_15
else x_13 in
(Ti9_17 + Ti11_18) in
EXTERN(print_int Ti12_16)

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

let Td1_27  : float = 1.23 in

let x_13  : int = EXTERN(truncate Td1_27) in

let Td2_26  : float = 4.56 in

let y_14  : int = EXTERN(truncate Td2_26) in

let Td4_24  : float = -7.89 in

let z_15  : int = EXTERN(truncate Td4_24) in

let Ti5_23  : int = 0 in

let Ti6_20  : int = 
if Ti5_23 <= z_15 
then x_13
else y_14 in

let Ti7_22  : int = 0 in

let Ti8_21  : int = 
if x_13 <= Ti7_22 
then y_14
else z_15 in

let Ti9_17  : int = (Ti6_20 + Ti8_21) in

let Ti10_19  : int = 0 in

let Ti11_18  : int = 
if Ti10_19 <= y_14 
then z_15
else x_13 in

let Ti12_16  : int = (Ti9_17 + Ti11_18) in
EXTERN(print_int Ti12_16)

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

let Td1_27  : float = 1.23 in

let x_13  : int = APPLY_DIRECT(LABEL(min_caml_truncate) Td1_27) in

let Td2_26  : float = 4.56 in

let y_14  : int = APPLY_DIRECT(LABEL(min_caml_truncate) Td2_26) in

let Td4_24  : float = -7.89 in

let z_15  : int = APPLY_DIRECT(LABEL(min_caml_truncate) Td4_24) in

let Ti5_23  : int = 0 in

let Ti6_20  : int = 
if Ti5_23 <= z_15 
then x_13
else y_14 in

let Ti7_22  : int = 0 in

let Ti8_21  : int = 
if x_13 <= Ti7_22 
then y_14
else z_15 in

let Ti9_17  : int = (Ti6_20 + Ti8_21) in

let Ti10_19  : int = 0 in

let Ti11_18  : int = 
if Ti10_19 <= y_14 
then z_15
else x_13 in

let Ti12_16  : int = (Ti9_17 + Ti11_18) in
APPLY_DIRECT(LABEL(min_caml_print_int) Ti12_16)

===================== virtual  output ===============================
==== Data Segment =======
l_38:	! -7.890000
	.long	0x28f5c28f
	.long	0xc01f8f5c
l_36:	! 4.560000
	.long	0xa3d70a3d
	.long	0x40123d70
l_34:	! 1.230000
	.long	0x7ae147ae
	.long	0x3ff3ae14
==== Function Declarations =======
==== Expression =======

LET(l_35, set(LABEL(l_34)), 
   LET(Td1_27, LdDF(l_35, 0), 
      LET(x_13, CallDirect(LABEL(min_caml_truncate), args=(), farg=(Td1_27)), 
         LET(l_37, set(LABEL(l_36)), 
            LET(Td2_26, LdDF(l_37, 0), 
               LET(y_14, CallDirect(LABEL(min_caml_truncate), args=(), farg=(Td2_26)), 
                  LET(l_39, set(LABEL(l_38)), 
                     LET(Td4_24, LdDF(l_39, 0), 
                        LET(z_15, CallDirect(LABEL(min_caml_truncate), args=(), farg=(Td4_24)), 
                           LET(Ti5_23, set(0), 
                              LET(Ti6_20, 
                                 IfLE(Ti5_23, z_15, 
                                    ANSWER(mov(x_13)), 
                                    ANSWER(mov(y_14))), 
                                 LET(Ti7_22, set(0), 
                                    LET(Ti8_21, 
                                       IfLE(x_13, Ti7_22, 
                                          ANSWER(mov(y_14)), 
                                          ANSWER(mov(z_15))), 
                                       LET(Ti9_17, add(Ti6_20, Ti8_21), 
                                          LET(Ti10_19, set(0), 
                                             LET(Ti11_18, 
                                                IfLE(Ti10_19, y_14, 
                                                   ANSWER(mov(z_15)), 
                                                   ANSWER(mov(x_13))), 
                                                LET(Ti12_16, add(Ti9_17, Ti11_18), 
                                                   ANSWER(CallDirect(LABEL(min_caml_print_int), args=(Ti12_16), farg=())))))))))))))))))))


=====================  simm13  output ===============================
==== Data Segment =======
l_38:	! -7.890000
	.long	0x28f5c28f
	.long	0xc01f8f5c
l_36:	! 4.560000
	.long	0xa3d70a3d
	.long	0x40123d70
l_34:	! 1.230000
	.long	0x7ae147ae
	.long	0x3ff3ae14
==== Function Declarations =======
==== Expression =======

LET(l_35, set(LABEL(l_34)), 
   LET(Td1_27, LdDF(l_35, 0), 
      LET(x_13, CallDirect(LABEL(min_caml_truncate), args=(), farg=(Td1_27)), 
         LET(l_37, set(LABEL(l_36)), 
            LET(Td2_26, LdDF(l_37, 0), 
               LET(y_14, CallDirect(LABEL(min_caml_truncate), args=(), farg=(Td2_26)), 
                  LET(l_39, set(LABEL(l_38)), 
                     LET(Td4_24, LdDF(l_39, 0), 
                        LET(z_15, CallDirect(LABEL(min_caml_truncate), args=(), farg=(Td4_24)), 
                           LET(Ti6_20, 
                              IfGE(z_15, 0, 
                                 ANSWER(mov(x_13)), 
                                 ANSWER(mov(y_14))), 
                              LET(Ti8_21, 
                                 IfLE(x_13, 0, 
                                    ANSWER(mov(y_14)), 
                                    ANSWER(mov(z_15))), 
                                 LET(Ti9_17, add(Ti6_20, Ti8_21), 
                                    LET(Ti11_18, 
                                       IfGE(y_14, 0, 
                                          ANSWER(mov(z_15)), 
                                          ANSWER(mov(x_13))), 
                                       LET(Ti12_16, add(Ti9_17, Ti11_18), 
                                          ANSWER(CallDirect(LABEL(min_caml_print_int), args=(Ti12_16), farg=()))))))))))))))))


===================== RegAlloc output ===============================
==== Data Segment =======
l_38:	! -7.890000
	.long	0x28f5c28f
	.long	0xc01f8f5c
l_36:	! 4.560000
	.long	0xa3d70a3d
	.long	0x40123d70
l_34:	! 1.230000
	.long	0x7ae147ae
	.long	0x3ff3ae14
==== Function Declarations =======
==== Expression =======

LET(%i2, set(LABEL(l_34)), 
   LET(%f0, LdDF(%i2, 0), 
      LET(%i2, CallDirect(LABEL(min_caml_truncate), args=(), farg=(%f0)), 
         LET(%g0, save(%i2, x_13), 
            LET(%i2, set(LABEL(l_36)), 
               LET(%f0, LdDF(%i2, 0), 
                  LET(%i2, CallDirect(LABEL(min_caml_truncate), args=(), farg=(%f0)), 
                     LET(%i2, mov(%i2), 
                        LET(%g0, save(%i2, y_14), 
                           LET(%i2, set(LABEL(l_38)), 
                              LET(%f0, LdDF(%i2, 0), 
                                 LET(%i2, CallDirect(LABEL(min_caml_truncate), args=(), farg=(%f0)), 
                                    LET(%i2, mov(%i2), 
                                       LET(%i3, 
                                          IfGE(%i2, 0, 
                                             LET(%i3, restore(x_13), 
                                                ANSWER(mov(%i3))), 
                                             LET(%i3, restore(y_14), 
                                                ANSWER(mov(%i3)))), 
                                          LET(%i3, mov(%i3), 
                                             LET(%i4, restore(x_13), 
                                                LET(%i4, 
                                                   IfLE(%i4, 0, 
                                                      LET(%i4, restore(y_14), 
                                                         ANSWER(mov(%i4))), 
                                                      ANSWER(mov(%i2))), 
                                                   LET(%i4, mov(%i4), 
                                                      LET(%i3, add(%i3, %i4), 
                                                         LET(%i4, restore(y_14), 
                                                            LET(%i2, 
                                                               IfGE(%i4, 0, 
                                                                  ANSWER(mov(%i2)), 
                                                                  LET(%i2, restore(x_13), 
                                                                     ANSWER(mov(%i2)))), 
                                                               LET(%i2, add(%i3, %i2), 
                                                                  ANSWER(CallDirect(LABEL(min_caml_print_int), args=(%i2), farg=()))))))))))))))))))))))))


===================== Emit output ===============================
.section	".rodata"
.align	8
l_38:	! -7.890000
	.long	0x28f5c28f
	.long	0xc01f8f5c
l_36:	! 4.560000
	.long	0xa3d70a3d
	.long	0x40123d70
l_34:	! 1.230000
	.long	0x7ae147ae
	.long	0x3ff3ae14
.section	".text"
.global	min_caml_start
min_caml_start:
	save	%sp, -112, %sp
	set	l_34, %i2
	ldd	[%i2 + 0], %f0
	st	%o7, [%i0 + 4]
	call	min_caml_truncate
	add	%i0, 8, %i0	! delay slot
	sub	%i0, 8, %i0
	ld	[%i0 + 4], %o7
	st	%i2, [%i0 + 0]
	set	l_36, %i2
	ldd	[%i2 + 0], %f0
	st	%o7, [%i0 + 4]
	call	min_caml_truncate
	add	%i0, 8, %i0	! delay slot
	sub	%i0, 8, %i0
	ld	[%i0 + 4], %o7
	st	%i2, [%i0 + 4]
	set	l_38, %i2
	ldd	[%i2 + 0], %f0
	st	%o7, [%i0 + 12]
	call	min_caml_truncate
	add	%i0, 16, %i0	! delay slot
	sub	%i0, 16, %i0
	ld	[%i0 + 12], %o7
	cmp	%i2, 0
	bl	bge_else_47
	nop
	ld	[%i0 + 0], %i3
	b	bge_cont_48
	nop
bge_else_47:
	ld	[%i0 + 4], %i3
bge_cont_48:
	ld	[%i0 + 0], %i4
	cmp	%i4, 0
	bg	ble_else_49
	nop
	ld	[%i0 + 4], %i4
	b	ble_cont_50
	nop
ble_else_49:
	mov	%i2, %i4
ble_cont_50:
	add	%i3, %i4, %i3
	ld	[%i0 + 4], %i4
	cmp	%i4, 0
	bl	bge_else_51
	nop
	b	bge_cont_52
	nop
bge_else_51:
	ld	[%i0 + 0], %i2
bge_cont_52:
	add	%i3, %i2, %i2
	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
