[pypy-commit] pypy default: Rename the RPython helpers from ll_int_floordiv() to ll_int_py_div(),

arigo pypy.commits at gmail.com
Wed Jun 8 16:37:38 EDT 2016


Author: Armin Rigo <arigo at tunes.org>
Branch: 
Changeset: r85043:fbfec7254a35
Date: 2016-06-08 21:26 +0200
http://bitbucket.org/pypy/pypy/changeset/fbfec7254a35/

Log:	Rename the RPython helpers from ll_int_floordiv() to
	ll_int_py_div(), because they are doing Python-style rounding,
	unlike llop.int_floordiv().

diff --git a/pypy/module/pypyjit/test_pypy_c/test_string.py b/pypy/module/pypyjit/test_pypy_c/test_string.py
--- a/pypy/module/pypyjit/test_pypy_c/test_string.py
+++ b/pypy/module/pypyjit/test_pypy_c/test_string.py
@@ -23,7 +23,7 @@
             guard_true(i14, descr=...)
             guard_not_invalidated(descr=...)
             i16 = int_eq(i6, %d)
-            i19 = call_i(ConstClass(ll_int_mod__Signed_Signed), i6, i10, descr=<Calli . ii EF=0 OS=14>)
+            i19 = call_i(ConstClass(ll_int_py_mod__Signed_Signed), i6, i10, descr=<Calli . ii EF=0 OS=14>)
             i21 = int_lt(i19, 0)
             guard_false(i21, descr=...)
             i22 = int_ge(i19, i10)
diff --git a/rpython/jit/codewriter/support.py b/rpython/jit/codewriter/support.py
--- a/rpython/jit/codewriter/support.py
+++ b/rpython/jit/codewriter/support.py
@@ -252,7 +252,7 @@
 def _ll_2_int_floordiv(x, y):
     # this is used only if the RPython program uses llop.int_floordiv()
     # explicitly.  For 'a // b', see _handle_int_special() in jtransform.py.
-    # This is the reverse of rpython.rtyper.rint.ll_int_floordiv(), i.e.
+    # This is the reverse of rpython.rtyper.rint.ll_int_py_div(), i.e.
     # the same logic as rpython.rtyper.lltypesystem.opimpl.op_int_floordiv
     # but written in a no-branch style.
     r = x // y
diff --git a/rpython/jit/codewriter/test/test_flatten.py b/rpython/jit/codewriter/test/test_flatten.py
--- a/rpython/jit/codewriter/test/test_flatten.py
+++ b/rpython/jit/codewriter/test/test_flatten.py
@@ -478,7 +478,7 @@
             except ZeroDivisionError:
                 return -42
         self.encoding_test(f, [7, 2], """
-            residual_call_ir_i $<* fn ll_int_floordiv_ovf_zer__Signed_Signed>, I[%i0, %i1], R[], <Descr> -> %i2
+            residual_call_ir_i $<* fn ll_int_py_div_ovf_zer__Signed_Signed>, I[%i0, %i1], R[], <Descr> -> %i2
             -live-
             catch_exception L1
             int_return %i2
@@ -505,7 +505,7 @@
                 return 42
         # XXX so far, this really produces a int_mod_ovf_zer...
         self.encoding_test(f, [7, 2], """
-            residual_call_ir_i $<* fn ll_int_mod_ovf_zer__Signed_Signed>, I[%i0, %i1], R[], <Descr> -> %i2
+            residual_call_ir_i $<* fn ll_int_py_mod_ovf_zer__Signed_Signed>, I[%i0, %i1], R[], <Descr> -> %i2
             -live-
             catch_exception L1
             int_return %i2
diff --git a/rpython/rtyper/rint.py b/rpython/rtyper/rint.py
--- a/rpython/rtyper/rint.py
+++ b/rpython/rtyper/rint.py
@@ -236,11 +236,11 @@
         return _rtype_template(hop, 'mul_ovf')
 
     def rtype_floordiv(_, hop):
-        return _rtype_call_helper(hop, 'floordiv', [ZeroDivisionError])
+        return _rtype_call_helper(hop, 'py_div', [ZeroDivisionError])
     rtype_inplace_floordiv = rtype_floordiv
 
     def rtype_floordiv_ovf(_, hop):
-        return _rtype_call_helper(hop, 'floordiv_ovf', [ZeroDivisionError])
+        return _rtype_call_helper(hop, 'py_div_ovf', [ZeroDivisionError])
 
     # turn 'div' on integers into 'floordiv'
     rtype_div         = rtype_floordiv
@@ -250,11 +250,11 @@
     # 'def rtype_truediv' is delegated to the superclass FloatRepr
 
     def rtype_mod(_, hop):
-        return _rtype_call_helper(hop, 'mod', [ZeroDivisionError])
+        return _rtype_call_helper(hop, 'py_mod', [ZeroDivisionError])
     rtype_inplace_mod = rtype_mod
 
     def rtype_mod_ovf(_, hop):
-        return _rtype_call_helper(hop, 'mod_ovf', [ZeroDivisionError])
+        return _rtype_call_helper(hop, 'py_mod_ovf', [ZeroDivisionError])
 
     def rtype_xor(_, hop):
         return _rtype_template(hop, 'xor')
@@ -319,7 +319,7 @@
     vlist = hop.inputargs(repr, repr2)
     prefix = repr.opprefix
 
-    if '_ovf' in func or func.startswith(('mod', 'floordiv')):
+    if '_ovf' in func or func.startswith(('py_mod', 'py_div')):
         if prefix+func not in ('int_add_ovf', 'int_add_nonneg_ovf',
                                'int_sub_ovf', 'int_mul_ovf'):
             raise TyperError("%r should not be used here any more" % (func,))
@@ -353,7 +353,7 @@
             any_implicit_exception = True
 
     if not any_implicit_exception:
-        if not func.startswith(('mod', 'floordiv')):
+        if not func.startswith(('py_mod', 'py_div')):
             return _rtype_template(hop, func)
 
     repr = hop.r_result
@@ -388,7 +388,7 @@
 # ---------- floordiv ----------
 
 @jit.oopspec("int.py_div(x, y)")
-def ll_int_floordiv(x, y):
+def ll_int_py_div(x, y):
     # Python, and RPython, assume that integer division truncates
     # towards -infinity.  However, in C, integer division truncates
     # towards 0.  So assuming that, we need to apply a correction
@@ -400,159 +400,159 @@
     return r + (u >> INT_BITS_1)
 
 @jit.oopspec("int.py_div(x, y)")
-def ll_int_floordiv_nonnegargs(x, y):
+def ll_int_py_div_nonnegargs(x, y):
     from rpython.rlib.debug import ll_assert
     r = llop.int_floordiv(Signed, x, y)            # <= truncates like in C
-    ll_assert(r >= 0, "int_floordiv_nonnegargs(): one arg is negative")
+    ll_assert(r >= 0, "int_py_div_nonnegargs(): one arg is negative")
     return r
 
-def ll_int_floordiv_zer(x, y):
+def ll_int_py_div_zer(x, y):
     if y == 0:
         raise ZeroDivisionError("integer division")
-    return ll_int_floordiv(x, y)
+    return ll_int_py_div(x, y)
 
-def ll_int_floordiv_ovf(x, y):
+def ll_int_py_div_ovf(x, y):
     # JIT: intentionally not short-circuited to produce only one guard
     # and to remove the check fully if one of the arguments is known
     if (x == -sys.maxint - 1) & (y == -1):
         raise OverflowError("integer division")
-    return ll_int_floordiv(x, y)
+    return ll_int_py_div(x, y)
 
-def ll_int_floordiv_ovf_zer(x, y):
+def ll_int_py_div_ovf_zer(x, y):
     if y == 0:
         raise ZeroDivisionError("integer division")
-    return ll_int_floordiv_ovf(x, y)
+    return ll_int_py_div_ovf(x, y)
 
 @jit.oopspec("int.udiv(x, y)")
-def ll_uint_floordiv(x, y):
+def ll_uint_py_div(x, y):
     return llop.uint_floordiv(Unsigned, x, y)
 
-def ll_uint_floordiv_zer(x, y):
+def ll_uint_py_div_zer(x, y):
     if y == 0:
         raise ZeroDivisionError("unsigned integer division")
-    return ll_uint_floordiv(x, y)
+    return ll_uint_py_div(x, y)
 
 if SignedLongLong == Signed:
-    ll_llong_floordiv      = ll_int_floordiv
-    ll_llong_floordiv_zer  = ll_int_floordiv_zer
-    ll_ullong_floordiv     = ll_uint_floordiv
-    ll_ullong_floordiv_zer = ll_uint_floordiv_zer
+    ll_llong_py_div      = ll_int_py_div
+    ll_llong_py_div_zer  = ll_int_py_div_zer
+    ll_ullong_py_div     = ll_uint_py_div
+    ll_ullong_py_div_zer = ll_uint_py_div_zer
 else:
     @jit.dont_look_inside
-    def ll_llong_floordiv(x, y):
+    def ll_llong_py_div(x, y):
         r = llop.llong_floordiv(SignedLongLong, x, y)  # <= truncates like in C
         p = r * y
         if y < 0: u = p - x
         else:     u = x - p
         return r + (u >> LLONG_BITS_1)
 
-    def ll_llong_floordiv_zer(x, y):
+    def ll_llong_py_div_zer(x, y):
         if y == 0:
             raise ZeroDivisionError("longlong division")
-        return ll_llong_floordiv(x, y)
+        return ll_llong_py_div(x, y)
 
     @jit.dont_look_inside
-    def ll_ullong_floordiv(x, y):
+    def ll_ullong_py_div(x, y):
         return llop.ullong_floordiv(UnsignedLongLong, x, y)
 
-    def ll_ullong_floordiv_zer(x, y):
+    def ll_ullong_py_div_zer(x, y):
         if y == 0:
             raise ZeroDivisionError("unsigned longlong division")
-        return ll_ullong_floordiv(x, y)
+        return ll_ullong_py_div(x, y)
 
 @jit.dont_look_inside
-def ll_lllong_floordiv(x, y):
+def ll_lllong_py_div(x, y):
     r = llop.lllong_floordiv(SignedLongLongLong, x, y) # <= truncates like in C
     p = r * y
     if y < 0: u = p - x
     else:     u = x - p
     return r + (u >> LLLONG_BITS_1)
 
-def ll_lllong_floordiv_zer(x, y):
+def ll_lllong_py_div_zer(x, y):
     if y == 0:
         raise ZeroDivisionError("longlonglong division")
-    return ll_lllong_floordiv(x, y)
+    return ll_lllong_py_div(x, y)
 
 
 # ---------- mod ----------
 
 @jit.oopspec("int.py_mod(x, y)")
-def ll_int_mod(x, y):
+def ll_int_py_mod(x, y):
     r = llop.int_mod(Signed, x, y)                 # <= truncates like in C
     if y < 0: u = -r
     else:     u = r
     return r + (y & (u >> INT_BITS_1))
 
 @jit.oopspec("int.py_mod(x, y)")
-def ll_int_mod_nonnegargs(x, y):
+def ll_int_py_mod_nonnegargs(x, y):
     from rpython.rlib.debug import ll_assert
     r = llop.int_mod(Signed, x, y)                 # <= truncates like in C
-    ll_assert(r >= 0, "int_mod_nonnegargs(): one arg is negative")
+    ll_assert(r >= 0, "int_py_mod_nonnegargs(): one arg is negative")
     return r
 
-def ll_int_mod_zer(x, y):
+def ll_int_py_mod_zer(x, y):
     if y == 0:
         raise ZeroDivisionError
-    return ll_int_mod(x, y)
+    return ll_int_py_mod(x, y)
 
-def ll_int_mod_ovf(x, y):
-    # see comment in ll_int_floordiv_ovf
+def ll_int_py_mod_ovf(x, y):
+    # see comment in ll_int_py_div_ovf
     if (x == -sys.maxint - 1) & (y == -1):
         raise OverflowError
-    return ll_int_mod(x, y)
+    return ll_int_py_mod(x, y)
 
-def ll_int_mod_ovf_zer(x, y):
+def ll_int_py_mod_ovf_zer(x, y):
     if y == 0:
         raise ZeroDivisionError
-    return ll_int_mod_ovf(x, y)
+    return ll_int_py_mod_ovf(x, y)
 
 @jit.oopspec("int.umod(x, y)")
-def ll_uint_mod(x, y):
+def ll_uint_py_mod(x, y):
     return llop.uint_mod(Unsigned, x, y)
 
-def ll_uint_mod_zer(x, y):
+def ll_uint_py_mod_zer(x, y):
     if y == 0:
         raise ZeroDivisionError
-    return ll_uint_mod(x, y)
+    return ll_uint_py_mod(x, y)
 
 if SignedLongLong == Signed:
-    ll_llong_mod      = ll_int_mod
-    ll_llong_mod_zer  = ll_int_mod_zer
-    ll_ullong_mod     = ll_uint_mod
-    ll_ullong_mod_zer = ll_uint_mod_zer
+    ll_llong_py_mod      = ll_int_py_mod
+    ll_llong_py_mod_zer  = ll_int_py_mod_zer
+    ll_ullong_py_mod     = ll_uint_py_mod
+    ll_ullong_py_mod_zer = ll_uint_py_mod_zer
 else:
     @jit.dont_look_inside
-    def ll_llong_mod(x, y):
+    def ll_llong_py_mod(x, y):
         r = llop.llong_mod(SignedLongLong, x, y)    # <= truncates like in C
         if y < 0: u = -r
         else:     u = r
         return r + (y & (u >> LLONG_BITS_1))
 
-    def ll_llong_mod_zer(x, y):
+    def ll_llong_py_mod_zer(x, y):
         if y == 0:
             raise ZeroDivisionError
-        return ll_llong_mod(x, y)
+        return ll_llong_py_mod(x, y)
 
     @jit.dont_look_inside
-    def ll_ullong_mod(x, y):
+    def ll_ullong_py_mod(x, y):
         return llop.ullong_mod(UnsignedLongLong, x, y)
 
-    def ll_ullong_mod_zer(x, y):
+    def ll_ullong_py_mod_zer(x, y):
         if y == 0:
             raise ZeroDivisionError
         return llop.ullong_mod(UnsignedLongLong, x, y)
 
 @jit.dont_look_inside
-def ll_lllong_mod(x, y):
+def ll_lllong_py_mod(x, y):
     r = llop.lllong_mod(SignedLongLongLong, x, y)  # <= truncates like in C
     if y < 0: u = -r
     else:     u = r
     return r + (y & (u >> LLLONG_BITS_1))
 
-def ll_lllong_mod_zer(x, y):
+def ll_lllong_py_mod_zer(x, y):
     if y == 0:
         raise ZeroDivisionError
-    return ll_lllong_mod(x, y)
+    return ll_lllong_py_mod(x, y)
 
 
 # ---------- lshift, neg, abs ----------
diff --git a/rpython/rtyper/test/test_rint.py b/rpython/rtyper/test/test_rint.py
--- a/rpython/rtyper/test/test_rint.py
+++ b/rpython/rtyper/test/test_rint.py
@@ -390,7 +390,7 @@
         res = self.interpret(f, [sys.maxint])
         assert res == 0
 
-    def test_int_floordiv_nonnegargs(self):
+    def test_int_py_div_nonnegargs(self):
         def f(x, y):
             assert x >= 0
             assert y >= 0
@@ -398,7 +398,7 @@
         res = self.interpret(f, [1234567, 123])
         assert res == 1234567 // 123
 
-    def test_int_mod_nonnegargs(self):
+    def test_int_py_mod_nonnegargs(self):
         def f(x, y):
             assert x >= 0
             assert y >= 0
diff --git a/rpython/translator/test/test_simplify.py b/rpython/translator/test/test_simplify.py
--- a/rpython/translator/test/test_simplify.py
+++ b/rpython/translator/test/test_simplify.py
@@ -55,7 +55,7 @@
     graph, _ = translate(f, [int, int], backend_optimize=False)
     assert len(graph.startblock.operations) == 1
     assert graph.startblock.operations[0].opname == 'direct_call'
-    assert 'int_floordiv_ovf_zer' in repr(
+    assert 'int_py_div_ovf_zer' in repr(
         graph.startblock.operations[0].args[0].value)
     assert len(graph.startblock.exits) == 3
     assert [link.target.operations for link in graph.startblock.exits[1:]] == \
@@ -73,7 +73,7 @@
     graph, _ = translate(f, [int, int], backend_optimize=False)
     assert len(graph.startblock.operations) == 1
     assert graph.startblock.operations[0].opname == 'direct_call'
-    assert 'int_floordiv_ovf_zer' in repr(
+    assert 'int_py_div_ovf_zer' in repr(
         graph.startblock.operations[0].args[0].value)
     assert len(graph.startblock.exits) == 3
     assert [link.target.operations for link in graph.startblock.exits[1:]] == \


More information about the pypy-commit mailing list