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

Subversion Repositories or1k

[/] [or1k/] [tags/] [nog_patch_69/] [or1ksim/] [cuc/] [adv.c] - Diff between revs 937 and 938

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

Rev 937 Rev 938
Line 63... Line 63...
      unsigned long c = f->INSN(ii->op[1]).op[2];
      unsigned long c = f->INSN(ii->op[1]).op[2];
      int rref = f->INSN(ii->op[1]).op[1];
      int rref = f->INSN(ii->op[1]).op[1];
      unsigned long r;
      unsigned long r;
      if (!(f->INSN(ii->op[1]).opt[1] & OPT_REF)) continue;
      if (!(f->INSN(ii->op[1]).opt[1] & OPT_REF)) continue;
      r = f->INSN(rref).op[0];
      r = f->INSN(rref).op[0];
 
 
 
      /* Assignment must be in same basic block */
 
      if (REF_BB(rref) != b) continue;
 
 
      for (j = 0; j < 2; j++) {
      for (j = 0; j < 2; j++) {
        change_insn_type (&n[j], II_ADD);
        change_insn_type (&n[j], II_ADD);
        n[j].type = 0;
        n[j].type = 0;
        n[j].dep = NULL;
        n[j].dep = NULL;
        n[j].op[0] = r; n[j].opt[0] = OPT_REGISTER | OPT_DEST;
        n[j].op[0] = r; n[j].opt[0] = OPT_REGISTER | OPT_DEST;
Line 126... Line 130...
      }
      }
 
 
      /* Now add two BBs at the end and relink */
      /* Now add two BBs at the end and relink */
      if (ok) {
      if (ok) {
        int cnt = 0;
        int cnt = 0;
        printf ("%x rref %x cnt %i\n", b, rref, cnt);
        cucdebug (1, "%x rref %x cnt %i\n", b, rref, cnt);
        fflush (stdout);
        fflush (stdout);
        for (j = 0; j < 2; j++) {
        for (j = 0; j < 2; j++) {
          int nb = f->num_bb++;
          int nb = f->num_bb++;
          int sb;
          int sb;
          int k;
          int k;
Line 138... Line 142...
          f->bb[nb].type = 0;
          f->bb[nb].type = 0;
          f->bb[nb].first = -1; f->bb[nb].last = -1;
          f->bb[nb].first = -1; f->bb[nb].last = -1;
          f->bb[nb].prev[0] = b; f->bb[nb].prev[1] = -1;
          f->bb[nb].prev[0] = b; f->bb[nb].prev[1] = -1;
          sb = f->bb[nb].next[0] = f->bb[b].next[j]; f->bb[nb].next[1] = -1;
          sb = f->bb[nb].next[0] = f->bb[b].next[j]; f->bb[nb].next[1] = -1;
          assert (cnt >= 0);
          assert (cnt >= 0);
          printf ("%x %x %x rref %x cnt %i\n", b, sb, nb, rref, cnt);
          cucdebug (2, "%x %x %x rref %x cnt %i\n", b, sb, nb, rref, cnt);
          fflush (stdout);
          fflush (stdout);
          assert (sb >= 0);
          assert (sb >= 0);
          f->bb[b].next[j] = nb;
          f->bb[b].next[j] = nb;
          if (sb != BBID_END) {
          if (sb != BBID_END) {
            if (f->bb[sb].prev[0] == b) f->bb[sb].prev[0] = nb;
            if (f->bb[sb].prev[0] == b) f->bb[sb].prev[0] = nb;
Line 172... Line 176...
          for (i1 = 0; i1 < end; i1++)
          for (i1 = 0; i1 < end; i1++)
            for (j1 = 0; j1 < MAX_OPERANDS; j1++)
            for (j1 = 0; j1 < MAX_OPERANDS; j1++)
              if (f->bb[b1].insn[i1].opt[j1] & OPT_REF && f->bb[b1].insn[i1].op[j1] == rref)
              if (f->bb[b1].insn[i1].opt[j1] & OPT_REF && f->bb[b1].insn[i1].op[j1] == rref)
                f->bb[b1].insn[i1].op[j1] = REF (f->num_bb - f->bb[b1].tmp, 0);
                f->bb[b1].insn[i1].op[j1] = REF (f->num_bb - f->bb[b1].tmp, 0);
        }
        }
        print_cuc_bb (f, "FACT");
        if (cuc_debug >= 3) print_cuc_bb (f, "FACT");
      }
      }
    }
    }
  }
  }
}
}
 
 

powered by: WebSVN 2.1.0

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