From 374925bec9c3c613ef0c6855d0ddf7e081b446d8 Mon Sep 17 00:00:00 2001 From: Jay Cornwall Date: Sat, 22 Sep 2012 11:15:11 -0500 Subject: [PATCH] nv50/ir/ra: Fix register interference tracking. See fdo bug 55224. --- src/gallium/drivers/nv50/codegen/nv50_ir_ra.cpp | 8 ++++---- 1 file 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 13998767710..714837e5c27 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); } } -- 2.30.2