/* ** Automatically generated from `primes.m' by the ** Mercury compiler, version 0.5-beta. Do not edit. */ /* INIT mercury__primes__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_local(mercury__data_1_0_l); Declare_local(mercury__primes_2_0_l); Declare_label(mercury__primes_2_0_i3); Declare_local(mercury__integers_3_0_l); Declare_label(mercury__integers_3_0_i5); Declare_label(mercury__integers_3_0_i1000); Declare_local(mercury__sift_2_0_l); Declare_label(mercury__sift_2_0_i5); Declare_label(mercury__sift_2_0_i6); Declare_label(mercury__sift_2_0_i1000); Declare_local(mercury__remove_3_0_l); Declare_label(mercury__remove_3_0_i8); Declare_label(mercury__remove_3_0_i10); Declare_label(mercury__remove_3_0_i4); Declare_label(mercury__remove_3_0_i1000); Declare_label(mercury__remove_3_0_i1001); BEGIN_MODULE(mercury__primes_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_local(mercury__data_1_0_l); init_local(mercury__primes_2_0_l); init_label(mercury__primes_2_0_i3); init_local(mercury__integers_3_0_l); init_label(mercury__integers_3_0_i5); init_label(mercury__integers_3_0_i1000); init_local(mercury__sift_2_0_l); init_label(mercury__sift_2_0_i5); init_label(mercury__sift_2_0_i6); init_label(mercury__sift_2_0_i1000); init_local(mercury__remove_3_0_l); init_label(mercury__remove_3_0_i8); init_label(mercury__remove_3_0_i10); init_label(mercury__remove_3_0_i4); init_label(mercury__remove_3_0_i1000); init_label(mercury__remove_3_0_i1001); 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 = 98; } /* Assigning from Data */ incr_sp(1); /* late setup */ { detstackvar(1) = (Integer) succip; } /* late save */ { localcall(mercury__primes_2_0_l, LABEL(mercury__benchmark_1_0_i3), LABEL(mercury__benchmark_1_0)); } /* * Garbage collection livevals info * detstackvar(1) succip * r2 num(7) */ /* branch to det procedure */ Define_label(mercury__benchmark_1_0_i3); update_prof_current_proc(LABEL(mercury__benchmark_1_0)); /* Continuation label */ { r1 = (Integer) r2; } /* 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); /* Procedure entry point */ /* End of procedure prologue */ incr_sp(2); /* late setup */ { detstackvar(2) = (Integer) succip; } /* late save */ { detstackvar(1) = (Integer) r1; } /* Assigning from DCG_0 */ /* * Live lvalues: * detstackvar(1) * detstackvar(2) */ { localcall(mercury__benchmark_1_0, LABEL(mercury__main_2_0_i3), LABEL(mercury__main_2_0)); } /* * Garbage collection livevals info * detstackvar(2) succip * r1 num(7) * detstackvar(1) num(8) */ /* branch to det procedure */ Define_label(mercury__main_2_0_i3); update_prof_current_proc(LABEL(mercury__main_2_0)); /* Continuation label */ { r2 = (Integer) detstackvar(1); } /* Assigning from DCG_0 */ /* * Live lvalues: * r1 * r2 * detstackvar(2) */ { Declare_entry(mercury__print_list_3_0); call(ENTRY(mercury__print_list_3_0), LABEL(mercury__main_2_0_i4), LABEL(mercury__main_2_0)); } /* * Garbage collection livevals info * detstackvar(2) succip * r3 num(8) */ /* branch to det procedure */ Define_label(mercury__main_2_0_i4); 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 data/1 in mode 0 */ /* Start of procedure prologue */ /* Stack slot assignments (if any): */ Define_local(mercury__data_1_0_l); /* Procedure entry point */ /* End of procedure prologue */ /* Start of procedure epilogue */ { r1 = 98; } /* Assigning from HeadVar__1 */ /* End of procedure epilogue */ /* * Live lvalues: * r1 */ { proceed(); } /* Return from procedure call */ /*-------------------------------------------------------------------------*/ /* code for predicate primes/2 in mode 0 */ /* Start of procedure prologue */ /* Stack slot assignments (if any): */ Define_local(mercury__primes_2_0_l); /* Procedure entry point */ /* End of procedure prologue */ { r2 = (Integer) r1; } /* shuffle lval */ { r1 = 2; } /* Assigning from variable number 6 */ incr_sp(1); /* late setup */ { detstackvar(1) = (Integer) succip; } /* late save */ { localcall(mercury__integers_3_0_l, LABEL(mercury__primes_2_0_i3), LABEL(mercury__primes_2_0_l)); } /* * Garbage collection livevals info * detstackvar(1) succip * r3 num(7) */ /* branch to det procedure */ Define_label(mercury__primes_2_0_i3); update_prof_current_proc(LABEL(mercury__primes_2_0_l)); /* Continuation label */ { r1 = (Integer) r3; } /* Assigning from Is */ { LVALUE_CAST(Word,succip) = (Integer) detstackvar(1); } /* restore the success ip */ decr_sp(1); /* Deallocate stack frame */ /* * Live lvalues: * r1 * detstackvar(1) */ { localtailcall(mercury__sift_2_0_l, LABEL(mercury__primes_2_0_l)); } /* branch to det procedure (redirected return) */ /*-------------------------------------------------------------------------*/ /* code for predicate integers/3 in mode 0 */ /* Start of procedure prologue */ /* Stack slot assignments (if any): Low -> stackvar(1) High -> stackvar(2) */ Define_local(mercury__integers_3_0_l); /* Procedure entry point */ /* End of procedure prologue */ { detstackvar(0) = (Integer) succip; } /* late save */ { if (((Integer) r1 > (Integer) r2)) GOTO_LABEL(mercury__integers_3_0_i1000); } /* Test for failure (teardown redirect) */ incr_sp(3); /* late setup after succip */ { detstackvar(1) = (Integer) r1; } /* Assigning from Low */ { r3 = (Integer) r1; } /* shuffle lval */ { r1 = ((Integer) r3 + 1); } /* Assigning from M */ /* * Live lvalues: * r1 * r2 * detstackvar(1) * detstackvar(3) */ { localcall(mercury__integers_3_0_l, LABEL(mercury__integers_3_0_i5), LABEL(mercury__integers_3_0_l)); } /* * Garbage collection livevals info * detstackvar(3) succip * r3 num(7) * detstackvar(1) num(2) */ /* branch to det procedure */ Define_label(mercury__integers_3_0_i5); update_prof_current_proc(LABEL(mercury__integers_3_0_l)); /* Continuation label */ { r1 = (Integer) r3; } /* shuffle lval */ { tag_incr_hp(r3, mktag(1), 2); } /* Allocating heap for HeadVar__3 */ { field(mktag(1), (Integer) r3, 0) = (Integer) detstackvar(1); } /* Assigning from */ { field(mktag(1), (Integer) r3, 1) = (Integer) r1; } /* Assigning from */ { LVALUE_CAST(Word,succip) = (Integer) detstackvar(3); } /* restore the success ip */ decr_sp(3); /* Deallocate stack frame */ /* * Live lvalues: * r3 */ { proceed(); } /* shortcircuit */ Define_label(mercury__integers_3_0_i1000); /* non-teardown parallel label */ { r3 = (Integer) mkword(mktag(0), mkbody(0)); } /* Assigning from HeadVar__3 */ /* * Live lvalues: * r3 */ { proceed(); } /* Return from procedure call */ /*-------------------------------------------------------------------------*/ /* code for predicate sift/2 in mode 0 */ /* Start of procedure prologue */ /* Stack slot assignments (if any): I -> stackvar(1) */ Define_local(mercury__sift_2_0_l); { detstackvar(0) = (Integer) succip; } /* late save */ { if (((Integer) r1 == (Integer) mkword(mktag(0), mkbody(0)))) GOTO_LABEL(mercury__sift_2_0_i1000); } /* (teardown redirect) */ incr_sp(2); /* late setup after succip */ { r2 = (Integer) field(mktag(1), (Integer) r1, 1); } /* vn flush */ { r1 = (Integer) field(mktag(1), (Integer) r1, 0); } /* vn flush */ { detstackvar(1) = (Integer) r1; } /* vn flush */ /* * Live lvalues: * r1 * r2 * detstackvar(1) * detstackvar(2) */ { localcall(mercury__remove_3_0_l, LABEL(mercury__sift_2_0_i5), LABEL(mercury__sift_2_0_l)); } /* * Garbage collection livevals info * detstackvar(2) succip * r3 num(7) * detstackvar(1) num(2) */ Define_label(mercury__sift_2_0_i5); update_prof_current_proc(LABEL(mercury__sift_2_0_l)); /* Continuation label */ { r1 = (Integer) r3; } /* Assigning from New */ /* * Live lvalues: * r1 * detstackvar(1) * detstackvar(2) */ { localcall(mercury__sift_2_0_l, LABEL(mercury__sift_2_0_i6), LABEL(mercury__sift_2_0_l)); } /* * Garbage collection livevals info * detstackvar(2) succip * r2 num(7) * detstackvar(1) num(2) */ /* branch to det procedure */ Define_label(mercury__sift_2_0_i6); update_prof_current_proc(LABEL(mercury__sift_2_0_l)); /* Continuation label */ { r1 = (Integer) r2; } /* shuffle lval */ { tag_incr_hp(r2, mktag(1), 2); } /* Allocating heap for HeadVar__2 */ { field(mktag(1), (Integer) r2, 0) = (Integer) detstackvar(1); } /* Assigning from */ { field(mktag(1), (Integer) r2, 1) = (Integer) r1; } /* Assigning from */ { LVALUE_CAST(Word,succip) = (Integer) detstackvar(2); } /* restore the success ip */ decr_sp(2); /* Deallocate stack frame */ /* * Live lvalues: * r2 */ { proceed(); } /* shortcircuit */ Define_label(mercury__sift_2_0_i1000); /* non-teardown parallel label */ { r2 = (Integer) mkword(mktag(0), mkbody(0)); } /* Assigning from HeadVar__2 */ /* * Live lvalues: * r2 */ { proceed(); } /* Return from procedure call */ /*-------------------------------------------------------------------------*/ /* code for predicate remove/3 in mode 0 */ /* Start of procedure prologue */ /* Stack slot assignments (if any): I -> stackvar(1) M -> stackvar(2) P -> stackvar(3) Is -> stackvar(4) */ Define_local(mercury__remove_3_0_l); /* Procedure entry point */ /* End of procedure prologue */ /* checking that HeadVar__2 has functor '[]'/0 */ { detstackvar(0) = (Integer) succip; } /* late save */ { if (((Integer) r2 == (Integer) mkword(mktag(0), mkbody(0)))) GOTO_LABEL(mercury__remove_3_0_i1001); } /* tag test (teardown redirect) */ { r3 = (Integer) field(mktag(1), (Integer) r2, 1); } /* Assigning from Is */ { r4 = (Integer) field(mktag(1), (Integer) r2, 0); } /* Assigning from I */ { r5 = ((Integer) r4 % (Integer) r1); } /* Assigning from M */ /* checking that M has functor 0 */ { if (((Integer) r5 == 0)) GOTO_LABEL(mercury__remove_3_0_i1000); } /* branch over failure (teardown redirect) */ incr_sp(5); /* late setup after succip */ { detstackvar(1) = (Integer) r4; } /* Assigning from I */ { r2 = (Integer) r3; } /* Assigning from Is */ /* * Live lvalues: * r1 * r2 * detstackvar(1) * detstackvar(5) */ { localcall(mercury__remove_3_0_l, LABEL(mercury__remove_3_0_i10), LABEL(mercury__remove_3_0_l)); } /* * Garbage collection livevals info * detstackvar(5) succip * r3 num(7) * detstackvar(1) num(2) */ /* branch to det procedure */ Define_label(mercury__remove_3_0_i8); while (1) { { r2 = (Integer) r3; } /* vn flush */ { LVALUE_CAST(Word,succip) = (Integer) detstackvar(5); } /* vn flush */ { if (((Integer) r2 == (Integer) mkword(mktag(0), mkbody(0)))) GOTO_LABEL(mercury__remove_3_0_i4); } /* tag test (teardown redirect) (original) */ { r3 = (Integer) field(mktag(1), (Integer) r2, 1); } /* Assigning from Is */ { r4 = (Integer) field(mktag(1), (Integer) r2, 0); } /* Assigning from I */ { r5 = ((Integer) r4 % (Integer) r1); } /* Assigning from M */ { if (((Integer) r5 == 0)) continue; } /* branch over failure (teardown redirect) (original) */ { detstackvar(1) = (Integer) r4; } /* Assigning from I */ { r2 = (Integer) r3; } /* Assigning from Is */ /* * Live lvalues: * r1 * r2 * detstackvar(1) * detstackvar(5) */ { localcall(mercury__remove_3_0_l, LABEL(mercury__remove_3_0_i10), LABEL(mercury__remove_3_0_l)); } /* * Garbage collection livevals info * detstackvar(5) succip * r3 num(7) * detstackvar(1) num(2) */ /* branch to det procedure */ break; } /* end while */ Define_label(mercury__remove_3_0_i10); update_prof_current_proc(LABEL(mercury__remove_3_0_l)); /* Continuation label */ { r1 = (Integer) r3; } /* shuffle lval */ { tag_incr_hp(r3, mktag(1), 2); } /* Allocating heap for HeadVar__3 */ { field(mktag(1), (Integer) r3, 0) = (Integer) detstackvar(1); } /* Assigning from */ { field(mktag(1), (Integer) r3, 1) = (Integer) r1; } /* Assigning from */ { LVALUE_CAST(Word,succip) = (Integer) detstackvar(5); } /* restore the success ip */ decr_sp(5); /* Deallocate stack frame */ /* * Live lvalues: * r3 */ { proceed(); } /* shortcircuit */ Define_label(mercury__remove_3_0_i4); /* next case */ { r3 = (Integer) mkword(mktag(0), mkbody(0)); } /* Assigning from HeadVar__3 */ { LVALUE_CAST(Word,succip) = (Integer) detstackvar(5); } /* restore the success ip */ decr_sp(5); /* Deallocate stack frame */ /* * Live lvalues: * r3 */ { proceed(); } /* Return from procedure call */ Define_label(mercury__remove_3_0_i1000); /* non-teardown parallel label */ while (1) { { r2 = (Integer) r3; } /* vn flush */ { detstackvar(0) = (Integer) succip; } /* late save */ { if (((Integer) r2 == (Integer) mkword(mktag(0), mkbody(0)))) GOTO_LABEL(mercury__remove_3_0_i1001); } /* tag test (teardown redirect) */ { r3 = (Integer) field(mktag(1), (Integer) r2, 1); } /* Assigning from Is */ { r4 = (Integer) field(mktag(1), (Integer) r2, 0); } /* Assigning from I */ { r5 = ((Integer) r4 % (Integer) r1); } /* Assigning from M */ /* checking that M has functor 0 */ { if (((Integer) r5 == 0)) continue; } /* branch over failure (teardown redirect) */ incr_sp(5); /* late setup after succip */ { detstackvar(1) = (Integer) r4; } /* Assigning from I */ { r2 = (Integer) r3; } /* Assigning from Is */ /* * Live lvalues: * r1 * r2 * detstackvar(1) * detstackvar(5) */ { localcall(mercury__remove_3_0_l, LABEL(mercury__remove_3_0_i10), LABEL(mercury__remove_3_0_l)); } /* * Garbage collection livevals info * detstackvar(5) succip * r3 num(7) * detstackvar(1) num(2) */ /* branch to det procedure */ break; } /* end while */ Define_label(mercury__remove_3_0_i1001); /* non-teardown parallel label */ { r3 = (Integer) mkword(mktag(0), mkbody(0)); } /* Assigning from HeadVar__3 */ /* * Live lvalues: * r3 */ { proceed(); } /* Return from procedure call */ 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__primes_bunch_0(void) { mercury__primes_module(); } #endif void mercury__primes__init(void); /* suppress gcc warning */ void mercury__primes__init(void) { #if (defined(USE_GCC_NONLOCAL_GOTOS) && !defined(USE_ASM_LABELS)) \ || defined(PROFILE_CALLS) || defined(DEBUG_GOTOS) \ || defined(DEBUG_LABELS) || !defined(SPEED) mercury__primes_bunch_0(); #endif }