[Beignet] [PATCH 2/3] GBE: Need to check invalid register to determine the actual src num.

Zhigang Gong zhigang.gong at intel.com
Tue Feb 3 20:02:10 PST 2015


This is a regression casued by 03a304b1aa4de131833d5cebedbca9a4f5851f1b.

Signed-off-by: Zhigang Gong <zhigang.gong at intel.com>
---
 backend/src/backend/gen_insn_selection.cpp | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/backend/src/backend/gen_insn_selection.cpp b/backend/src/backend/gen_insn_selection.cpp
index 4d0b979..81fa5f8 100644
--- a/backend/src/backend/gen_insn_selection.cpp
+++ b/backend/src/backend/gen_insn_selection.cpp
@@ -4318,6 +4318,10 @@ namespace gbe
       using namespace ir;
       GBE_ASSERT(insn.getSrcType() != TYPE_FLOAT);
       uint32_t srcNum = insn.getSrcNum();
+      if (insn.getSrc(1) == ir::ocl::invalid) //not 3D
+        srcNum = 1;
+      else if (insn.getSrc(2) == ir::ocl::invalid)
+        srcNum = 2;
       msgPayloads[0] = sel.selReg(insn.getSrc(0), insn.getSrcType());
       msgPayloads[1] = sel.selReg(sel.reg(FAMILY_DWORD), TYPE_U32);
       sel.MOV(msgPayloads[1], GenRegister::immud(0));
-- 
1.8.3.2



More information about the Beignet mailing list