From 75aae26abd6bbc8f81aeb9b9ee4e1ee88053aa41 Mon Sep 17 00:00:00 2001 From: Zhigang Gong Date: Thu, 9 May 2013 19:30:58 +0800 Subject: [PATCH] GBE: add scalar register support in loadImmInstruction. There is a slight possibility that the destination register is a scalar register. We need to check it here. Signed-off-by: Zhigang Gong Tested-by: Lv, Meng --- backend/src/backend/gen_insn_selection.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/backend/src/backend/gen_insn_selection.cpp b/backend/src/backend/gen_insn_selection.cpp index 2bd9aca..7280d7a 100644 --- a/backend/src/backend/gen_insn_selection.cpp +++ b/backend/src/backend/gen_insn_selection.cpp @@ -1546,6 +1546,13 @@ namespace gbe const Immediate imm = insn.getImmediate(); const GenRegister dst = sel.selReg(insn.getDst(0), type); + sel.push(); + if (sel.isScalarOrBool(insn.getDst(0)) == true) { + sel.curr.execWidth = 1; + sel.curr.predicate = GEN_PREDICATE_NONE; + sel.curr.noMask = 1; + } + switch (type) { case TYPE_U32: case TYPE_S32: @@ -1559,6 +1566,7 @@ namespace gbe case TYPE_S8: sel.MOV(dst, GenRegister::immw(imm.data.s8)); break; default: NOT_SUPPORTED; } + sel.pop(); return true; } -- 2.7.4