projects
/
mesa.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
| inline |
side by side
(parent:
ac459a6
)
freedreno/ir3: extend liverange of arrays
author
Rob Clark
<robdclark@gmail.com>
Sun, 21 Jan 2018 16:13:44 +0000
(11:13 -0500)
committer
Rob Clark
<robdclark@gmail.com>
Sat, 10 Feb 2018 19:54:58 +0000
(14:54 -0500)
Use livein state of other blocks to extend liverange of arrays when they
are still needed by successor blocks.
Signed-off-by: Rob Clark <robdclark@gmail.com>
src/gallium/drivers/freedreno/ir3/ir3_ra.c
patch
|
blob
|
history
diff --git
a/src/gallium/drivers/freedreno/ir3/ir3_ra.c
b/src/gallium/drivers/freedreno/ir3/ir3_ra.c
index a22e4ca49188f04b0c91eb6b2737deb3e6f22102..9158aa53b7dd33d7129d8c104f7f22f7442d769d 100644
(file)
--- a/
src/gallium/drivers/freedreno/ir3/ir3_ra.c
+++ b/
src/gallium/drivers/freedreno/ir3/ir3_ra.c
@@
-946,6
+946,17
@@
ra_add_interference(struct ir3_ra_ctx *ctx)
ctx->use[i] = MAX2(ctx->use[i], block->end_ip);
}
}
+
+ list_for_each_entry (struct ir3_array, arr, &ctx->ir->array_list, node) {
+ for (unsigned i = 0; i < arr->length; i++) {
+ if (BITSET_TEST(bd->livein, i + arr->base)) {
+ arr->start_ip = MIN2(arr->start_ip, block->start_ip);
+ }
+ if (BITSET_TEST(bd->livein, i + arr->base)) {
+ arr->end_ip = MAX2(arr->end_ip, block->end_ip);
+ }
+ }
+ }
}
/* need to fix things up to keep outputs live: */