[pypy-svn] pypy jit-str_in_preamble: hg merge default
hakanardo
commits-noreply at bitbucket.org
Sun Mar 27 20:30:35 CEST 2011
Author: Hakan Ardo <hakan at debian.org>
Branch: jit-str_in_preamble
Changeset: r42988:3cb0372b725f
Date: 2011-03-27 18:04 +0200
http://bitbucket.org/pypy/pypy/changeset/3cb0372b725f/
Log: hg merge default
diff --git a/pypy/jit/metainterp/test/test_optimizeopt.py b/pypy/jit/metainterp/test/test_optimizeopt.py
--- a/pypy/jit/metainterp/test/test_optimizeopt.py
+++ b/pypy/jit/metainterp/test/test_optimizeopt.py
@@ -819,6 +819,52 @@
"""
self.optimize_loop(ops, expected, preamble)
+ def test_compare_with_itself(self):
+ ops = """
+ []
+ i0 = escape()
+ i1 = int_lt(i0, i0)
+ guard_false(i1) []
+ i2 = int_le(i0, i0)
+ guard_true(i2) []
+ i3 = int_eq(i0, i0)
+ guard_true(i3) []
+ i4 = int_ne(i0, i0)
+ guard_false(i4) []
+ i5 = int_gt(i0, i0)
+ guard_false(i5) []
+ i6 = int_ge(i0, i0)
+ guard_true(i6) []
+ jump()
+ """
+ expected = """
+ []
+ i0 = escape()
+ jump()
+ """
+ self.optimize_loop(ops, expected)
+
+ def test_compare_with_itself_uint(self):
+ py.test.skip("implement me")
+ ops = """
+ []
+ i0 = escape()
+ i7 = uint_lt(i0, i0)
+ guard_false(i7) []
+ i8 = uint_le(i0, i0)
+ guard_true(i8) []
+ i9 = uint_gt(i0, i0)
+ guard_false(i9) []
+ i10 = uint_ge(i0, i0)
+ guard_true(i10) []
+ jump()
+ """
+ expected = """
+ []
+ i0 = escape()
+ jump()
+ """
+ self.optimize_loop(ops, expected)
diff --git a/pypy/jit/metainterp/optimizeopt/intbounds.py b/pypy/jit/metainterp/optimizeopt/intbounds.py
--- a/pypy/jit/metainterp/optimizeopt/intbounds.py
+++ b/pypy/jit/metainterp/optimizeopt/intbounds.py
@@ -206,7 +206,7 @@
v2 = self.getvalue(op.getarg(1))
if v1.intbound.known_lt(v2.intbound):
self.make_constant_int(op.result, 1)
- elif v1.intbound.known_ge(v2.intbound):
+ elif v1.intbound.known_ge(v2.intbound) or v1 is v2:
self.make_constant_int(op.result, 0)
else:
self.emit_operation(op)
@@ -216,7 +216,7 @@
v2 = self.getvalue(op.getarg(1))
if v1.intbound.known_gt(v2.intbound):
self.make_constant_int(op.result, 1)
- elif v1.intbound.known_le(v2.intbound):
+ elif v1.intbound.known_le(v2.intbound) or v1 is v2:
self.make_constant_int(op.result, 0)
else:
self.emit_operation(op)
@@ -224,7 +224,7 @@
def optimize_INT_LE(self, op):
v1 = self.getvalue(op.getarg(0))
v2 = self.getvalue(op.getarg(1))
- if v1.intbound.known_le(v2.intbound):
+ if v1.intbound.known_le(v2.intbound) or v1 is v2:
self.make_constant_int(op.result, 1)
elif v1.intbound.known_gt(v2.intbound):
self.make_constant_int(op.result, 0)
@@ -234,7 +234,7 @@
def optimize_INT_GE(self, op):
v1 = self.getvalue(op.getarg(0))
v2 = self.getvalue(op.getarg(1))
- if v1.intbound.known_ge(v2.intbound):
+ if v1.intbound.known_ge(v2.intbound) or v1 is v2:
self.make_constant_int(op.result, 1)
elif v1.intbound.known_lt(v2.intbound):
self.make_constant_int(op.result, 0)
More information about the Pypy-commit
mailing list