diff options
Diffstat (limited to 'src/gallium/drivers/r600/sb/sb_ra_coalesce.cpp')
-rw-r--r-- | src/gallium/drivers/r600/sb/sb_ra_coalesce.cpp | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/src/gallium/drivers/r600/sb/sb_ra_coalesce.cpp b/src/gallium/drivers/r600/sb/sb_ra_coalesce.cpp index cec4bbc74de..25c46f79c8e 100644 --- a/src/gallium/drivers/r600/sb/sb_ra_coalesce.cpp +++ b/src/gallium/drivers/r600/sb/sb_ra_coalesce.cpp @@ -345,13 +345,17 @@ void coalescer::init_reg_bitset(sb_bitset &bs, val_set &vs) { for (val_set::iterator I = vs.begin(sh), E = vs.end(sh); I != E; ++I) { value *v = *I; - if (!v->is_sgpr()) + if (!v->is_any_gpr()) continue; - if (v->gpr) { - if (v->gpr >= bs.size()) - bs.resize(v->gpr + 64); - bs.set(v->gpr, 1); + unsigned gpr = v->get_final_gpr(); + if (!gpr) + continue; + + if (gpr) { + if (gpr >= bs.size()) + bs.resize(gpr + 64); + bs.set(gpr, 1); } } } |