[pypy-commit] pypy vecopt2: guard_early_exit are not passed to the backend. vectorize tests all pass again
plan_rich
noreply at buildbot.pypy.org
Tue May 5 09:46:24 CEST 2015
Author: Richard Plangger <rich at pasra.at>
Branch: vecopt2
Changeset: r77129:c9ea863cdc2d
Date: 2015-05-01 10:44 +0200
http://bitbucket.org/pypy/pypy/changeset/c9ea863cdc2d/
Log: guard_early_exit are not passed to the backend. vectorize tests all
pass again
diff --git a/rpython/jit/metainterp/optimizeopt/rewrite.py b/rpython/jit/metainterp/optimizeopt/rewrite.py
--- a/rpython/jit/metainterp/optimizeopt/rewrite.py
+++ b/rpython/jit/metainterp/optimizeopt/rewrite.py
@@ -559,6 +559,9 @@
def optimize_GUARD_FUTURE_CONDITION(self, op):
pass # just remove it
+ def optimize_GUARD_EARLY_EXIT(self, op):
+ pass # just remove it
+
def optimize_INT_FLOORDIV(self, op):
v1 = self.getvalue(op.getarg(0))
v2 = self.getvalue(op.getarg(1))
diff --git a/rpython/jit/metainterp/optimizeopt/simplify.py b/rpython/jit/metainterp/optimizeopt/simplify.py
--- a/rpython/jit/metainterp/optimizeopt/simplify.py
+++ b/rpython/jit/metainterp/optimizeopt/simplify.py
@@ -65,8 +65,8 @@
def optimize_GUARD_FUTURE_CONDITION(self, op):
pass
- #def optimize_GUARD_EARLY_EXIT(self, op):
- # pass
+ def optimize_GUARD_EARLY_EXIT(self, op):
+ pass
dispatch_opt = make_dispatcher_method(OptSimplify, 'optimize_',
default=OptSimplify.emit_operation)
diff --git a/rpython/jit/metainterp/optimizeopt/test/test_vectorize.py b/rpython/jit/metainterp/optimizeopt/test/test_vectorize.py
--- a/rpython/jit/metainterp/optimizeopt/test/test_vectorize.py
+++ b/rpython/jit/metainterp/optimizeopt/test/test_vectorize.py
@@ -102,7 +102,6 @@
opt.combine_packset()
opt.schedule()
opt.collapse_index_guards()
- self._do_optimize_loop(loop, {}, export_state=False)
return opt
def assert_unroll_loop_equals(self, loop, expected_loop, \
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
@@ -109,8 +109,8 @@
self.collapse_index_guards()
def emit_operation(self, op):
- #if op.getopnum() == rop.GUARD_EARLY_EXIT or \
- if op.getopnum() == rop.DEBUG_MERGE_POINT:
+ if op.getopnum() == rop.GUARD_EARLY_EXIT or \
+ op.getopnum() == rop.DEBUG_MERGE_POINT:
return
self._last_emitted_op = op
self._newoperations.append(op)
@@ -131,11 +131,13 @@
jump_op = loop.operations[op_count-1]
# 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 jump_op.getopnum() == rop.LABEL:
- jump_op = ResOperation(rop.JUMP, jump_op.getarglist(), None, label_op.getdescr())
+ jump_op = ResOperation(rop.JUMP, jump_op.getarglist(), None, target_token)
else:
jump_op = jump_op.clone()
- #jump_op.setdescr(label_op.getdescr())
+ jump_op.setdescr(target_token)
assert jump_op.is_final()
self.emit_unrolled_operation(label_op)
diff --git a/rpython/jit/metainterp/pyjitpl.py b/rpython/jit/metainterp/pyjitpl.py
--- a/rpython/jit/metainterp/pyjitpl.py
+++ b/rpython/jit/metainterp/pyjitpl.py
@@ -2317,6 +2317,10 @@
frame = self.framestack[-1]
if opnum == rop.GUARD_FUTURE_CONDITION:
pass
+ elif opnum == rop.GUARD_EARLY_EXIT:
+ # prevents it from building a bridge
+ # TODO
+ self.resumekey_original_loop_token = None
elif opnum == rop.GUARD_TRUE: # a goto_if_not that jumps only now
frame.pc = frame.jitcode.follow_jump(frame.pc)
elif opnum == rop.GUARD_FALSE: # a goto_if_not that stops jumping;
diff --git a/rpython/jit/metainterp/test/test_vectorize.py b/rpython/jit/metainterp/test/test_vectorize.py
--- a/rpython/jit/metainterp/test/test_vectorize.py
+++ b/rpython/jit/metainterp/test/test_vectorize.py
@@ -15,6 +15,9 @@
class VectorizeTests:
enable_opts = 'intbounds:rewrite:virtualize:string:earlyforce:pure:heap:unroll'
+ def setup_method(self, method):
+ print "RUNNING", method.__name__
+
def meta_interp(self, f, args, policy=None):
return ll_meta_interp(f, args, enable_opts=self.enable_opts,
policy=policy,
@@ -92,7 +95,7 @@
return res
res = self.meta_interp(f, [i])
assert res == f(i)
- if i > 4:
+ if 4 < i:
self.check_trace_count(1)
class VectorizeLLtypeTests(VectorizeTests):
More information about the pypy-commit
mailing list