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

Subversion Repositories or1k

[/] [or1k/] [trunk/] [or1ksim/] [cuc/] [cuc.c] - Diff between revs 940 and 941

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

Rev 940 Rev 941
Line 63... Line 63...
  int modified = 0;
  int modified = 0;
  int first = 1;
  int first = 1;
  log ("Optimizing.\n");
  log ("Optimizing.\n");
  do {
  do {
    modified = 0;
    modified = 0;
 
    clean_deps (func);
 
    if (cuc_debug >= 6) print_cuc_bb (func, "AFTER_CLEAN_DEPS");
    if (optimize_cmovs (func)) {
    if (optimize_cmovs (func)) {
      if (cuc_debug >= 6) print_cuc_bb (func, "AFTER_OPT_CMOVS");
      if (cuc_debug >= 6) print_cuc_bb (func, "AFTER_OPT_CMOVS");
      modified = 1;
      modified = 1;
    }
    }
    if (cuc_debug) cuc_check (func);
    if (cuc_debug) cuc_check (func);
Line 114... Line 116...
    }
    }
    if (remove_nops (func)) {
    if (remove_nops (func)) {
      if (cuc_debug >= 6) print_cuc_bb (func, "NO_NOPS");
      if (cuc_debug >= 6) print_cuc_bb (func, "NO_NOPS");
      modified = 1;
      modified = 1;
    }
    }
  } while (modified);
 
  set_io (func);
  set_io (func);
 
    add_memory_dep (func, func->memory_order);
 
    if (cuc_debug >= 7) print_cuc_bb (func, "AFTER_MEMORY_DEP");
 
    add_data_dep (func);
 
    if (cuc_debug >= 8) print_cuc_bb (func, "AFTER_DATA_DEP");
 
    schedule_memory (func, func->memory_order);
 
    if (cuc_debug >= 7) print_cuc_bb (func, "AFTER_SCHEDULE_MEM");
 
  } while (modified);
#if 0
#if 0
  detect_max_values (func);
  detect_max_values (func);
  if (cuc_debug >= 5) print_cuc_bb (func, "AFTER_MAX_VALUES");
  if (cuc_debug >= 5) print_cuc_bb (func, "AFTER_MAX_VALUES");
#endif
#endif
}
}
Line 131... Line 139...
  cucdebug (2, "BB%i unroll %i times preroll %i times\n", b, j, i);
  cucdebug (2, "BB%i unroll %i times preroll %i times\n", b, j, i);
  func = preunroll_loop (f, b, i, j, bb_filename);
  func = preunroll_loop (f, b, i, j, bb_filename);
  if (cuc_debug >= 2) print_cuc_bb (func, "AFTER_PREUNROLL");
  if (cuc_debug >= 2) print_cuc_bb (func, "AFTER_PREUNROLL");
  cuc_optimize (func);
  cuc_optimize (func);
 
 
  add_latches (func);
 
  if (cuc_debug >= 1) print_cuc_bb (func, "AFTER_LATCHES");
 
  add_memory_dep (func, func->memory_order);
 
  if (cuc_debug >= 7) print_cuc_bb (func, "AFTER_MEMORY_DEP");
 
  add_data_dep (func);
 
  if (cuc_debug >= 8) print_cuc_bb (func, "AFTER_DATA_DEP");
 
  schedule_memory (func, func->memory_order);
 
  if (cuc_debug >= 7) print_cuc_bb (func, "AFTER_SCHEDULE_MEM");
 
 
 
  analyse_timings (func, timings);
 
  cucdebug (2, "new_time = %i, old_time = %i, size = %f\n",
  cucdebug (2, "new_time = %i, old_time = %i, size = %f\n",
           timings->new_time, func->orig_time, timings->size);
           timings->new_time, func->orig_time, timings->size);
  log ("new time = %icyc, old_time = %icyc, size = %.0f gates\n",
  log ("new time = %icyc, old_time = %icyc, size = %.0f gates\n",
         timings->new_time, func->orig_time, timings->size);
         timings->new_time, func->orig_time, timings->size);
  //output_verilog (func, argv[1]);
  //output_verilog (func, argv[1]);
Line 217... Line 215...
  timings.nshared = 0;
  timings.nshared = 0;
 
 
  add_latches (func);
  add_latches (func);
  if (cuc_debug >= 1) print_cuc_bb (func, "AFTER_LATCHES");
  if (cuc_debug >= 1) print_cuc_bb (func, "AFTER_LATCHES");
  analyse_timings (func, &timings);
  analyse_timings (func, &timings);
  add_memory_dep (func, func->memory_order);
 
  if (cuc_debug >= 7) print_cuc_bb (func, "AFTER_MEMORY_DEP");
 
  add_data_dep (func);
 
  if (cuc_debug >= 8) print_cuc_bb (func, "AFTER_DATA_DEP");
 
  schedule_memory (func, memory_order);
 
  if (cuc_debug >= 7) print_cuc_bb (func, "AFTER_SCHEDULE_MEM");
 
 
 
  //output_verilog (func, module_name);
 
  free_func (func);
  free_func (func);
  log ("Base option: pre%i,un%i,sha%i: %icyc %.1f\n",
  log ("Base option: pre%i,un%i,sha%i: %icyc %.1f\n",
        timings.preroll, timings.unroll, timings.nshared, timings.new_time, timings.size);
        timings.preroll, timings.unroll, timings.nshared, timings.new_time, timings.size);
  saved->timings = timings;
  saved->timings = timings;
 
 
Line 429... Line 420...
    //csm_gen (f, rf, st->nshared, st->shared);
    //csm_gen (f, rf, st->nshared, st->shared);
  }
  }
  add_latches (f);
  add_latches (f);
  if (cuc_debug >= 1) print_cuc_bb (f, "AFTER_LATCHES");
  if (cuc_debug >= 1) print_cuc_bb (f, "AFTER_LATCHES");
  analyse_timings (f, &tt);
  analyse_timings (f, &tt);
  add_memory_dep (f, f->memory_order);
 
  if (cuc_debug >= 7) print_cuc_bb (f, "AFTER_MEMORY_DEP");
 
  add_data_dep (f);
 
  if (cuc_debug >= 8) print_cuc_bb (f, "AFTER_DATA_DEP");
 
  schedule_memory (f, f->memory_order);
 
  if (cuc_debug >= 7) print_cuc_bb (f, "AFTER_SCHEDULE_MEM");
 
 
 
  sprintf (tmp, "%s%s", cut_filename, name);
  sprintf (tmp, "%s%s", cut_filename, name);
  output_verilog (f, tmp);
  output_verilog (f, tmp, name);
  return f;
  return f;
}
}
 
 
/* Calculates required time, based on selected options */
/* Calculates required time, based on selected options */
int calc_cycles (cuc_func *f)
int calc_cycles (cuc_func *f)

powered by: WebSVN 2.1.0

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