Mesa (master): nv50/ir: optimize sub(a, 0) to a

Samuel Pitoiset hakzsam at kemper.freedesktop.org
Thu Oct 6 17:40:29 UTC 2016


Module: Mesa
Branch: master
Commit: f96945c5b5c3a52685e76795f03f75c75fb62fc7
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=f96945c5b5c3a52685e76795f03f75c75fb62fc7

Author: Karol Herbst <karolherbst at gmail.com>
Date:   Thu Oct  6 00:36:23 2016 +0200

nv50/ir: optimize sub(a, 0) to a

helped some ue4 demos and divinity OS shaders

total instructions in shared programs : 2818674 -> 2818606 (-0.00%)
total gprs used in shared programs    : 379273 -> 379273 (0.00%)
total local used in shared programs   : 9505 -> 9505 (0.00%)
total bytes used in shared programs   : 25837792 -> 25837192 (-0.00%)

                local        gpr       inst      bytes
    helped           0           0          33          33
      hurt           0           0           0           0

Signed-off-by: Karol Herbst <karolherbst at gmail.com>
Reviewed-by: Ilia Mirkin <imirkin at alum.mit.edu>
Reviewed-by: Pierre Moreau <pierre.morrow at free.fr>

---

 src/gallium/drivers/nouveau/codegen/nv50_ir_peephole.cpp | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/src/gallium/drivers/nouveau/codegen/nv50_ir_peephole.cpp b/src/gallium/drivers/nouveau/codegen/nv50_ir_peephole.cpp
index 9875738..1c71155 100644
--- a/src/gallium/drivers/nouveau/codegen/nv50_ir_peephole.cpp
+++ b/src/gallium/drivers/nouveau/codegen/nv50_ir_peephole.cpp
@@ -1037,12 +1037,15 @@ ConstantFolding::opnd(Instruction *i, ImmediateValue &imm0, int s)
       }
       break;
    case OP_ADD:
+   case OP_SUB:
       if (i->usesFlags())
          break;
       if (imm0.isInteger(0)) {
          if (s == 0) {
             i->setSrc(0, i->getSrc(1));
             i->src(0).mod = i->src(1).mod;
+            if (i->op == OP_SUB)
+               i->src(0).mod = i->src(0).mod ^ Modifier(NV50_IR_MOD_NEG);
          }
          i->setSrc(1, NULL);
          i->op = i->src(0).mod.getOp();




More information about the mesa-commit mailing list