[pypy-commit] pypy vecopt-merge: bail if the argument is in failargs as well
plan_rich
noreply at buildbot.pypy.org
Thu Oct 8 11:06:39 CEST 2015
Author: Richard Plangger <planrichi at gmail.com>
Branch: vecopt-merge
Changeset: r80038:d3a1d758a0a3
Date: 2015-10-08 11:06 +0200
http://bitbucket.org/pypy/pypy/changeset/d3a1d758a0a3/
Log: bail if the argument is in failargs as well
diff --git a/rpython/jit/backend/llsupport/regalloc.py b/rpython/jit/backend/llsupport/regalloc.py
--- a/rpython/jit/backend/llsupport/regalloc.py
+++ b/rpython/jit/backend/llsupport/regalloc.py
@@ -267,6 +267,7 @@
raise NotImplementedError("Purely abstract")
class RegisterManager(object):
+
""" Class that keeps track of register allocations
"""
box_types = None # or a list of acceptable types
diff --git a/rpython/jit/backend/x86/vector_ext.py b/rpython/jit/backend/x86/vector_ext.py
--- a/rpython/jit/backend/x86/vector_ext.py
+++ b/rpython/jit/backend/x86/vector_ext.py
@@ -597,9 +597,9 @@
def consider_vec_float_eq(self, op):
lhs = op.getarg(0)
args = op.getarglist()
+ rhsloc = self.make_sure_var_in_reg(op.getarg(1), args)
lhsloc = self.xrm.force_result_in_reg(op, op.getarg(0), args)
- rhsloc = self.make_sure_var_in_reg(op.getarg(1), args)
- resloc = self.force_allocate_reg_or_cc(op)
+ #resloc = self.force_allocate_reg_or_cc(op)
self.perform(op, [lhsloc, rhsloc, imm(lhs.bytesize)], lhsloc)
consider_vec_float_ne = consider_vec_float_eq
@@ -693,9 +693,6 @@
consider_vec_i = _consider_vec
consider_vec_f = _consider_vec
- def consider_guard_early_exit(self, op):
- pass
-
def consider_vec_cast_float_to_int(self, op):
args = op.getarglist()
srcloc = self.make_sure_var_in_reg(op.getarg(0), args)
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
@@ -442,6 +442,10 @@
args = left.getfailargs()
for i, arg in enumerate(args):
pos, newarg = state.getvector_of_box(arg)
+ if newarg in vecop.getarglist():
+ # in this case we do not know which slot
+ # failed. thus we bail!
+ raise NotAVectorizeableLoop()
if newarg is None:
newarg = arg
if newarg.is_vector(): # can be moved to guard exit!
diff --git a/rpython/jit/metainterp/test/test_vector.py b/rpython/jit/metainterp/test/test_vector.py
--- a/rpython/jit/metainterp/test/test_vector.py
+++ b/rpython/jit/metainterp/test/test_vector.py
@@ -196,7 +196,9 @@
i = 0 ; nobreak = False
while i < d:
myjitdriver.jit_merge_point()
- if func(va[i]):
+ b = func(va[i])
+ if b:
+ assert b
break
i += 1
else:
More information about the pypy-commit
mailing list