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