Author: Brian Kearns <[email protected]>
Branch:
Changeset: r69570:56c6402c9b80
Date: 2014-03-01 02:39 -0500
http://bitbucket.org/pypy/pypy/changeset/56c6402c9b80/
Log: use intbounds to optimize int_force_ge_zero
diff --git a/pypy/module/micronumpy/test/test_zjit.py
b/pypy/module/micronumpy/test/test_zjit.py
--- a/pypy/module/micronumpy/test/test_zjit.py
+++ b/pypy/module/micronumpy/test/test_zjit.py
@@ -532,7 +532,6 @@
'guard_true': 9,
'guard_value': 4,
'int_add': 6,
- 'int_force_ge_zero': 1,
'int_ge': 3,
'int_lt': 4,
'jump': 3,
diff --git a/rpython/jit/metainterp/optimizeopt/intbounds.py
b/rpython/jit/metainterp/optimizeopt/intbounds.py
--- a/rpython/jit/metainterp/optimizeopt/intbounds.py
+++ b/rpython/jit/metainterp/optimizeopt/intbounds.py
@@ -329,6 +329,13 @@
else:
self.emit_operation(op)
+ def optimize_INT_FORCE_GE_ZERO(self, op):
+ value = self.getvalue(op.getarg(0))
+ if value.intbound.known_ge(IntBound(0, 0)):
+ self.make_equal_to(op.result, value)
+ else:
+ self.emit_operation(op)
+
def optimize_ARRAYLEN_GC(self, op):
self.emit_operation(op)
array = self.getvalue(op.getarg(0))
diff --git a/rpython/jit/metainterp/optimizeopt/optimizer.py
b/rpython/jit/metainterp/optimizeopt/optimizer.py
--- a/rpython/jit/metainterp/optimizeopt/optimizer.py
+++ b/rpython/jit/metainterp/optimizeopt/optimizer.py
@@ -654,6 +654,3 @@
dispatch_opt = make_dispatcher_method(Optimizer, 'optimize_',
default=Optimizer.optimize_default)
-
-
-
diff --git a/rpython/jit/metainterp/optimizeopt/test/test_optimizeopt.py
b/rpython/jit/metainterp/optimizeopt/test/test_optimizeopt.py
--- a/rpython/jit/metainterp/optimizeopt/test/test_optimizeopt.py
+++ b/rpython/jit/metainterp/optimizeopt/test/test_optimizeopt.py
@@ -4392,6 +4392,27 @@
"""
self.optimize_strunicode_loop(ops, expected, preamble)
+ def test_bound_force_ge_zero(self):
+ ops = """
+ [p0]
+ i0 = arraylen_gc(p0)
+ i1 = int_force_ge_zero(i0)
+ escape(i1)
+ jump(p0)
+ """
+ preamble = """
+ [p0]
+ i0 = arraylen_gc(p0)
+ escape(i0)
+ jump(p0, i0)
+ """
+ expected = """
+ [p0, i0]
+ escape(i0)
+ jump(p0, i0)
+ """
+ self.optimize_loop(ops, expected, preamble)
+
def test_addsub_const(self):
ops = """
[i0]
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit