[pypy-svn] r71682 - in pypy/trunk/pypy/jit/metainterp: . test

fijal at codespeak.net fijal at codespeak.net
Wed Mar 3 01:54:18 CET 2010


Author: fijal
Date: Wed Mar  3 01:54:17 2010
New Revision: 71682

Modified:
   pypy/trunk/pypy/jit/metainterp/executor.py
   pypy/trunk/pypy/jit/metainterp/pyjitpl.py
   pypy/trunk/pypy/jit/metainterp/resoperation.py
   pypy/trunk/pypy/jit/metainterp/test/test_basic.py
Log:
implement uint_floordiv


Modified: pypy/trunk/pypy/jit/metainterp/executor.py
==============================================================================
--- pypy/trunk/pypy/jit/metainterp/executor.py	(original)
+++ pypy/trunk/pypy/jit/metainterp/executor.py	Wed Mar  3 01:54:17 2010
@@ -31,6 +31,11 @@
     z = llop.int_floordiv(lltype.Signed, box1.getint(), box2.getint())
     return ConstInt(z)
 
+def do_uint_floordiv(cpu, box1, box2):
+    z = llop.uint_floordiv(lltype.Unsigned, r_uint(box1.getint()),
+                           r_uint(box2.getint()))
+    return ConstInt(intmask(z))
+
 def do_int_mod(cpu, box1, box2):
     z = llop.int_mod(lltype.Signed, box1.getint(), box2.getint())
     return ConstInt(z)

Modified: pypy/trunk/pypy/jit/metainterp/pyjitpl.py
==============================================================================
--- pypy/trunk/pypy/jit/metainterp/pyjitpl.py	(original)
+++ pypy/trunk/pypy/jit/metainterp/pyjitpl.py	Wed Mar  3 01:54:17 2010
@@ -206,6 +206,7 @@
                     'int_and', 'int_or', 'int_xor',
                     'int_rshift', 'int_lshift', 'uint_rshift',
                     'uint_lt', 'uint_le', 'uint_gt', 'uint_ge',
+                    'uint_floordiv',
                     'float_add', 'float_sub', 'float_mul', 'float_truediv',
                     'float_lt', 'float_le', 'float_eq',
                     'float_ne', 'float_gt', 'float_ge',

Modified: pypy/trunk/pypy/jit/metainterp/resoperation.py
==============================================================================
--- pypy/trunk/pypy/jit/metainterp/resoperation.py	(original)
+++ pypy/trunk/pypy/jit/metainterp/resoperation.py	Wed Mar  3 01:54:17 2010
@@ -142,6 +142,7 @@
     'INT_SUB/2',
     'INT_MUL/2',
     'INT_FLOORDIV/2',
+    'UINT_FLOORDIV/2',
     'INT_MOD/2',
     'INT_AND/2',
     'INT_OR/2',

Modified: pypy/trunk/pypy/jit/metainterp/test/test_basic.py
==============================================================================
--- pypy/trunk/pypy/jit/metainterp/test/test_basic.py	(original)
+++ pypy/trunk/pypy/jit/metainterp/test/test_basic.py	Wed Mar  3 01:54:17 2010
@@ -200,6 +200,15 @@
         res = self.interp_operations(f, [42])
         assert res == 42
 
+    def test_uint_floordiv(self):
+        from pypy.rlib.rarithmetic import r_uint
+        
+        def f(a, b):
+            return a/b
+
+        res = self.interp_operations(f, [r_uint(4), r_uint(3)])
+        assert res == 1
+
     def test_direct_call(self):
         def g(n):
             return n + 2



More information about the Pypy-commit mailing list