summaryrefslogtreecommitdiff
path: root/backend
diff options
context:
space:
mode:
authorGuo Yejun <yejun.guo@intel.com>2015-08-26 02:50:49 +0800
committerYang Rong <rong.r.yang@intel.com>2015-08-27 14:37:34 +0800
commit6d3306ab90a731ab79391505c7778b8ebae64dfe (patch)
tree354d75acf559a23bef1acc7dd3eda5bca7dff111 /backend
parent7f350383b61903f5f03d79354c49285a13cc832a (diff)
correct simd width when dst of simd_shuffle is scalar
originally, the dst of simd_shuffle is not uniform, but if it is optimized as scalar, just use simd_width=1 to generate sel_op/asm Signed-off-by: Guo Yejun <yejun.guo@intel.com> Reviewed-by: "Yang, Rong R" <rong.r.yang@intel.com>
Diffstat (limited to 'backend')
-rw-r--r--backend/src/backend/gen_insn_selection.cpp5
1 files changed, 5 insertions, 0 deletions
diff --git a/backend/src/backend/gen_insn_selection.cpp b/backend/src/backend/gen_insn_selection.cpp
index b84bb4bb..b0a7f570 100644
--- a/backend/src/backend/gen_insn_selection.cpp
+++ b/backend/src/backend/gen_insn_selection.cpp
@@ -5022,6 +5022,11 @@ namespace gbe
}
sel.push();
+ if (sel.isScalarReg(insn.getDst(0))) {
+ sel.curr.execWidth = 1;
+ sel.curr.predicate = GEN_PREDICATE_NONE;
+ sel.curr.noMask = 1;
+ }
if (src1.file == GEN_IMMEDIATE_VALUE)
sel.SIMD_SHUFFLE(dst, src0, src1);
else {