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

Subversion Repositories or1k

[/] [or1k/] [tags/] [nog_patch_52/] [or1ksim/] [cpu/] [or32/] [execute.c] - Diff between revs 1386 and 1428

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

Rev 1386 Rev 1428
Line 202... Line 202...
dst: reg1 disp          src: reg2 disp                  always 1 (store must
dst: reg1 disp          src: reg2 disp                  always 1 (store must
                                                        finish before load)
                                                        finish before load)
dst: flag               src: flag                       always 1
dst: flag               src: flag                       always 1
*/
*/
 
 
int depend_operands(prev, next)
static int check_depend(prev, next)
     struct iqueue_entry *prev;
     struct iqueue_entry *prev;
     struct iqueue_entry *next;
     struct iqueue_entry *next;
{
{
  /* Find destination type. */
  /* Find destination type. */
  unsigned long type = 0;
  unsigned long type = 0;
Line 321... Line 321...
#endif
#endif
void analysis (struct iqueue_entry *current)
void analysis (struct iqueue_entry *current)
{
{
  if (config.cpu.dependstats) {
  if (config.cpu.dependstats) {
    /* Dynamic, dependency stats. */
    /* Dynamic, dependency stats. */
    adddstats(icomplet[0].insn_index, current->insn_index, 1, check_depend());
    adddstats(icomplet[0].insn_index, current->insn_index, 1,
 
              check_depend(icomplet, current));
 
 
    /* Dynamic, functional units stats. */
    /* Dynamic, functional units stats. */
    addfstats(or32_opcodes[icomplet[0].insn_index].func_unit,
    addfstats(or32_opcodes[icomplet[0].insn_index].func_unit,
              or32_opcodes[current->insn_index].func_unit, 1, check_depend());
              or32_opcodes[current->insn_index].func_unit, 1,
 
              check_depend(icomplet, current));
 
 
    /* Dynamic, single stats. */
    /* Dynamic, single stats. */
    addsstats(current->insn_index, 1);
    addsstats(current->insn_index, 1);
  }
  }
 
 
Line 348... Line 350...
      runtime.sim.loadcycles++;
      runtime.sim.loadcycles++;
#endif
#endif
 
 
    /* Pseudo multiple issue benchmark */
    /* Pseudo multiple issue benchmark */
    if ((multissue[or32_opcodes[current->insn_index].func_unit] < 1) ||
    if ((multissue[or32_opcodes[current->insn_index].func_unit] < 1) ||
        (check_depend()) || (issued_per_cycle < 1)) {
        (check_depend(icomplet, current)) || (issued_per_cycle < 1)) {
      int i;
      int i;
      for (i = 0; i < 20; i++)
      for (i = 0; i < 20; i++)
        multissue[i] = 2;
        multissue[i] = 2;
      issued_per_cycle = 2;
      issued_per_cycle = 2;
      runtime.cpu.supercycles++;
      runtime.cpu.supercycles++;
      if (check_depend())
      if (check_depend(icomplet, current))
        runtime.cpu.hazardwait++;
        runtime.cpu.hazardwait++;
      multissue[it_unknown] = 2;
      multissue[it_unknown] = 2;
      multissue[it_shift] = 2;
      multissue[it_shift] = 2;
      multissue[it_compare] = 1;
      multissue[it_compare] = 1;
      multissue[it_branch] = 1;
      multissue[it_branch] = 1;

powered by: WebSVN 2.1.0

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