summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJunyan He <junyan.he@linux.intel.com>2015-01-26 13:53:45 +0800
committerZhigang Gong <zhigang.gong@intel.com>2015-01-28 12:46:04 +0800
commit74a349403a88059b36e56760221f4f1b7d80c256 (patch)
tree93101403560b57c657f326b8f4af830de0da441d
parent80da7d2edd8e49c76e06779e0b3e44af645e0924 (diff)
Fix bug for scalar long conversion.
The following instruction: mov (1) r127.7<1>:f r8.2<0;1,0>:q can not work because the dst should have same alignment with the source, which will cause the conversion error. Signed-off-by: Junyan He <junyan.he@linux.intel.com> Reviewed-by: "Yang, Rong R" <rong.r.yang@intel.com>
-rw-r--r--backend/src/backend/gen_insn_selection.cpp8
1 files changed, 2 insertions, 6 deletions
diff --git a/backend/src/backend/gen_insn_selection.cpp b/backend/src/backend/gen_insn_selection.cpp
index 6aa7e0e9..d762848f 100644
--- a/backend/src/backend/gen_insn_selection.cpp
+++ b/backend/src/backend/gen_insn_selection.cpp
@@ -3998,12 +3998,8 @@ namespace gbe
} else {
GenRegister unpacked;
const uint32_t type = GEN_TYPE_F;
- if (!sel.isScalarReg(dst.reg())) {
- unpacked = sel.unpacked_ud(sel.reg(FAMILY_QWORD, sel.isScalarReg(insn.getSrc(0))));
- unpacked = GenRegister::retype(unpacked, type);
- } else {
- unpacked = GenRegister::retype(sel.unpacked_ud(dst.reg()), type);
- }
+ unpacked = sel.unpacked_ud(sel.reg(FAMILY_QWORD, sel.isScalarReg(insn.getSrc(0))));
+ unpacked = GenRegister::retype(unpacked, type);
sel.push();
if (sel.isScalarReg(insn.getSrc(0))) {