Mesa (master): nv50/ir: r63 is only 0 if we are using less than 63 registers

Ilia Mirkin imirkin at kemper.freedesktop.org
Thu Sep 10 08:32:20 UTC 2015


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

Author: Ilia Mirkin <imirkin at alum.mit.edu>
Date:   Thu Sep 10 03:49:36 2015 -0400

nv50/ir: r63 is only 0 if we are using less than 63 registers

It is advantageous to use r63 instead of r127 since r63 can fit into the
shorter encoding. However if we've RA'd over 63 registers, we must use
r127 as the replacement instead.

Signed-off-by: Ilia Mirkin <imirkin at alum.mit.edu>
Cc: "11.0" <mesa-stable at lists.freedesktop.org>

---

 src/gallium/drivers/nouveau/codegen/nv50_ir_lowering_nv50.cpp |    5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/src/gallium/drivers/nouveau/codegen/nv50_ir_lowering_nv50.cpp b/src/gallium/drivers/nouveau/codegen/nv50_ir_lowering_nv50.cpp
index bea293b..d87cdff 100644
--- a/src/gallium/drivers/nouveau/codegen/nv50_ir_lowering_nv50.cpp
+++ b/src/gallium/drivers/nouveau/codegen/nv50_ir_lowering_nv50.cpp
@@ -202,7 +202,10 @@ NV50LegalizePostRA::visit(Function *fn)
    Program *prog = fn->getProgram();
 
    r63 = new_LValue(fn, FILE_GPR);
-   r63->reg.data.id = 63;
+   if (prog->maxGPR < 63)
+      r63->reg.data.id = 63;
+   else
+      r63->reg.data.id = 127;
 
    // this is actually per-program, but we can do it all on visiting main()
    std::list<Instruction *> *outWrites =




More information about the mesa-commit mailing list