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

Subversion Repositories or1k

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

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

Rev 953 Rev 973
Line 51... Line 51...
    printf (" "); print_bb_num (f->bb[i].prev[1]);
    printf (" "); print_bb_num (f->bb[i].prev[1]);
    printf ("\n");
    printf ("\n");
 
 
    if (f->bb[i].insn) print_insns (f->bb[i].insn, f->bb[i].ninsn, 0);
    if (f->bb[i].insn) print_insns (f->bb[i].insn, f->bb[i].ninsn, 0);
  }
  }
  printf ("\nmsched: ");
 
  if (f->nmsched) {
  if (f->nmsched) {
 
    printf ("\nmsched: ");
    for (i = 0; i < f->nmsched; i++)
    for (i = 0; i < f->nmsched; i++)
      printf ("%x ", f->msched[i]);
      printf ("%x ", f->msched[i]);
    printf ("\n");
    printf ("\n\n\n");
  }
  } else printf ("\n");
  fflush (stdout);
  fflush (stdout);
}
}
 
 
/* Copies src basic block into destination */
/* Copies src basic block into destination */
cuc_bb *cpy_bb (cuc_bb *dest, cuc_bb *src)
cuc_bb *cpy_bb (cuc_bb *dest, cuc_bb *src)
Line 342... Line 342...
 
 
/* We do a quick check if there are some anomalies with references */
/* We do a quick check if there are some anomalies with references */
void cuc_check (cuc_func *f)
void cuc_check (cuc_func *f)
{
{
  int i, j, k;
  int i, j, k;
  if (cuc_debug) printf ("cuc_check\n");
  cucdebug (1, "cuc_check\n");
  for (i = 0; i < f->num_bb; i++) {
  for (i = 0; i < f->num_bb; i++) {
    if (!f->bb[i].insn && f->bb[i].ninsn) goto err;
    if (!f->bb[i].insn && f->bb[i].ninsn) goto err;
    for (j = 0; j < f->bb[i].ninsn; j++) {
    for (j = 0; j < f->bb[i].ninsn; j++) {
      cuc_insn *ii = &f->bb[i].insn[j];
      cuc_insn *ii = &f->bb[i].insn[j];
      if ((ii->index == II_CMOV || ii->index == II_ADD) && ii->type & IT_COND) {
      if ((ii->index == II_CMOV || ii->index == II_ADD) && ii->type & IT_COND) {
        k = 0;
        k = 0;
        assert (ii->opt[k] & OPT_REGISTER);
        assert (ii->opt[k] & OPT_REGISTER);
        if ((signed)ii->op[k] >= 0 && ii->op[k] != FLAG_REG && ii->op[k] != LRBB_REG) {
        if ((signed)ii->op[k] >= 0 && ii->op[k] != FLAG_REG && ii->op[k] != LRBB_REG) {
          printf ("%x %x\n", ii->opt[0], ii->op[0]);
          cucdebug (1, "%x %x\n", ii->opt[0], ii->op[0]);
          goto err;
          goto err;
        }
        }
      }
      }
      for (k = 0; k < MAX_OPERANDS; k++)
      for (k = 0; k < MAX_OPERANDS; k++)
        if (ii->opt[k] & OPT_REF) {
        if (ii->opt[k] & OPT_REF) {
Line 367... Line 367...
        }
        }
    }
    }
  }
  }
  return;
  return;
err:
err:
  printf ("Anomaly detected at %x.%x[%i]\n", i, j, k);
  cucdebug (1, "Anomaly detected at %x.%x[%i]\n", i, j, k);
  print_cuc_bb (f, "ANOMALY");
  print_cuc_bb (f, "ANOMALY");
  exit (1);
  exit (1);
}
}
 
 
/* Build basic blocks */
/* Build basic blocks */
Line 788... Line 788...
  for (i = 0; i < f->num_init_bb; i++)
  for (i = 0; i < f->num_init_bb; i++)
    f->init_bb_reloc[i] = reloc[f->init_bb_reloc[i]];
    f->init_bb_reloc[i] = reloc[f->init_bb_reloc[i]];
 
 
  /* repair references */
  /* repair references */
  for (i = 0; i < f->num_bb; i++) if (!(f->bb[i].type & BB_DEAD)) {
  for (i = 0; i < f->num_bb; i++) if (!(f->bb[i].type & BB_DEAD)) {
          printf ("%x %x %x %x %x\n", i, f->bb[i].prev[0], f->bb[i].prev[1], f->bb[i].next[0], f->bb[i].next[1]);
          cucdebug (5, "%x %x %x %x %x\n", i, f->bb[i].prev[0], f->bb[i].prev[1], f->bb[i].next[0], f->bb[i].next[1]);
          fflush (stdout);
          fflush (stdout);
    if (f->bb[i].prev[0] >= 0 && f->bb[i].prev[0] != BBID_START)
    if (f->bb[i].prev[0] >= 0 && f->bb[i].prev[0] != BBID_START)
      assert ((f->bb[i].prev[0] = reloc[f->bb[i].prev[0]]) >= 0);
      assert ((f->bb[i].prev[0] = reloc[f->bb[i].prev[0]]) >= 0);
    if (f->bb[i].prev[1] >= 0 && f->bb[i].prev[1] != BBID_START)
    if (f->bb[i].prev[1] >= 0 && f->bb[i].prev[1] != BBID_START)
      assert ((f->bb[i].prev[1] = reloc[f->bb[i].prev[1]]) >= 0);
      assert ((f->bb[i].prev[1] = reloc[f->bb[i].prev[1]]) >= 0);

powered by: WebSVN 2.1.0

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