Author: Richard Plangger <[email protected]>
Branch: vecopt
Changeset: r77970:c853e8ea2f01
Date: 2015-06-09 08:34 +0200
http://bitbucket.org/pypy/pypy/changeset/c853e8ea2f01/
Log: scheduler emits packs that are interdependent (only within pack and
marked accum)
diff --git a/rpython/jit/metainterp/logger.py b/rpython/jit/metainterp/logger.py
--- a/rpython/jit/metainterp/logger.py
+++ b/rpython/jit/metainterp/logger.py
@@ -127,7 +127,8 @@
elif isinstance(arg, BoxFloat):
return 'f' + str(mv)
elif isinstance(arg, BoxVector):
- return 'v%s[%s%d#%d]' % (str(mv), arg.item_type, arg.item_size,
arg.item_count)
+ return 'v%s[%s%d|%d]' % (str(mv), arg.item_type,
+ arg.item_size * 8, arg.item_count)
elif arg is None:
return 'None'
else:
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
@@ -44,9 +44,17 @@
def schedulable(self, candidate):
if candidate.pack:
- for node in candidate.pack.operations:
- if node.depends_count() > 0:
- return False
+ pack = candidate.pack
+ if pack.is_accumulating():
+ for node in pack.operations:
+ for dep in node.depends():
+ if dep.to.pack is not pack:
+ return False
+ return True
+ else:
+ for node in candidate.pack.operations:
+ if node.depends_count() > 0:
+ return False
return candidate.depends_count() == 0
def schedule(self, candidate, position):
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
@@ -552,6 +552,8 @@
if not dep.because_of(accum):
# not quite ... this is not handlable
return None
+ # get the original variable
+ accum = lop.getarg(accum_pos)
# in either of the two cases the arguments are mixed,
# which is not handled currently
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit