

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

let Tu2  : unit = (print_int 123)
in 
   let Tu1  : unit = (print_int I.neg(456))
   in (print_int (789 + 0))

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

let Tu2  : unit = (print_int 123)
in 
   let Tu1  : unit = (print_int I.neg(456))
   in (print_int (789 + 0))

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

let Tu2  : unit = let Ti3  : int = 123 in
EXTERN(print_int Ti3) in

let Tu1  : unit = let Ti5  : int = let Ti4  : int = 456 in
I.neg(Ti4) in
EXTERN(print_int Ti5) in

let Ti8  : int = let Ti6  : int = 789 in

let Ti7  : int = 0 in
(Ti6 + Ti7) in
EXTERN(print_int Ti8)

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

let Tu2_9  : unit = let Ti3_16  : int = 123 in
EXTERN(print_int Ti3_16) in

let Tu1_10  : unit = let Ti5_14  : int = let Ti4_15  : int = 456 in
I.neg(Ti4_15) in
EXTERN(print_int Ti5_14) in

let Ti8_11  : int = let Ti6_12  : int = 789 in

let Ti7_13  : int = 0 in
(Ti6_12 + Ti7_13) in
EXTERN(print_int Ti8_11)

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

let Ti3_16  : int = 123 in

let Tu2_9  : unit = EXTERN(print_int Ti3_16) in

let Ti5_14  : int = -456 in

let Tu1_10  : unit = EXTERN(print_int Ti5_14) in

let Ti8_11  : int = 789 in
EXTERN(print_int Ti8_11)

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

let Ti3_16  : int = 123 in

let Tu2_9  : unit = APPLY_DIRECT(LABEL(min_caml_print_int) Ti3_16) in

let Ti5_14  : int = -456 in

let Tu1_10  : unit = APPLY_DIRECT(LABEL(min_caml_print_int) Ti5_14) in

let Ti8_11  : int = 789 in
APPLY_DIRECT(LABEL(min_caml_print_int) Ti8_11)

===================== virtual  output ===============================
==== Data Segment =======
==== Function Declarations =======
==== Expression =======

LET(Ti3_16, set(123), 
   LET(Tu2_9, CallDirect(LABEL(min_caml_print_int), args=(Ti3_16), farg=()), 
      LET(Ti5_14, set(-456), 
         LET(Tu1_10, CallDirect(LABEL(min_caml_print_int), args=(Ti5_14), farg=()), 
            LET(Ti8_11, set(789), 
               ANSWER(CallDirect(LABEL(min_caml_print_int), args=(Ti8_11), farg=())))))))


=====================  simm13  output ===============================
==== Data Segment =======
==== Function Declarations =======
==== Expression =======

LET(Ti3_16, set(123), 
   LET(Tu2_9, CallDirect(LABEL(min_caml_print_int), args=(Ti3_16), farg=()), 
      LET(Ti5_14, set(-456), 
         LET(Tu1_10, CallDirect(LABEL(min_caml_print_int), args=(Ti5_14), farg=()), 
            LET(Ti8_11, set(789), 
               ANSWER(CallDirect(LABEL(min_caml_print_int), args=(Ti8_11), farg=())))))))


===================== RegAlloc output ===============================
==== Data Segment =======
==== Function Declarations =======
==== Expression =======

LET(%i2, set(123), 
   LET(%g0, CallDirect(LABEL(min_caml_print_int), args=(%i2), farg=()), 
      LET(%i2, set(-456), 
         LET(%g0, CallDirect(LABEL(min_caml_print_int), args=(%i2), farg=()), 
            LET(%i2, set(789), 
               ANSWER(CallDirect(LABEL(min_caml_print_int), args=(%i2), farg=())))))))


===================== Emit output ===============================
.section	".rodata"
.align	8
.section	".text"
.global	min_caml_start
min_caml_start:
	save	%sp, -112, %sp
	set	123, %i2
	st	%o7, [%i0 + 4]
	call	min_caml_print_int
	add	%i0, 8, %i0	! delay slot
	sub	%i0, 8, %i0
	ld	[%i0 + 4], %o7
	set	-456, %i2
	st	%o7, [%i0 + 4]
	call	min_caml_print_int
	add	%i0, 8, %i0	! delay slot
	sub	%i0, 8, %i0
	ld	[%i0 + 4], %o7
	set	789, %i2
	st	%o7, [%i0 + 4]
	call	min_caml_print_int
	add	%i0, 8, %i0	! delay slot
	sub	%i0, 8, %i0
	ld	[%i0 + 4], %o7
	ret
	restore
