[pypy-commit] pypy s390x-backend: testing several other values for floating point addition

plan_rich noreply at buildbot.pypy.org
Thu Oct 22 08:15:44 EDT 2015


Author: Richard Plangger <planrichi at gmail.com>
Branch: s390x-backend
Changeset: r80388:8367c6c91fdf
Date: 2015-10-22 14:16 +0200
http://bitbucket.org/pypy/pypy/changeset/8367c6c91fdf/

Log:	testing several other values for floating point addition

diff --git a/rpython/jit/backend/zarch/test/test_assembler.py b/rpython/jit/backend/zarch/test/test_assembler.py
--- a/rpython/jit/backend/zarch/test/test_assembler.py
+++ b/rpython/jit/backend/zarch/test/test_assembler.py
@@ -1,3 +1,4 @@
+import py
 import struct
 from rpython.jit.backend.zarch import conditions as con
 from rpython.jit.backend.zarch import masks as msk
@@ -35,6 +36,10 @@
     print hex(addr)
     return struct.pack('>Q', addr)
 
+def isclose(a,b, rel_tol=1e-9, abs_tol=0.0):
+    # from PEP 485, added in python 3.5
+    return abs(a-b) <= max( rel_tol * max(abs(a), abs(b)), abs_tol )
+
 class TestRunningAssembler(object):
     def setup_method(self, method):
         cpu = CPU(None, None)
@@ -210,20 +215,28 @@
         self.a.jmpto(reg.r14)
         assert run_asm(self.a) == -15
 
-    def test_float_to_memory(self):
+    @py.test.mark.parametrize("v1,v2,res", [
+        (    0.0,       0.0,       0.0),
+        (   -15.0,    -15.0,     -30.0),
+        (    1.5,     -3.22,      -1.72),
+        (    0.5,       0.0,       0.5),
+        (    0.0001,   -0.0002,   -0.0001),
+    ])
+    def test_float_to_memory(self, v1, v2, res):
         with lltype.scoped_alloc(DOUBLE_ARRAY_PTR.TO, 16) as mem:
             with self.label('func', func=True):
                 with self.label('lit'):
                     self.mc.BRAS(reg.r13, loc.imm(0))
-                self.mc.write(BFL(-15.0))
+                self.mc.write(BFL(v1))
+                self.mc.write(BFL(v2))
                 self.mc.write(ADDR(mem))
                 self.jump_here(self.mc.BRAS, 'lit')
                 self.mc.LD(reg.f0, loc.addr(0, reg.r13))
-                self.mc.LDR(reg.f1, reg.f0)
+                self.mc.LD(reg.f1, loc.addr(8, reg.r13))
                 self.mc.ADBR(reg.f0, reg.f1)
-                self.mc.LG(reg.r11, loc.addr(8, reg.r13))
+                self.mc.LG(reg.r11, loc.addr(16, reg.r13))
                 self.mc.STD(reg.f0, loc.addr(0, reg.r11))
             self.a.jmpto(reg.r14)
             run_asm(self.a)
-            assert mem[0] == -30.0
+            assert isclose(mem[0],res)
 


More information about the pypy-commit mailing list