[pypy-commit] pypy int-tag-untag-as-operations: make all optimizeopt tests pass
cfbolz
noreply at buildbot.pypy.org
Thu Oct 27 11:53:19 CEST 2011
Author: Carl Friedrich Bolz <cfbolz at gmx.de>
Branch: int-tag-untag-as-operations
Changeset: r48498:5dea661f90f6
Date: 2011-10-25 13:53 +0200
http://bitbucket.org/pypy/pypy/changeset/5dea661f90f6/
Log: make all optimizeopt tests pass
diff --git a/pypy/jit/backend/llgraph/llimpl.py b/pypy/jit/backend/llgraph/llimpl.py
--- a/pypy/jit/backend/llgraph/llimpl.py
+++ b/pypy/jit/backend/llgraph/llimpl.py
@@ -87,10 +87,13 @@
'int_is_true' : (('int',), 'bool'),
'int_is_zero' : (('int',), 'bool'),
'int_neg' : (('int',), 'int'),
+ 'int_tag' : (('int', ), 'int'),
+ 'int_untag' : (('int', ), 'int'),
'int_invert' : (('int',), 'int'),
'int_add_ovf' : (('int', 'int'), 'int'),
'int_sub_ovf' : (('int', 'int'), 'int'),
'int_mul_ovf' : (('int', 'int'), 'int'),
+ 'int_tag_ovf' : (('int', ), 'int'),
'uint_add' : (('int', 'int'), 'int'),
'uint_sub' : (('int', 'int'), 'int'),
'uint_mul' : (('int', 'int'), 'int'),
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
@@ -305,20 +305,20 @@
def optimize_INT_TAG(self, op):
v1 = self.getvalue(op.getarg(0))
+ self.emit_operation(op)
r = self.getvalue(op.result)
resbound = v1.intbound.mul(2).add(1)
r.intbound.intersect(resbound)
maxbounds = IntBound((-sys.maxint-1) >> 1, sys.maxint >> 1)
v1.intbound.intersect(maxbounds)
self.pure(rop.INT_UNTAG, [op.result], op.getarg(0))
- self.emit_operation(op)
def optimize_INT_UNTAG(self, op):
v1 = self.getvalue(op.getarg(0))
self.pure(rop.INT_TAG, [op.result], op.getarg(0))
+ self.emit_operation(op)
r = self.getvalue(op.result)
r.intbound.intersect(v1.intbound.rshift_bound(IntBound(1, 1)))
- self.emit_operation(op)
def optimize_ARRAYLEN_GC(self, op):
self.emit_operation(op)
diff --git a/pypy/jit/metainterp/optimizeopt/test/test_optimizeopt.py b/pypy/jit/metainterp/optimizeopt/test/test_optimizeopt.py
--- a/pypy/jit/metainterp/optimizeopt/test/test_optimizeopt.py
+++ b/pypy/jit/metainterp/optimizeopt/test/test_optimizeopt.py
@@ -5124,6 +5124,7 @@
[i0]
i1 = int_lt(i0, 1000)
guard_true(i1), []
+ i2 = int_tag(i0)
i3 = int_add(i0, 1)
jump(i3)
"""
More information about the pypy-commit
mailing list