OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [tags/] [nog_patch_65/] [or1ksim/] [cuc/] [bb.c] - Diff between revs 927 and 928

Go to most recent revision | Show entire file | Details | Blame | View Log

Rev 927 Rev 928
Line 1215... Line 1215...
      } else {
      } else {
        change_insn_type (ii, II_NOP);
        change_insn_type (ii, II_NOP);
      }
      }
    }
    }
 
 
    /* Add sfor instruction at the end, prioritizing flags */
    /* Add conditional or instruction at the end, prioritizing flags */
    ii = &n->bb[b1].insn[ob->ninsn - 1];
    ii = &n->bb[b1].insn[ob->ninsn - 1];
    change_insn_type (ii, II_SFOR);
    change_insn_type (ii, II_CMOV);
    ii->op[0] = FLAG_REG; ii->opt[0] = OPT_REGISTER | OPT_DEST;
    ii->op[0] = FLAG_REG; ii->opt[0] = OPT_REGISTER | OPT_DEST;
    if (pb->insn[pb->ninsn - 1].type & IT_BRANCH) {
    if (pb->insn[pb->ninsn - 1].type & IT_BRANCH) {
      ii->op[1] = pb->insn[pb->ninsn - 1].op[1];
      ii->op[1] = pb->insn[pb->ninsn - 1].op[1];
      ii->opt[1] = pb->insn[pb->ninsn - 1].opt[1];
      ii->opt[1] = pb->insn[pb->ninsn - 1].opt[1];
    } else {
    } else {
Line 1233... Line 1233...
      ii->opt[2] = n->bb[b1 - 1].insn[pb->ninsn - 1].opt[1];
      ii->opt[2] = n->bb[b1 - 1].insn[pb->ninsn - 1].opt[1];
    } else {
    } else {
      ii->op[2] = REF (b1 - 1, pb->ninsn - 1);
      ii->op[2] = REF (b1 - 1, pb->ninsn - 1);
      ii->opt[2] = OPT_REF;
      ii->opt[2] = OPT_REF;
    }
    }
    ii->opt[3] = OPT_NONE;
    /* {z = x || y;} is same as {z = x ? x : y;} */
 
    ii->op[3] = ii->op[1]; ii->opt[3] = ii->opt[1];
    ii->type = IT_COND;
    ii->type = IT_COND;
 
 
    /* Only one should be in loop, so we remove any INLOOP flags from duplicates */
    /* Only one should be in loop, so we remove any INLOOP flags from duplicates */
    n->bb[b1].type &= ~(BB_END | BB_INLOOP);
    n->bb[b1].type &= ~(BB_END | BB_INLOOP);
    n->bb[b1].prev[0] = prevart_b;
    n->bb[b1].prev[0] = prevart_b;
Line 1358... Line 1359...
      } else {
      } else {
        change_insn_type (ii, II_NOP);
        change_insn_type (ii, II_NOP);
      }
      }
    }
    }
 
 
    /* Add sfor instruction at the end, prioritizing flags */
    /* Add conditional or instruction at the end, prioritizing flags */
    ii = &n->bb[b1].insn[ob->ninsn - 1];
    ii = &n->bb[b1].insn[ob->ninsn - 1];
    change_insn_type (ii, II_SFOR);
    change_insn_type (ii, II_CMOV);
    ii->op[0] = FLAG_REG; ii->opt[0] = OPT_REGISTER | OPT_DEST;
    ii->op[0] = FLAG_REG; ii->opt[0] = OPT_REGISTER | OPT_DEST;
    if (pb->insn[pb->ninsn - 1].type & IT_BRANCH) {
    if (pb->insn[pb->ninsn - 1].type & IT_BRANCH) {
      ii->op[1] = pb->insn[pb->ninsn - 1].op[1];
      ii->op[1] = pb->insn[pb->ninsn - 1].op[1];
      ii->opt[1] = pb->insn[pb->ninsn - 1].opt[1];
      ii->opt[1] = pb->insn[pb->ninsn - 1].opt[1];
    } else {
    } else {
Line 1376... Line 1377...
      ii->opt[2] = n->bb[b1 - 1].insn[pb->ninsn - 1].opt[1];
      ii->opt[2] = n->bb[b1 - 1].insn[pb->ninsn - 1].opt[1];
    } else {
    } else {
      ii->op[2] = REF (b1 - 1, pb->ninsn - 1);
      ii->op[2] = REF (b1 - 1, pb->ninsn - 1);
      ii->opt[2] = OPT_REF;
      ii->opt[2] = OPT_REF;
    }
    }
    ii->opt[3] = OPT_NONE;
    /* {z = x || y;} is same as {z = x ? x : y;} */
 
    ii->op[3] = ii->op[1]; ii->opt[3] = ii->opt[1];
    ii->type = IT_COND;
    ii->type = IT_COND;
 
 
    /* Only one should be in loop, so we remove any INLOOP flags from duplicates */
    /* Only one should be in loop, so we remove any INLOOP flags from duplicates */
    n->bb[b1].type &= ~(BB_END | BB_INLOOP);
    n->bb[b1].type &= ~(BB_END | BB_INLOOP);
    n->bb[b1].prev[0] = prevart_b;
    n->bb[b1].prev[0] = prevart_b;

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.