Author: Richard Plangger <r...@pasra.at> Branch: vecopt-merge Changeset: r79106:dd5a2c07e944 Date: 2015-08-21 11:26 +0200 http://bitbucket.org/pypy/pypy/changeset/dd5a2c07e944/
Log: finally the simplest version working again. Accidently mixed up the order of the fail args which caused to result in wrong register mapping diff --git a/rpython/jit/metainterp/history.py b/rpython/jit/metainterp/history.py --- a/rpython/jit/metainterp/history.py +++ b/rpython/jit/metainterp/history.py @@ -758,6 +758,7 @@ label = operations[idx] self.label_pos = idx self.inputargs = label.getarglist() + self.renamed_inputargs = label.getarglist() self.compiled = None def register_guard(self, op): @@ -767,6 +768,9 @@ assert isinstance(descr, CompileLoopVersionDescr) descr.version = self self.faildescrs.append(descr) + # note: stitching a guard must resemble the order of the label + # otherwise a wrong mapping is handed to the register allocator + op.setfailargs(self.renamed_inputargs) def update_token(self, jitcell_token, all_target_tokens): # this is only invoked for versioned loops! 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 @@ -493,6 +493,9 @@ return if vector: # add accumulation info to the descriptor + for version in self.loop.versions: + # this needs to be done for renamed (accum arguments) + version.renamed_inputargs = [ renamer.rename_map.get(arg,arg) for arg in version.inputargs ] self.appended_arg_count = len(sched_data.invariant_vector_vars) for guard_node in self.dependency_graph.guards: op = guard_node.getoperation() _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit