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