i965/fs: Take the shared mathbox into account in instruction scheduling.
I don't have evidence for this amounting to any improvement, but it does codify a bit more what we understand so far about the pipeline.
This commit is contained in:
parent
382c2d99da
commit
b41d323c90
|
@ -438,6 +438,21 @@ instruction_scheduler::schedule_instructions(fs_inst *next_block_header)
|
||||||
instructions.push_tail(child);
|
instructions.push_tail(child);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Shared resource: the mathbox. There's one per EU (on later
|
||||||
|
* generations, it's even more limited pre-gen6), so if we send
|
||||||
|
* something off to it then the next math isn't going to make
|
||||||
|
* progress until the first is done.
|
||||||
|
*/
|
||||||
|
if (chosen->inst->is_math()) {
|
||||||
|
foreach_iter(exec_list_iterator, iter, instructions) {
|
||||||
|
schedule_node *n = (schedule_node *)iter.get();
|
||||||
|
|
||||||
|
if (n->inst->is_math())
|
||||||
|
n->unblocked_time = MAX2(n->unblocked_time,
|
||||||
|
time + chosen->latency);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
assert(instructions_to_schedule == 0);
|
assert(instructions_to_schedule == 0);
|
||||||
|
|
Loading…
Reference in New Issue