1
0
mirror of git://projects.qi-hardware.com/wernermisc.git synced 2024-11-15 10:50:37 +02:00

m1/perf/sched.c: slight cleanup (no functional changes)

This commit is contained in:
Werner Almesberger 2011-09-19 11:32:29 -03:00
parent e34e8ebb16
commit 1ad7db70f1

View File

@ -44,7 +44,7 @@
#define MAX_LATENCY 8 /* maximum latency; okay to make this bigger */ #define MAX_LATENCY 8 /* maximum latency; okay to make this bigger */
#define FIELD(w) (((pfpu_instruction *) &(w))->i) #define CODE(n) (((pfpu_instruction *) (code+(n)))->i)
struct list { struct list {
@ -65,7 +65,7 @@ struct insn {
int unresolved; /* number of data refs we need before we can sched */ int unresolved; /* number of data refs we need before we can sched */
int earliest; /* earliest cycle dependencies seen so far are met */ int earliest; /* earliest cycle dependencies seen so far are met */
struct list dependants; /* list of dependencies (constant) */ struct list dependants; /* list of dependencies (constant) */
int num_dependants; /* number of unresolved dependencies */ int num_dependants; /* number of dependencies */
#ifdef LCPF #ifdef LCPF
int distance; /* minimum cycles on this path until the end */ int distance; /* minimum cycles on this path until the end */
#endif #endif
@ -221,7 +221,7 @@ static void list_concat(struct list *a, struct list *b)
/* ----- Register management ----------------------------------------------- */ /* ----- Register management ----------------------------------------------- */
static int reg2idx(int reg) static int vm_reg2idx(int reg)
{ {
return reg >= 0 ? reg : sc->frag->nbindings-reg; return reg >= 0 ? reg : sc->frag->nbindings-reg;
} }
@ -250,7 +250,7 @@ static int alloc_reg(struct insn *setter)
Dprintf(" alloc reg %d -> %d\n", vm_reg, pfpu_reg); Dprintf(" alloc reg %d -> %d\n", vm_reg, pfpu_reg);
vm_idx = reg2idx(vm_reg); vm_idx = vm_reg2idx(vm_reg);
sc->regs[vm_idx].setter = setter; sc->regs[vm_idx].setter = setter;
sc->regs[vm_idx].pfpu_reg = pfpu_reg; sc->regs[vm_idx].pfpu_reg = pfpu_reg;
sc->regs[vm_idx].refs = setter->num_dependants+1; sc->regs[vm_idx].refs = setter->num_dependants+1;
@ -266,7 +266,7 @@ static void put_reg(int vm_reg)
if (vm_reg >= 0) if (vm_reg >= 0)
return; return;
vm_idx = reg2idx(vm_reg); vm_idx = vm_reg2idx(vm_reg);
assert(sc->regs[vm_idx].refs); assert(sc->regs[vm_idx].refs);
if (--sc->regs[vm_idx].refs) if (--sc->regs[vm_idx].refs)
return; return;
@ -300,7 +300,7 @@ static void put_reg_by_setter(struct insn *setter)
static int lookup_pfpu_reg(int vm_reg) static int lookup_pfpu_reg(int vm_reg)
{ {
return vm_reg >= 0 ? vm_reg : sc->regs[reg2idx(vm_reg)].pfpu_reg; return vm_reg >= 0 ? vm_reg : sc->regs[vm_reg2idx(vm_reg)].pfpu_reg;
} }
@ -344,7 +344,7 @@ static struct vm_reg *add_data_ref(struct insn *insn, struct data_ref *ref,
{ {
struct vm_reg *reg; struct vm_reg *reg;
reg = sc->regs+reg2idx(reg_num); reg = sc->regs+vm_reg2idx(reg_num);
ref->insn = insn; ref->insn = insn;
ref->dep = reg->setter; ref->dep = reg->setter;
if (ref->dep) { if (ref->dep) {
@ -427,11 +427,11 @@ static void issue(struct insn *insn, int cycle, unsigned *code)
case 3: case 3:
/* fall through */ /* fall through */
case 2: case 2:
FIELD(code[cycle]).opb = lookup_pfpu_reg(insn->vm_insn->opb); CODE(cycle).opb = lookup_pfpu_reg(insn->vm_insn->opb);
put_reg_by_setter(insn->opb.dep); put_reg_by_setter(insn->opb.dep);
/* fall through */ /* fall through */
case 1: case 1:
FIELD(code[cycle]).opa = lookup_pfpu_reg(insn->vm_insn->opa); CODE(cycle).opa = lookup_pfpu_reg(insn->vm_insn->opa);
put_reg_by_setter(insn->opa.dep); put_reg_by_setter(insn->opa.dep);
break; break;
case 0: case 0:
@ -440,8 +440,8 @@ static void issue(struct insn *insn, int cycle, unsigned *code)
abort(); abort();
} }
FIELD(code[end]).dest = alloc_reg(insn); CODE(end).dest = alloc_reg(insn);
FIELD(code[cycle]).opcode = fpvm_to_pfpu(insn->vm_insn->opcode); CODE(cycle).opcode = fpvm_to_pfpu(insn->vm_insn->opcode);
foreach (ref, &insn->dependants) { foreach (ref, &insn->dependants) {
if (ref->insn->earliest <= end) if (ref->insn->earliest <= end)
@ -496,7 +496,7 @@ static int schedule(unsigned int *code)
end = i+insn->latency; end = i+insn->latency;
if (end >= PFPU_PROGSIZE) if (end >= PFPU_PROGSIZE)
return -1; return -1;
if (!FIELD(code[end]).dest) { if (!CODE(end).dest) {
#ifdef LCPF #ifdef LCPF
if (!best || best->distance < insn->distance) if (!best || best->distance < insn->distance)
best = insn; best = insn;
@ -515,8 +515,8 @@ static int schedule(unsigned int *code)
remaining--; remaining--;
} }
#endif #endif
if (FIELD(code[i]).dest) if (CODE(i).dest)
put_reg(sc->pfpu_regs[FIELD(code[i]).dest].vm_reg); put_reg(sc->pfpu_regs[CODE(i).dest].vm_reg);
} }
/* /*
@ -527,7 +527,7 @@ static int schedule(unsigned int *code)
if (end > PFPU_PROGSIZE) if (end > PFPU_PROGSIZE)
end = PFPU_PROGSIZE; end = PFPU_PROGSIZE;
while (i != end) { while (i != end) {
if (FIELD(code[i]).dest) if (CODE(i).dest)
last = i+1; last = i+1;
i++; i++;
} }