Author: Richard Plangger <[email protected]>
Branch: vecopt
Changeset: r77991:be2247303111
Date: 2015-06-09 14:18 +0200
http://bitbucket.org/pypy/pypy/changeset/be2247303111/
Log: preventing accumulator flush within the trace. the plan is only to
support in in guard exits
diff --git a/rpython/jit/metainterp/optimizeopt/schedule.py
b/rpython/jit/metainterp/optimizeopt/schedule.py
--- a/rpython/jit/metainterp/optimizeopt/schedule.py
+++ b/rpython/jit/metainterp/optimizeopt/schedule.py
@@ -690,11 +690,7 @@
self.accum_variable = None
self.accum_position = -1
self.input_type = input_type
- if input_type:
- self.input_type.count = len(ops)
self.output_type = output_type
- if output_type:
- self.output_type.count = len(ops)
def opcount(self):
return len(self.operations)
diff --git a/rpython/jit/metainterp/optimizeopt/vectorize.py
b/rpython/jit/metainterp/optimizeopt/vectorize.py
--- a/rpython/jit/metainterp/optimizeopt/vectorize.py
+++ b/rpython/jit/metainterp/optimizeopt/vectorize.py
@@ -543,8 +543,14 @@
def can_be_packed(self, lnode, rnode, origin_pack):
if isomorphic(lnode.getoperation(), rnode.getoperation()):
if lnode.independent(rnode):
+ if isinstance(origin_pack, AccumPair):
+ # in this case the splitted accumulator must
+ # be combined. This case is not supported
+ raise NotAVectorizeableLoop()
+ #
if self.contains_pair(lnode, rnode):
return None
+ #
if origin_pack is None:
descr = lnode.getoperation().getdescr()
ptype = PackType.by_descr(descr, self.vec_reg_size)
@@ -620,6 +626,11 @@
return last_pos
def accumulates_pair(self, lnode, rnode, origin_pack):
+ if isinstance(origin_pack, AccumPair):
+ # in this case the splitted accumulator must
+ # be combined. This case is not supported
+ raise NotAVectorizeableLoop()
+ #
# lnode and rnode are isomorphic and dependent
assert isinstance(origin_pack, Pair)
lop = lnode.getoperation()
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit