nvc0/ir: allow min/max instructions to be dual-issued in pairs
changes for GpuTest /test=pixmark_piano /benchmark /no_scorebox /msaa=0 /benchmark_duration_ms=60000 /width=1024 /height=640: inst_executed: 1.03G inst_issued1: 614M -> 580M inst_issued2: 213M -> 230M score: 1021 -> 1030 Signed-off-by: Karol Herbst <karolherbst@gmail.com> Reviewed-by: Ilia Mirkin <imirkin@alum.mit.edu>
This commit is contained in:
committed by
Ilia Mirkin
parent
7e891f90c7
commit
ae7eb93e6c
@@ -625,9 +625,19 @@ bool TargetNVC0::canDualIssue(const Instruction *a, const Instruction *b) const
|
||||
if (a->op == OP_MOV || b->op == OP_MOV)
|
||||
return true;
|
||||
if (clA == clB) {
|
||||
// only F32 arith or integer additions
|
||||
if (clA != OPCLASS_ARITH)
|
||||
switch (clA) {
|
||||
// there might be more
|
||||
case OPCLASS_COMPARE:
|
||||
if ((a->op == OP_MIN || a->op == OP_MAX) &&
|
||||
(b->op == OP_MIN || b->op == OP_MAX))
|
||||
break;
|
||||
return false;
|
||||
case OPCLASS_ARITH:
|
||||
break;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
// only F32 arith or integer additions
|
||||
return (a->dType == TYPE_F32 || a->op == OP_ADD ||
|
||||
b->dType == TYPE_F32 || b->op == OP_ADD);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user