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

Subversion Repositories or1k

Compare Revisions

  • This comparison shows the changes necessary to convert path
    /
    from Rev 940 to Rev 941
    Reverse comparison

Rev 940 → Rev 941

/trunk/or1ksim/cuc/cuc.h
282,6 → 282,9
function is unmodified. */
cuc_func *preunroll_loop (cuc_func *func, int b, int preroll, int unroll, char *bb_filename);
 
/* Clean memory and data dependencies */
void clean_deps (cuc_func *func);
 
/* Schedule memory accesses
0 - exact; 1 - strong; 2 - weak; 3 - none */
void schedule_memory (cuc_func *func, int otype);
/trunk/or1ksim/cuc/bb.c
61,11 → 61,26
cuc_bb *cpy_bb (cuc_bb *dest, cuc_bb *src)
{
int i, j;
dep_list *d;
assert (dest != src);
*dest = *src;
assert (dest->insn = malloc (sizeof (cuc_insn) * src->ninsn));
for (i = 0; i < src->ninsn; i++)
for (i = 0; i < src->ninsn; i++) {
d = src->insn[i].dep;
dest->insn[i] = src->insn[i];
dest->insn[i].dep = NULL;
while (d) {
add_dep (&dest->insn[i].dep, d->ref);
d = d->next;
}
}
d = src->mdep;
dest->mdep = NULL;
while (d) {
add_dep (&dest->mdep, d->ref);
d = d->next;
}
if (src->ntim) {
assert (dest->tim = malloc (sizeof (cuc_timings) * src->ntim));
for (i = 0; i < src->ntim; i++) {
126,7 → 141,6
free (f);
}
 
 
/* Recalculates last_used_reg */
void recalc_last_used_reg (cuc_func *f, int b)
{
/trunk/or1ksim/cuc/memory.c
25,6 → 25,35
#include "cuc.h"
#include "insn.h"
 
 
/* Cleans memory & data dependencies */
void clean_deps (cuc_func *f)
{
int b, i;
dep_list *t;
for (b = 0; b < f->num_bb; b++) {
for (i = 0; i < f->bb[b].ninsn; i++) {
t = f->bb[b].insn[i].dep;
while (t) {
dep_list *tmp = t;
t = t->next;
free (tmp);
}
f->bb[b].insn[i].dep = NULL;
}
 
t = f->bb[b].mdep;
while (t) {
dep_list *tmp = t;
t = t->next;
free (tmp);
}
f->bb[b].mdep = NULL;
}
f->nmsched = 0;
}
 
/* Checks for memory conflicts between two instructions; returns 1 if detected
0 - exact; 1 - strong; 2 - weak; 3 - none */
static int check_memory_conflict (cuc_func *f, cuc_insn *a, cuc_insn *b, int otype)
/trunk/or1ksim/cuc/cuc.c
65,6 → 65,8
log ("Optimizing.\n");
do {
modified = 0;
clean_deps (func);
if (cuc_debug >= 6) print_cuc_bb (func, "AFTER_CLEAN_DEPS");
if (optimize_cmovs (func)) {
if (cuc_debug >= 6) print_cuc_bb (func, "AFTER_OPT_CMOVS");
modified = 1;
116,8 → 118,14
if (cuc_debug >= 6) print_cuc_bb (func, "NO_NOPS");
modified = 1;
}
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);
set_io (func);
#if 0
detect_max_values (func);
if (cuc_debug >= 5) print_cuc_bb (func, "AFTER_MAX_VALUES");
133,16 → 141,6
if (cuc_debug >= 2) print_cuc_bb (func, "AFTER_PREUNROLL");
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",
timings->new_time, func->orig_time, timings->size);
log ("new time = %icyc, old_time = %icyc, size = %.0f gates\n",
219,14 → 217,7
add_latches (func);
if (cuc_debug >= 1) print_cuc_bb (func, "AFTER_LATCHES");
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);
log ("Base option: pre%i,un%i,sha%i: %icyc %.1f\n",
timings.preroll, timings.unroll, timings.nshared, timings.new_time, timings.size);
431,15 → 422,9
add_latches (f);
if (cuc_debug >= 1) print_cuc_bb (f, "AFTER_LATCHES");
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);
output_verilog (f, tmp);
output_verilog (f, tmp, name);
return f;
}
 

powered by: WebSVN 2.1.0

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