summaryrefslogtreecommitdiff
path: root/backend
diff options
context:
space:
mode:
authorZhigang Gong <zhigang.gong@linux.intel.com>2013-08-12 15:53:43 +0800
committerZhigang Gong <zhigang.gong@linux.intel.com>2013-08-14 13:32:18 +0800
commit98bfaa78f5968168d3b12a2a181e6d2aa026f500 (patch)
treef9eb4bf5906232de423143b045be0495c59b575c /backend
parent628baebaf0dd22a0fa949760f5553a1baa1fb43e (diff)
GBE: set temporary address register for read64 to U64.
Actually, we really use it as two DWORD rather than U64. But if we don't set it to U64, in post scheduler, it doesn't know this is a QWORD register and may cause incorrect scheduling. We can easily trigger this bug when run compiler_vector_double16_load_store with SIMD8 mode. This patch can fix the bug. Signed-off-by: Zhigang Gong <zhigang.gong@linux.intel.com>
Diffstat (limited to 'backend')
-rw-r--r--backend/src/backend/gen_insn_selection.cpp2
1 files changed, 1 insertions, 1 deletions
diff --git a/backend/src/backend/gen_insn_selection.cpp b/backend/src/backend/gen_insn_selection.cpp
index 38f56b56..b0dada0c 100644
--- a/backend/src/backend/gen_insn_selection.cpp
+++ b/backend/src/backend/gen_insn_selection.cpp
@@ -2088,7 +2088,7 @@ namespace gbe
dst[dstID] = sel.selReg(sel.reg(FAMILY_DWORD));
for ( uint32_t valueID = 0; valueID < valueNum; ++dstID, ++valueID)
dst[dstID] = sel.selReg(insn.getValue(valueID));
- sel.READ64(addr, sel.selReg(sel.reg(FAMILY_QWORD)), dst, valueNum + tmpRegNum, valueNum, bti);
+ sel.READ64(addr, sel.selReg(sel.reg(FAMILY_QWORD), ir::TYPE_U64), dst, valueNum + tmpRegNum, valueNum, bti);
}
void emitByteGather(Selection::Opaque &sel,