summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZhigang Gong <zhigang.gong@intel.com>2015-08-13 10:24:17 +0800
committerYang Rong <rong.r.yang@intel.com>2015-09-18 16:14:31 +0800
commit3a8477f1b0c2f947dbd1e294e94bfe58a2797b04 (patch)
tree2421ec7ed6b36b1a3cff4ac252f30520f5194f04
parent1630d69cde44ce1371c63965833f2e93963868e7 (diff)
downloadbeignet-3a8477f1b0c2f947dbd1e294e94bfe58a2797b04.tar.gz
GBE: a potential bug in instruction scheduling.
ENDIF should be treated as barrier-like instruction in instruction scheduling. Signed-off-by: Zhigang Gong <zhigang.gong@intel.com> Reviewed-by: Luo, Xionghu <xionghu.luo@intel.com>
-rw-r--r--backend/src/backend/gen_insn_scheduling.cpp6
1 files changed, 5 insertions, 1 deletions
diff --git a/backend/src/backend/gen_insn_scheduling.cpp b/backend/src/backend/gen_insn_scheduling.cpp
index b3b70424..358a2ce3 100644
--- a/backend/src/backend/gen_insn_scheduling.cpp
+++ b/backend/src/backend/gen_insn_scheduling.cpp
@@ -583,7 +583,11 @@ namespace gbe
for (int32_t insnID = 0; insnID < insnNum; ++insnID) {
ScheduleDAGNode *node = tracker.insnNodes[insnID];
if (node->insn.isBranch() || node->insn.isLabel()
- || node->insn.opcode == SEL_OP_EOT || node->insn.opcode == SEL_OP_IF || node->insn.opcode == SEL_OP_WHILE
+ || node->insn.opcode == SEL_OP_EOT
+ || node->insn.opcode == SEL_OP_IF
+ || node->insn.opcode == SEL_OP_ELSE
+ || node->insn.opcode == SEL_OP_ENDIF
+ || node->insn.opcode == SEL_OP_WHILE
|| node->insn.opcode == SEL_OP_READ_ARF
|| node->insn.opcode == SEL_OP_BARRIER)
tracker.makeBarrier(insnID, insnNum);