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

Subversion Repositories or1k

[/] [or1k/] [tags/] [nog_patch_39/] [or1ksim/] [cuc/] [cuc.c] - Diff between revs 933 and 934

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

Rev 933 Rev 934
Line 55... Line 55...
/* Does all known instruction optimizations */
/* Does all known instruction optimizations */
void cuc_optimize (cuc_func *func)
void cuc_optimize (cuc_func *func)
{
{
  int modified = 0;
  int modified = 0;
  log ("Optimizing.\n");
  log ("Optimizing.\n");
  insert_conditional_facts (func);
 
  if (cuc_debug >= 3) print_cuc_bb (func, "AFTER_COND_FACT");
 
  do {
  do {
    modified = 0;
    modified = 0;
    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 (optimize_tree (func)) {
    if (optimize_tree (func)) {
      if (cuc_debug >= 6) print_cuc_bb (func, "AFTER_OPT_TREE1");
      if (cuc_debug >= 6) print_cuc_bb (func, "AFTER_OPT_TREE1");
      modified = 1;
      modified = 1;
    }
    }
    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;
    }
    }
 
    if (cuc_debug) cuc_check (func);
    if (remove_dead (func)) {
    if (remove_dead (func)) {
      if (cuc_debug >= 5) print_cuc_bb (func, "AFTER_DEAD");
      if (cuc_debug >= 5) print_cuc_bb (func, "AFTER_DEAD");
      modified = 1;
      modified = 1;
    }
    }
 
    if (cuc_debug) cuc_check (func);
    if (cse (func)) {
    if (cse (func)) {
      log ("Common subexpression elimination.\n");
      log ("Common subexpression elimination.\n");
      if (cuc_debug >= 3) print_cuc_bb (func, "AFTER_CSE");
      if (cuc_debug >= 3) print_cuc_bb (func, "AFTER_CSE");
      modified = 1;
      modified = 1;
    }
    }
 
    if (cuc_debug) cuc_check (func);
    if (optimize_bb (func)) {
    if (optimize_bb (func)) {
      if (cuc_debug >= 5) print_cuc_bb (func, "AFTER_OPT_BB");
      if (cuc_debug >= 5) print_cuc_bb (func, "AFTER_OPT_BB");
      modified = 1;
      modified = 1;
    }
    }
 
    if (cuc_debug) cuc_check (func);
    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;
    }
    }
    if (remove_dead_bb (func)) {
    if (remove_dead_bb (func)) {
Line 187... Line 190...
  reg_dep (func);
  reg_dep (func);
 
 
  log ("Detecting dependencies\n");
  log ("Detecting dependencies\n");
  if (cuc_debug >= 2) print_cuc_bb (func, "AFTER_REG_DEP");
  if (cuc_debug >= 2) print_cuc_bb (func, "AFTER_REG_DEP");
  cuc_optimize (func);
  cuc_optimize (func);
 
  if (cuc_debug) cuc_check (func);
 
  insert_conditional_facts (func);
 
  if (cuc_debug >= 3) print_cuc_bb (func, "AFTER_COND_FACT");
 
  if (cuc_debug) cuc_check (func);
 
  cuc_optimize (func);
 
 
#if 0
#if 0
  csm (func);
  csm (func);
#endif
#endif
  assert (saved = dup_func (func));
  assert (saved = dup_func (func));

powered by: WebSVN 2.1.0

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