Mesa (master): freedreno/ir3/sched: fixup new instr's block

Rob Clark robclark at kemper.freedesktop.org
Fri Jul 10 15:58:21 UTC 2015


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

Author: Rob Clark <robclark at freedesktop.org>
Date:   Sun Jul  5 20:17:56 2015 -0400

freedreno/ir3/sched: fixup new instr's block

If we split addr/pred, the original instruction could have originated
from a different block.  If we don't fixup the block ptr we hit asserts
later (in debug builds).

NOTE: perhaps we don't want to try to preserve addr/pred reg's across
block boundaries.. this at least needs some thought in case addr/pred
writes end up inside a conditional block..

Signed-off-by: Rob Clark <robclark at freedesktop.org>

---

 src/gallium/drivers/freedreno/ir3/ir3_sched.c |    4 ++++
 1 file changed, 4 insertions(+)

diff --git a/src/gallium/drivers/freedreno/ir3/ir3_sched.c b/src/gallium/drivers/freedreno/ir3/ir3_sched.c
index 0cb1589..2ee3255 100644
--- a/src/gallium/drivers/freedreno/ir3/ir3_sched.c
+++ b/src/gallium/drivers/freedreno/ir3/ir3_sched.c
@@ -477,6 +477,10 @@ sched_block(struct ir3_sched_ctx *ctx, struct ir3_block *block)
 			if (new_instr) {
 				list_del(&new_instr->node);
 				list_addtail(&new_instr->node, &unscheduled_list);
+				/* the original instr that wrote addr/pred may have
+				 * originated from a different block:
+				 */
+				new_instr->block = block;
 			}
 
 		} else {




More information about the mesa-commit mailing list