Author: Richard Plangger <r...@pasra.at> Branch: vecopt2 Changeset: r77130:7a9dab462e3d Date: 2015-05-01 21:19 +0200 http://bitbucket.org/pypy/pypy/changeset/7a9dab462e3d/
Log: changes to make rpython happy diff --git a/rpython/jit/backend/x86/regalloc.py b/rpython/jit/backend/x86/regalloc.py --- a/rpython/jit/backend/x86/regalloc.py +++ b/rpython/jit/backend/x86/regalloc.py @@ -1510,8 +1510,8 @@ # to save it. #argloc = self.loc(op.getarg(0)) self.xrm.force_result_in_reg(op.result, op.getarg(0)) - if op.getarg(1).value != op.getarg(2).value: - raise NotImplementedError("signext not implemented") + #if op.getarg(1).value != op.getarg(2).value: + # raise NotImplementedError("signext not implemented") def consider_guard_early_exit(self, op): pass diff --git a/rpython/jit/metainterp/optimizeopt/dependency.py b/rpython/jit/metainterp/optimizeopt/dependency.py --- a/rpython/jit/metainterp/optimizeopt/dependency.py +++ b/rpython/jit/metainterp/optimizeopt/dependency.py @@ -429,6 +429,7 @@ self.memory_refs = {} self.schedulable_nodes = [] self.index_vars = {} + self.comparison_vars = {} self.guards = [] self.build_dependencies() @@ -447,7 +448,7 @@ # label_pos = 0 jump_pos = len(self.nodes)-1 - intformod = IntegralForwardModification(self.memory_refs, self.index_vars) + intformod = IntegralForwardModification(self.memory_refs, self.index_vars, self.comparison_vars) # pass 1 for i,node in enumerate(self.nodes): op = node.op @@ -685,8 +686,9 @@ class IntegralForwardModification(object): """ Calculates integral modifications on an integer box. """ - def __init__(self, memory_refs, index_vars): + def __init__(self, memory_refs, index_vars, comparison_vars): self.index_vars = index_vars + self.comparison_vars = comparison_vars self.memory_refs = memory_refs def is_const_integral(self, box): @@ -710,7 +712,7 @@ if not self.is_const_integral(box_a1): right = self.get_or_create(box_a1) box_r = op.result - self.index_vars[box_r] = IndexGuard(op.getopnum(), left, right) + self.comparison_vars[box_r] = IndexGuard(op.getopnum(), left, right) additive_func_source = """ def operation_{name}(self, op, node): @@ -802,11 +804,11 @@ if self.lindex_var and self.rindex_var: return (self.lindex_var, self.rindex_var) elif self.lindex_var: - return (self.lindex_var,) + return (self.lindex_var, None) elif self.rindex_var: - return (self.rindex_var,) + return (self.rindex_var, None) else: - assert False, "integer comparison must have left or right index" + return (None, None) def adapt_operation(self, op): pass @@ -832,6 +834,7 @@ def less(self, other): if self.same_variable(other): return self.diff(other) < 0 + return False def clone(self): c = IndexVar(self.var) 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 @@ -132,7 +132,8 @@ # use the target token of the label assert jump_op.getopnum() in (rop.LABEL, rop.JUMP) target_token = label_op.getdescr() - target_token.assumed_classes = {} + if not we_are_translated(): + target_token.assumed_classes = {} if jump_op.getopnum() == rop.LABEL: jump_op = ResOperation(rop.JUMP, jump_op.getarglist(), None, target_token) else: @@ -427,6 +428,7 @@ strongest_guards = {} strongest_guards_var = {} index_vars = self.dependency_graph.index_vars + comparison_vars = self.dependency_graph.comparison_vars operations = self.loop.operations var_for_guard = {} for i in range(len(operations)-1, -1, -1): @@ -435,8 +437,10 @@ for arg in op.getarglist(): var_for_guard[arg] = True try: - comparison = index_vars[arg] - for index_var in comparison.getindex_vars(): + comparison = comparison_vars[arg] + for index_var in list(comparison.getindex_vars()): + if not index_var: + continue var = index_var.getvariable() strongest_known = strongest_guards_var.get(var, None) if not strongest_known: _______________________________________________ pypy-commit mailing list pypy-commit@python.org https://mail.python.org/mailman/listinfo/pypy-commit