Author: Richard Plangger <r...@pasra.at> 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 pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit