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