When convert byte/short/int to long, the temp regiser type signed
or not is decided by src type, not dst type.

Signed-off-by: Yang Rong <[email protected]>
---
 backend/src/backend/gen_insn_selection.cpp | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/backend/src/backend/gen_insn_selection.cpp 
b/backend/src/backend/gen_insn_selection.cpp
index 062b69b..d939569 100644
--- a/backend/src/backend/gen_insn_selection.cpp
+++ b/backend/src/backend/gen_insn_selection.cpp
@@ -4154,15 +4154,15 @@ namespace gbe
             unpacked = GenRegister::retype(unpacked, GEN_TYPE_F);
           } else if(srcFamily == FAMILY_DWORD) {
             unpacked = sel.unpacked_ud(sel.reg(FAMILY_QWORD, 
sel.isScalarReg(insn.getSrc(0))));
-            unpacked = GenRegister::retype(unpacked, dstType == TYPE_U64 ? 
GEN_TYPE_UD : GEN_TYPE_D);
+            unpacked = GenRegister::retype(unpacked, srcType == TYPE_U32 ? 
GEN_TYPE_UD : GEN_TYPE_D);
           } else if(srcFamily == FAMILY_WORD) {
             unpacked = sel.unpacked_uw(sel.reg(FAMILY_QWORD, 
sel.isScalarReg(insn.getSrc(0))));
-            unpacked = GenRegister::retype(unpacked, dstType == TYPE_U64 ? 
GEN_TYPE_UW : GEN_TYPE_W);
+            unpacked = GenRegister::retype(unpacked, srcType == TYPE_U16 ? 
GEN_TYPE_UW : GEN_TYPE_W);
           } else if(srcFamily == FAMILY_BYTE) {
             GenRegister tmp = sel.selReg(sel.reg(FAMILY_WORD, 
sel.isScalarReg(insn.getSrc(0))));
-            tmp = GenRegister::retype(tmp, dstType == TYPE_U64 ? GEN_TYPE_UW : 
GEN_TYPE_W);
+            tmp = GenRegister::retype(tmp, srcType == TYPE_U8 ? GEN_TYPE_UW : 
GEN_TYPE_W);
             unpacked = sel.unpacked_uw(sel.reg(FAMILY_QWORD, 
sel.isScalarReg(insn.getSrc(0))));
-            unpacked = GenRegister::retype(unpacked, dstType == TYPE_U64 ? 
GEN_TYPE_UW : GEN_TYPE_W);
+            unpacked = GenRegister::retype(unpacked, srcType == TYPE_U8 ? 
GEN_TYPE_UW : GEN_TYPE_W);
             sel.MOV(tmp, src);
             unpacked_src = tmp;
           } else
-- 
1.8.3.2

_______________________________________________
Beignet mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/beignet

Reply via email to