Author: Richard Plangger <[email protected]>
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
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit