diff options
Diffstat (limited to 'src/gallium/drivers/nouveau')
-rw-r--r-- | src/gallium/drivers/nouveau/codegen/nv50_ir_target_nvc0.cpp | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/src/gallium/drivers/nouveau/codegen/nv50_ir_target_nvc0.cpp b/src/gallium/drivers/nouveau/codegen/nv50_ir_target_nvc0.cpp index 0cb21e8c826..f5981de2e01 100644 --- a/src/gallium/drivers/nouveau/codegen/nv50_ir_target_nvc0.cpp +++ b/src/gallium/drivers/nouveau/codegen/nv50_ir_target_nvc0.cpp @@ -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); } |