Author: Carl Friedrich Bolz-Tereick <cfb...@gmx.de>
Branch: intbound-improvements
Changeset: r93271:cfd8399c3787
Date: 2017-12-03 19:27 +0100
http://bitbucket.org/pypy/pypy/changeset/cfd8399c3787/

Log:    invert(invert(x)) == x

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
@@ -96,6 +96,10 @@
 
         return False
 
+    def optimize_INT_INVERT(self, op):
+        self.optimizer.pure_from_args(rop.INT_INVERT, [op], op.getarg(0))
+        return self.emit(op)
+
     def optimize_INT_AND(self, op):
         b1 = self.getintbound(op.getarg(0))
         b2 = self.getintbound(op.getarg(1))
diff --git a/rpython/jit/metainterp/optimizeopt/test/test_optimizebasic.py 
b/rpython/jit/metainterp/optimizeopt/test/test_optimizebasic.py
--- a/rpython/jit/metainterp/optimizeopt/test/test_optimizebasic.py
+++ b/rpython/jit/metainterp/optimizeopt/test/test_optimizebasic.py
@@ -3433,6 +3433,20 @@
         """
         self.optimize_loop(ops, expected)
 
+    def test_int_invert(self):
+        ops = """
+        [i0]
+        i2 = int_invert(i0)
+        i3 = int_invert(i2)
+        jump(i3)
+        """
+        expected = """
+        [i0]
+        i2 = int_invert(i0)
+        jump(i0)
+        """
+        self.optimize_loop(ops, expected)
+
     def test_int_add_sub_constants_inverse(self):
         py.test.skip("reenable")
         import sys
_______________________________________________
pypy-commit mailing list
pypy-commit@python.org
https://mail.python.org/mailman/listinfo/pypy-commit

Reply via email to