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

Reply via email to