/*
** Automatically generated from `tak.m' by the
** Mercury compiler, version 0.5-beta. Do not edit.
*/
/*
INIT mercury__tak__init
ENDINIT
*/
#include "imp.h"
Define_extern_entry(mercury__benchmark_1_0);
Declare_label(mercury__benchmark_1_0_i3);
Define_extern_entry(mercury__main_2_0);
Declare_label(mercury__main_2_0_i3);
Declare_label(mercury__main_2_0_i4);
Declare_label(mercury__main_2_0_i5);
Declare_local(mercury__tak_4_0_l);
Declare_label(mercury__tak_4_0_i1000);
Declare_label(mercury__tak_4_0_i5);
Declare_label(mercury__tak_4_0_i6);
Declare_label(mercury__tak_4_0_i7);
BEGIN_MODULE(mercury__tak_module)
init_entry(mercury__benchmark_1_0);
init_label(mercury__benchmark_1_0_i3);
init_entry(mercury__main_2_0);
init_label(mercury__main_2_0_i3);
init_label(mercury__main_2_0_i4);
init_label(mercury__main_2_0_i5);
init_local(mercury__tak_4_0_l);
init_label(mercury__tak_4_0_i1000);
init_label(mercury__tak_4_0_i5);
init_label(mercury__tak_4_0_i6);
init_label(mercury__tak_4_0_i7);
BEGIN_CODE
/*-------------------------------------------------------------------------*/
/* code for predicate benchmark/1 in mode 0 */
/* Start of procedure prologue */
/*
Stack slot assignments (if any):
*/
Define_entry(mercury__benchmark_1_0);
/* Procedure entry point */
/* End of procedure prologue */
{ r1 = 18; }
/* Assigning from variable number 3 */
{ r2 = 12; }
/* Assigning from variable number 4 */
{ r3 = 6; }
/* Assigning from variable number 5 */
incr_sp(1);
/* late setup */
{ detstackvar(1) = (Integer) succip; }
/* late save */
{ localcall(mercury__tak_4_0_l,
LABEL(mercury__benchmark_1_0_i3),
LABEL(mercury__benchmark_1_0)); }
/*
* Garbage collection livevals info
* detstackvar(1) succip
* r4 num(2)
*/
/* branch to det procedure */
Define_label(mercury__benchmark_1_0_i3);
update_prof_current_proc(LABEL(mercury__benchmark_1_0));
/* Continuation label */
{ r1 = (Integer) r4; }
/* Assigning from HeadVar__1 */
{ LVALUE_CAST(Word,succip) = (Integer) detstackvar(1); }
/* restore the success ip */
decr_sp(1);
/* Deallocate stack frame */
/*
* Live lvalues:
* r1
*/
{ proceed(); }
/* Return from procedure call */
/*-------------------------------------------------------------------------*/
/* code for predicate main/2 in mode 0 */
/* Start of procedure prologue */
/*
Stack slot assignments (if any):
DCG_0 -> stackvar(1)
*/
Define_entry(mercury__main_2_0);
incr_sp(2);
/* late setup */
{ detstackvar(2) = (Integer) succip; }
/* late save */
{ detstackvar(1) = (Integer) r1; }
/* vn flush */
{ r1 = 18; }
/* vn flush */
{ r2 = 12; }
/* vn flush */
{ r3 = 6; }
/* vn flush */
/*
* Live lvalues:
* r1
* r2
* r3
* detstackvar(1)
* detstackvar(2)
*/
{ localcall(mercury__tak_4_0_l,
LABEL(mercury__main_2_0_i3),
LABEL(mercury__main_2_0)); }
/*
* Garbage collection livevals info
* detstackvar(2) succip
* r4 num(2)
* detstackvar(1) num(7)
*/
Define_label(mercury__main_2_0_i3);
update_prof_current_proc(LABEL(mercury__main_2_0));
/* Continuation label */
{ r1 = (Integer) r4; }
/* Assigning from Out */
{ r2 = (Integer) detstackvar(1); }
/* Assigning from DCG_0 */
/*
* Live lvalues:
* r1
* r2
* detstackvar(2)
*/
{ Declare_entry(mercury__io__write_int_3_0);
call(ENTRY(mercury__io__write_int_3_0),
LABEL(mercury__main_2_0_i4),
LABEL(mercury__main_2_0)); }
/*
* Garbage collection livevals info
* detstackvar(2) succip
* r3 num(7)
*/
/* branch to det procedure */
Define_label(mercury__main_2_0_i4);
update_prof_current_proc(LABEL(mercury__main_2_0));
/* Continuation label */
{ r1 = string_const("\n", 1); }
/* Assigning from variable number 7 */
{ r2 = (Integer) r3; }
/* Assigning from DCG_1 */
/*
* Live lvalues:
* r1
* r2
* detstackvar(2)
*/
{ Declare_entry(mercury__io__write_string_3_0);
call(ENTRY(mercury__io__write_string_3_0),
LABEL(mercury__main_2_0_i5),
LABEL(mercury__main_2_0)); }
/*
* Garbage collection livevals info
* detstackvar(2) succip
* r3 num(7)
*/
/* branch to det procedure */
Define_label(mercury__main_2_0_i5);
update_prof_current_proc(LABEL(mercury__main_2_0));
/* Continuation label */
{ r2 = (Integer) r3; }
/* Assigning from HeadVar__2 */
{ LVALUE_CAST(Word,succip) = (Integer) detstackvar(2); }
/* restore the success ip */
decr_sp(2);
/* Deallocate stack frame */
/*
* Live lvalues:
* r2
*/
{ proceed(); }
/* Return from procedure call */
/*-------------------------------------------------------------------------*/
/* code for predicate tak/4 in mode 0 */
/* Start of procedure prologue */
/*
Stack slot assignments (if any):
A2 -> stackvar(1)
A1 -> stackvar(2)
Y -> stackvar(1)
X -> stackvar(3)
Z -> stackvar(4)
*/
Define_local(mercury__tak_4_0_l);
/* Procedure entry point */
/* End of procedure prologue */
{ r4 = (Integer) r3; }
/* Assigning from HeadVar__4 */
{ if (((Integer) r1 <= (Integer) r2))
proceed(); }
/* shortcircuit */
Define_label(mercury__tak_4_0_i1000);
/* label for late setup code */
incr_sp(5);
/* late setup */
{ detstackvar(5) = (Integer) succip; }
/* late save */
{ detstackvar(3) = (Integer) r1; }
/* vn flush */
{ r1 = ((Integer) r1 - 1); }
/* vn flush */
{ detstackvar(1) = (Integer) r2; }
/* vn flush */
{ detstackvar(4) = (Integer) r3; }
/* vn flush */
/*
* Live lvalues:
* r1
* r2
* r3
* detstackvar(1)
* detstackvar(3)
* detstackvar(4)
* detstackvar(5)
*/
{ localcall(mercury__tak_4_0_l,
LABEL(mercury__tak_4_0_i5),
LABEL(mercury__tak_4_0_l)); }
/*
* Garbage collection livevals info
* detstackvar(5) succip
* r4 num(2)
* detstackvar(1) num(2)
* detstackvar(3) num(2)
* detstackvar(4) num(2)
*/
Define_label(mercury__tak_4_0_i5);
update_prof_current_proc(LABEL(mercury__tak_4_0_l));
/* Continuation label */
{ detstackvar(2) = (Integer) r4; }
/* Assigning from A1 */
{ r1 = ((Integer) detstackvar(1) - 1); }
/* Assigning from Y1 */
{ r2 = (Integer) detstackvar(4); }
/* Assigning from Z */
{ r3 = (Integer) detstackvar(3); }
/* Assigning from X */
/*
* Live lvalues:
* r1
* r2
* r3
* detstackvar(1)
* detstackvar(2)
* detstackvar(3)
* detstackvar(4)
* detstackvar(5)
*/
{ localcall(mercury__tak_4_0_l,
LABEL(mercury__tak_4_0_i6),
LABEL(mercury__tak_4_0_l)); }
/*
* Garbage collection livevals info
* detstackvar(5) succip
* r4 num(2)
* detstackvar(1) num(2)
* detstackvar(2) num(2)
* detstackvar(3) num(2)
* detstackvar(4) num(2)
*/
/* branch to det procedure */
Define_label(mercury__tak_4_0_i6);
update_prof_current_proc(LABEL(mercury__tak_4_0_l));
{ r3 = (Integer) detstackvar(1); }
/* vn flush */
{ r1 = ((Integer) detstackvar(4) - 1); }
/* vn flush */
{ r2 = (Integer) detstackvar(3); }
/* vn flush */
{ detstackvar(1) = (Integer) r4; }
/* vn flush */
/*
* Live lvalues:
* r1
* r2
* r3
* detstackvar(1)
* detstackvar(2)
* detstackvar(5)
*/
{ localcall(mercury__tak_4_0_l,
LABEL(mercury__tak_4_0_i7),
LABEL(mercury__tak_4_0_l)); }
/*
* Garbage collection livevals info
* detstackvar(5) succip
* r4 num(2)
* detstackvar(1) num(2)
* detstackvar(2) num(2)
*/
Define_label(mercury__tak_4_0_i7);
update_prof_current_proc(LABEL(mercury__tak_4_0_l));
/* Continuation label */
{ r1 = (Integer) detstackvar(2); }
/* Assigning from A1 */
{ r2 = (Integer) detstackvar(1); }
/* Assigning from A2 */
{ r3 = (Integer) r4; }
/* Assigning from A3 */
{ LVALUE_CAST(Word,succip) = (Integer) detstackvar(5); }
/* restore the success ip */
decr_sp(5);
/* Deallocate stack frame */
{ r4 = (Integer) r3; }
/* Assigning from HeadVar__4 */
{ if (((Integer) r1 > (Integer) r2))
GOTO_LABEL(mercury__tak_4_0_i1000); }
/* jump to setup */
/*
* Live lvalues:
* r4
*/
{ proceed(); }
/* shortcircuit */
END_MODULE
#if (defined(USE_GCC_NONLOCAL_GOTOS) && !defined(USE_ASM_LABELS)) \
|| defined(PROFILE_CALLS) || defined(DEBUG_GOTOS) \
|| defined(DEBUG_LABELS) || !defined(SPEED)
static void mercury__tak_bunch_0(void)
{
mercury__tak_module();
}
#endif
void mercury__tak__init(void); /* suppress gcc warning */
void mercury__tak__init(void)
{
#if (defined(USE_GCC_NONLOCAL_GOTOS) && !defined(USE_ASM_LABELS)) \
|| defined(PROFILE_CALLS) || defined(DEBUG_GOTOS) \
|| defined(DEBUG_LABELS) || !defined(SPEED)
mercury__tak_bunch_0();
#endif
}