Author: Richard Plangger <planri...@gmail.com> Branch: vecopt-merge Changeset: r79810:f1468a7d8892 Date: 2015-09-24 15:34 +0200 http://bitbucket.org/pypy/pypy/changeset/f1468a7d8892/
Log: llgraph working again diff --git a/rpython/jit/metainterp/optimizeopt/guard.py b/rpython/jit/metainterp/optimizeopt/guard.py --- a/rpython/jit/metainterp/optimizeopt/guard.py +++ b/rpython/jit/metainterp/optimizeopt/guard.py @@ -87,6 +87,7 @@ # guard descr = CompileLoopVersionDescr() descr.copy_all_attributes_from(self.op.getdescr()) + descr.rd_accum_list = None # do not copy the accum list assert isinstance(descr, ResumeGuardDescr) guard = ResOperation(self.op.getopnum(), [compare], descr=descr) guard.setfailargs(loop.label.getarglist_copy()) @@ -318,14 +319,5 @@ info.track(transitive_guard, descr, version) info.clear() - loop.prefix += self._newoperations + loop.prefix = self._newoperations + loop.prefix loop.operations = [op for op in loop.operations if op] - - # TODO if self.has_two_labels: - # TODO oplist = [loop.operations[0]] + self._newoperations + \ - # TODO [op for op in loop.operations[1:] if op] - # TODO loop.operations = oplist - # TODO else: - # TODO loop.operations = self._newoperations + \ - # TODO [op for op in loop.operations if op] - 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 @@ -555,7 +555,9 @@ descr.rd_accum_list = AccumInfo(descr.rd_accum_list, i, accum.operator, arg, None) seed = accum.getleftmostseed() + print "pre", failargs[i], "=>", failargs[i] = self.renamer.rename_map.get(seed, seed) + print failargs[i] def profitable(self): return self.costmodel.profitable() 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 @@ -66,8 +66,20 @@ return oplist + self.operations + [self.jump] def clone(self): + renamer = Renamer() + label = self.label.copy() + prefix = [] + for op in self.prefix: + newop = op.copy() + renamer.rename(newop) + if not newop.returns_void(): + renamer.start_renaming(op, newop) + prefix.append(newop) + prefix_label = None + if self.prefix_label: + prefix_label = self.prefix_label.copy() + renamer.rename(prefix_label) oplist = [] - renamer = Renamer() for op in self.operations: newop = op.copy() renamer.rename(newop) @@ -76,7 +88,10 @@ oplist.append(newop) jump = self.jump.copy() renamer.rename(jump) - return VectorLoop(self.label.copy(), oplist, jump) + loop = VectorLoop(self.label.copy(), oplist, jump) + loop.prefix = prefix + loop.prefix_label = prefix_label + return loop def optimize_vector(metainterp_sd, jitdriver_sd, warmstate, loop_info, loop_ops): """ Enter the world of SIMD. Bails if it cannot transform the trace. """ 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 @@ -270,6 +270,10 @@ # -------------- def copy(self): + if self.is_guard(): + op = self.copy_and_change(self.opnum) + op.setfailargs(self.getfailargs()[:]) + return op return self.copy_and_change(self.opnum) def copy_and_change(self, opnum, args=None, descr=None): _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit