Mesa (master): nv50/ir/ra: Fix register interference tracking.

Christoph Bumiller chrisbmr at kemper.freedesktop.org
Tue Sep 25 11:58:58 UTC 2012


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

Author: Jay Cornwall <jay at jcornwall.me>
Date:   Sat Sep 22 11:15:11 2012 -0500

nv50/ir/ra: Fix register interference tracking.

See fdo bug 55224.

---

 src/gallium/drivers/nv50/codegen/nv50_ir_ra.cpp |    8 ++++----
 1 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/src/gallium/drivers/nv50/codegen/nv50_ir_ra.cpp b/src/gallium/drivers/nv50/codegen/nv50_ir_ra.cpp
index 1399876..714837e 100644
--- a/src/gallium/drivers/nv50/codegen/nv50_ir_ra.cpp
+++ b/src/gallium/drivers/nv50/codegen/nv50_ir_ra.cpp
@@ -43,7 +43,7 @@ public:
 
    bool assign(int32_t& reg, DataFile f, unsigned int size);
    void release(DataFile f, int32_t reg, unsigned int size);
-   bool occupy(DataFile f, int32_t reg, unsigned int size);
+   bool occupy(DataFile f, int32_t reg, unsigned int size, bool noTest = false);
    bool occupy(const Value *);
    void occupyMask(DataFile f, int32_t reg, uint8_t mask);
 
@@ -167,9 +167,9 @@ RegisterSet::occupyMask(DataFile f, int32_t reg, uint8_t mask)
 }
 
 bool
-RegisterSet::occupy(DataFile f, int32_t reg, unsigned int size)
+RegisterSet::occupy(DataFile f, int32_t reg, unsigned int size, bool noTest)
 {
-   if (bits[f].testRange(reg, size))
+   if (!noTest && bits[f].testRange(reg, size))
       return false;
 
    bits[f].setRange(reg, size);
@@ -1235,7 +1235,7 @@ GCRA::checkInterference(const RIG_Node *node, Graph::EdgeIterator& ei)
       INFO_DBG(prog->dbgFlags, REG_ALLOC,
                "(%%%i) X (%%%i): $r%i + %u\n",
                vA->id, vB->id, intf->reg, intf->colors);
-      regs.occupy(node->f, intf->reg, intf->colors);
+      regs.occupy(node->f, intf->reg, intf->colors, true);
    }
 }
 




More information about the mesa-commit mailing list