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