Hi there

i'm currently studying the monoburg sourcecode, from both versions:

1. the Mono project version (monoburg.c,monoburg.h) files
2. monoburg-1.0.5 at http://www.lrde.epita.fr/cgi-bin/twiki/view/Tiger/MonoBURG

it seems that monoburg-1.0.5 has completed support for "dag_mode".

I think i have misunderstood what does the following form of "affiliated trees"
mean (example from ARM instruction selector:


stmt: CEE_STIND_I (OP_REGVAR, CEE_SUB (CEE_LDIND_I (OP_REGVAR), OP_ICONST)),
stmt: CEE_STIND_I4 (OP_REGVAR, CEE_SUB (CEE_LDIND_I4 (OP_REGVAR), OP_ICONST)),
stmt: CEE_STIND_I (OP_REGVAR, CEE_ADD (CEE_LDIND_I (OP_REGVAR), OP_ICONST)),
stmt: CEE_STIND_I4 (OP_REGVAR, CEE_ADD (CEE_LDIND_I4 (OP_REGVAR), OP_ICONST)) {
        int con = state->right->right->tree->inst_c0;
        int dreg = state->left->tree->dreg;
        int sreg = state->right->left->left->tree->dreg;

        if (state->right->op == CEE_ADD)
                tree->opcode = OP_ADD_IMM;
        else if (state->right->op == CEE_SUB)
                tree->opcode = OP_SUB_IMM;
        else
                g_assert_not_reached ();
        tree->inst_imm = con;
        tree->sreg1 = sreg;
        tree->dreg = dreg;
        mono_bblock_add_inst (s->cbb, tree);
}

This is not a "complex" DAG pattern, but a collection of alternative trees, one
of which will eventually match. Am I right about this?

Also if monoburg-1.0.5 (is anybody using that) ***really*** has full support for
DAG matching (using MBState's and supporting multi-output patterns), can anyone
provide some example for these:

1. writing an appropriate "reduce" routine
2.  -"-      -"-          "create_dag" routine

thanks in advance
Nikolaos Kavvadias



_______________________________________________
Mono-list maillist  -  [email protected]
http://lists.ximian.com/mailman/listinfo/mono-list

Reply via email to