Author: Richard Plangger <planri...@gmail.com>
Branch: ppc-vsx-support
Changeset: r87320:cff9faab2e49
Date: 2016-09-22 15:09 +0200
http://bitbucket.org/pypy/pypy/changeset/cff9faab2e49/

Log:    removed issue that modified list. if the vectorization was bailed
        this left behind modifications that should not have happened

diff --git a/rpython/jit/metainterp/compile.py 
b/rpython/jit/metainterp/compile.py
--- a/rpython/jit/metainterp/compile.py
+++ b/rpython/jit/metainterp/compile.py
@@ -326,7 +326,7 @@
         metainterp_sd.logger_ops.log_short_preamble([],
             label_token.short_preamble, metainterp.box_names_memo)
     loop.operations = ([start_label] + preamble_ops + loop_info.extra_same_as +
-                       [loop_info.label_op] + loop_ops)
+                       loop_info.extra_before_label + [loop_info.label_op] + 
loop_ops)
     if not we_are_translated():
         loop.check_consistency()
     send_loop_to_backend(greenkey, jitdriver_sd, metainterp_sd, loop, "loop",
diff --git a/rpython/jit/metainterp/optimizeopt/optimizer.py 
b/rpython/jit/metainterp/optimizeopt/optimizer.py
--- a/rpython/jit/metainterp/optimizeopt/optimizer.py
+++ b/rpython/jit/metainterp/optimizeopt/optimizer.py
@@ -33,6 +33,7 @@
         self.jump_op = jump_op
         self.quasi_immutable_deps = quasi_immutable_deps
         self.extra_same_as = []
+        self.extra_before_label = []
 
     def final(self):
         return True
diff --git a/rpython/jit/metainterp/optimizeopt/unroll.py 
b/rpython/jit/metainterp/optimizeopt/unroll.py
--- a/rpython/jit/metainterp/optimizeopt/unroll.py
+++ b/rpython/jit/metainterp/optimizeopt/unroll.py
@@ -509,6 +509,7 @@
         self.label_op = label_op
         self.extra_same_as = extra_same_as
         self.quasi_immutable_deps = quasi_immutable_deps
+        self.extra_before_label = []
 
     def final(self):
         return True
diff --git a/rpython/jit/metainterp/optimizeopt/vector.py 
b/rpython/jit/metainterp/optimizeopt/vector.py
--- a/rpython/jit/metainterp/optimizeopt/vector.py
+++ b/rpython/jit/metainterp/optimizeopt/vector.py
@@ -48,6 +48,7 @@
         self.operations = oplist
         self.jump = jump
         assert self.jump.getopnum() == rop.JUMP
+        self.align_operations = []
 
     def setup_vectorization(self):
         for op in self.operations:
@@ -257,6 +258,8 @@
         state = SchedulerState(self.cpu, graph)
         state.schedule()
 
+        info.extra_before_label = loop.align_operations
+
         return loop.finaloplist(jitcell_token=jitcell_token, 
reset_label_token=False)
 
     def unroll_loop_iterations(self, info, loop, unroll_count, 
align_unroll_once=False):
@@ -327,20 +330,7 @@
         #
         loop.label = new_label
         if align_unroll_once:
-            for op in operations:
-                descr = op.getdescr()
-                if descr:
-                    # the first step of the optimization will overwrite the 
descr
-                    # with a compile loop version descr
-                    # in the operations to align the loop load/store ops we 
want the original
-                    # descr saved on the forwarded info
-                    vinfo = copied_op.get_forwarded()
-                    if vinfo:
-                        assert isinstance(vinfo, VectorizationInfo)
-                        descr = vinfo.get_old_descr()
-                        assert descr is not None
-                        op.setdescr(descr)
-            info.extra_same_as += operations
+            loop.align_operations = operations
             loop.operations = unrolled
         else:
             loop.operations = operations + unrolled
@@ -591,10 +581,7 @@
         if op.getopnum() in (rop.GUARD_TRUE, rop.GUARD_FALSE):
             descr = CompileLoopVersionDescr()
             olddescr = op.getdescr()
-            vinfo = op.get_forwarded()
-            assert isinstance(vinfo, VectorizationInfo)
-            vinfo.set_old_descr(olddescr)
-            if op.getdescr():
+            if olddescr:
                 descr.copy_all_attributes_from(olddescr)
             op.setdescr(descr)
         arglistcopy = loop.label.getarglist_copy()
diff --git a/rpython/jit/metainterp/resoperation.py 
b/rpython/jit/metainterp/resoperation.py
--- a/rpython/jit/metainterp/resoperation.py
+++ b/rpython/jit/metainterp/resoperation.py
@@ -159,7 +159,6 @@
     count = -1
 
     def __init__(self, op):
-        self.olddescr = None
         if op is None:
             return
         from rpython.jit.metainterp.history import Const
@@ -228,12 +227,6 @@
         self.bytesize = bytesize
         self.signed = signed
 
-    def set_old_descr(self, descr):
-        self.olddescr = descr
-
-    def get_old_descr(self):
-        return self.olddescr
-
 
 class AbstractResOpOrInputArg(AbstractValue):
     _attrs_ = ('_forwarded',)
_______________________________________________
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to