diff options
author | Ruiling Song <ruiling.song@intel.com> | 2013-08-09 13:23:40 +0800 |
---|---|---|
committer | Zhigang Gong <zhigang.gong@linux.intel.com> | 2013-08-09 23:33:43 +0800 |
commit | b1b1392ef6a6d16f730e811ba5750cac0bd6631c (patch) | |
tree | 5494f87604fe49f71208bcc6e634eb38ef0785c1 /backend | |
parent | 8b3fbeffc92d1318d8f826a52843e497bfc3fc22 (diff) | |
download | beignet-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.cpp | 5 |
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 || |