summaryrefslogtreecommitdiff
path: root/backend
diff options
context:
space:
mode:
authorRuiling Song <ruiling.song@intel.com>2013-08-09 13:23:40 +0800
committerZhigang Gong <zhigang.gong@linux.intel.com>2013-08-09 23:33:43 +0800
commitb1b1392ef6a6d16f730e811ba5750cac0bd6631c (patch)
tree5494f87604fe49f71208bcc6e634eb38ef0785c1 /backend
parent8b3fbeffc92d1318d8f826a52843e497bfc3fc22 (diff)
downloadbeignet-b1b1392ef6a6d16f730e811ba5750cac0bd6631c.tar.gz
Fix a re-schedule issue of scratch write
As scratchMsgHeader+1 will be re-used as scratch write payload. So, scratchMsgHeader+1 will be first spilled out. Add the scratch write dependency to keep scratch write in order. this fix a failure(compiler_box_blur_float) when spilling. Signed-off-by: Ruiling Song <ruiling.song@intel.com> Reviewed-by: Zhigang Gong <zhigang.gong@linux.intel.com>
Diffstat (limited to 'backend')
-rw-r--r--backend/src/backend/gen_insn_scheduling.cpp5
1 files changed, 5 insertions, 0 deletions
diff --git a/backend/src/backend/gen_insn_scheduling.cpp b/backend/src/backend/gen_insn_scheduling.cpp
index 94221d78..7ccf6d90 100644
--- a/backend/src/backend/gen_insn_scheduling.cpp
+++ b/backend/src/backend/gen_insn_scheduling.cpp
@@ -473,6 +473,11 @@ namespace gbe
tracker.addDependency(node, index);
}
+ // write-after-write in scratch memory
+ if (insn.opcode == SEL_OP_SPILL_REG) {
+ const uint32_t index = tracker.getIndex(0xff);
+ tracker.addDependency(node, index);
+ }
// Consider barriers and wait are writing memory (local and global)
if (insn.opcode == SEL_OP_BARRIER ||