Author: Richard Plangger <[email protected]>
Branch: ppc-vsx-support
Changeset: r88060:53810e4e8c5c
Date: 2016-11-02 08:58 +0100
http://bitbucket.org/pypy/pypy/changeset/53810e4e8c5c/

Log:    add failing test, clear forwarded for the align_operations list

diff --git a/rpython/jit/backend/llsupport/rewrite.py 
b/rpython/jit/backend/llsupport/rewrite.py
--- a/rpython/jit/backend/llsupport/rewrite.py
+++ b/rpython/jit/backend/llsupport/rewrite.py
@@ -15,6 +15,7 @@
 from rpython.jit.metainterp.history import JitCellToken
 from rpython.jit.backend.llsupport.descr import (unpack_arraydescr,
         unpack_fielddescr, unpack_interiorfielddescr)
+from rpython.rtyper.lltypesystem.lloperation import llop
 
 FLAG_ARRAY = 0
 FLAG_STR = 1
@@ -302,7 +303,11 @@
         self._changed_op = None
         for i in range(len(operations)):
             op = operations[i]
-            assert op.get_forwarded() is None
+            if op.get_forwarded():
+                msg = '[rewrite] operations at %d has forwarded info %s\n' % 
(i, op.repr({}))
+                if we_are_translated():
+                    llop.debug_print(lltype.Void, msg)
+                raise NotImplementedError(msg)
             if op.getopnum() == rop.DEBUG_MERGE_POINT:
                 continue
             if op is self._changed_op:
diff --git a/rpython/jit/metainterp/optimizeopt/test/test_dependency.py 
b/rpython/jit/metainterp/optimizeopt/test/test_dependency.py
--- a/rpython/jit/metainterp/optimizeopt/test/test_dependency.py
+++ b/rpython/jit/metainterp/optimizeopt/test/test_dependency.py
@@ -61,7 +61,7 @@
                 return False
         return True
 
-    def ensure_operations(self, opstrlist, trace, inthatorder=True):
+    def ensure_operations(self, opstrlist, trace):
         oparse = OpParser('', self.cpu, self.namespace, None,
                           None, True, None)
         oplist = []
@@ -75,7 +75,6 @@
                 oparse._cache['lltype', elem] = op
             oplist.append(op)
         oplist_i = 0
-        match = False
         remap = {}
         last_match = 0
         for i, op in enumerate(trace.operations):
diff --git a/rpython/jit/metainterp/optimizeopt/test/test_vecopt.py 
b/rpython/jit/metainterp/optimizeopt/test/test_vecopt.py
--- a/rpython/jit/metainterp/optimizeopt/test/test_vecopt.py
+++ b/rpython/jit/metainterp/optimizeopt/test/test_vecopt.py
@@ -1373,5 +1373,25 @@
             'i2 = int_add(i0, 16)',
         ], trace)
 
+    def test_schedule_signext_twice(self):
+        trace = self.parse_loop("""
+        [p0, i1, p2, i3, p4, p5, i6, i7]
+        i8 = raw_load_i(i6, i3, descr=chararraydescr)
+        i10 = int_signext(i8, 1)
+        guard_not_invalidated() [p2, i10, i3, i1, p0]
+        i11 = int_is_true(i10)
+        guard_false(i11) [p2, i10, i3, i1, p0]
+        i13 = int_add(i1, 1)
+        i15 = int_add(i3, 1)
+        i16 = int_ge(i13, i7)
+        guard_false(i16) [p2, i10, i3, i1, p0]
+        jump(p0, i13, p2, i15, p4, p5, i6, i7)
+        """)
+        self.schedule(trace, unroll_factor=15)
+        dups = set()
+        for op in trace.operations:
+            assert op not in dups
+            dups.add(op)
+
 class TestLLtype(BaseTestVectorize, LLtypeMixin):
     pass
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
@@ -83,7 +83,7 @@
             oplist = self.prefix
         if label:
             oplist = [self.label] + oplist
-        if label != True:
+        if not label:
             for op in oplist:
                 op.set_forwarded(None)
             self.jump.set_forwarded(None)
@@ -264,6 +264,8 @@
         state.schedule()
 
         info.extra_before_label = loop.align_operations
+        for op in loop.align_operations:
+            op.set_forwarded(None)
 
         return loop.finaloplist(jitcell_token=jitcell_token, 
reset_label_token=False)
 
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to