mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-04-22 09:40:40 +02:00
pan/midgard: Implement predicate->unit
This allows ALUs to select for each unit of the bundle separately. Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
This commit is contained in:
parent
5a9a48b81a
commit
6f92288e85
1 changed files with 9 additions and 0 deletions
|
|
@ -885,6 +885,9 @@ mir_choose_instruction(
|
|||
{
|
||||
/* Parse the predicate */
|
||||
unsigned tag = predicate->tag;
|
||||
bool alu = tag == TAG_ALU_4;
|
||||
unsigned unit = predicate->unit;
|
||||
bool branch = alu && (unit == ALU_ENAB_BR_COMPACT);
|
||||
|
||||
/* Iterate to find the best instruction satisfying the predicate */
|
||||
unsigned i;
|
||||
|
|
@ -899,6 +902,12 @@ mir_choose_instruction(
|
|||
if (predicate->exclude != ~0 && instructions[i]->dest == predicate->exclude)
|
||||
continue;
|
||||
|
||||
if (alu && !branch && !(alu_opcode_props[instructions[i]->alu.op].props & unit))
|
||||
continue;
|
||||
|
||||
if (branch && !instructions[i]->compact_branch)
|
||||
continue;
|
||||
|
||||
/* Simulate in-order scheduling */
|
||||
if ((signed) i < best_index)
|
||||
continue;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue