[Mesa-dev] [PATCH 3/4] nvc0/ir: dual issue two min/max instructions

Tobias Klausmann tobias.johannes.klausmann at mni.thm.de
Sat Aug 13 15:43:36 UTC 2016


Hi Karol,

one question inline.


On 13.08.2016 12:02, Karol Herbst wrote:
> min/max pairs can be dual issued on Kepler1
>
> changes for ./GpuTest /test=pixmark_piano /benchmark /no_scorebox /msaa=0
> /benchmark_duration_ms=60000 /width=1024 /height=640:
>
> without dual_issue pass:
> inst_executed: 1.03G
> inst_issued1: 614M -> 580M
> inst_issued2: 213M -> 230M
>
> score: 1021 -> 1030
>
> with dual_issue pass:
> inst_executed: 1.03G
> inst_issued1: 535M -> 500M
> inst_issued2: 254M -> 271M
>
> score: 1052 -> 1056
>
> Signed-off-by: Karol Herbst <karolherbst at gmail.com>
> ---
>   .../drivers/nouveau/codegen/nv50_ir_target_nvc0.cpp        | 14 ++++++++++++--
>   1 file 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 8ce8c19..ea44e6f 100644
> --- a/src/gallium/drivers/nouveau/codegen/nv50_ir_target_nvc0.cpp
> +++ b/src/gallium/drivers/nouveau/codegen/nv50_ir_target_nvc0.cpp
> @@ -628,9 +628,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

are there 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);
>         }



More information about the mesa-dev mailing list