diff options
author | Junyan He <junyan.he@linux.intel.com> | 2015-01-26 13:53:45 +0800 |
---|---|---|
committer | Zhigang Gong <zhigang.gong@intel.com> | 2015-01-28 12:46:04 +0800 |
commit | 74a349403a88059b36e56760221f4f1b7d80c256 (patch) | |
tree | 93101403560b57c657f326b8f4af830de0da441d | |
parent | 80da7d2edd8e49c76e06779e0b3e44af645e0924 (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.cpp | 8 |
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))) { |