Check NAN values in fdiv tests
authorPalmer Dabbelt <palmer.dabbelt@eecs.berkeley.edu>
Fri, 29 Jan 2016 19:33:40 +0000 (11:33 -0800)
committerPalmer Dabbelt <palmer.dabbelt@eecs.berkeley.edu>
Fri, 29 Jan 2016 19:33:40 +0000 (11:33 -0800)
The new RISC-V ISA spec mandates NAN bit patterns.  This test checks to make
sure that those bit patterns come out of fsqrt(-1).  These pass on both spike
and Rocket.

An additional _DWORD_RESULT version of the FP test macros is added to
facilitate floating-point tests that compare against particular bit patterns.

isa/macros/scalar/test_macros.h
isa/rv64uf/fdiv.S

index 05ed7c8f8030481efb1886ef00476c6773802dda..4b1e1f58aa479f0cb9f64d8ca8255bdd22ffba0a 100644 (file)
@@ -500,6 +500,14 @@ test_ ## testnum: \
   TEST_FP_OP_D_INTERNAL( testnum, flags, double result, val1, 0.0, 0.0, \
                     inst f3, f0; fmv.x.d a0, f3)
 
+#define TEST_FP_OP1_S_DWORD_RESULT( testnum, inst, flags, result, val1 ) \
+  TEST_FP_OP_S_INTERNAL( testnum, flags, dword result, val1, 0.0, 0.0, \
+                    inst f3, f0; fmv.x.s a0, f3)
+
+#define TEST_FP_OP1_D_DWORD_RESULT( testnum, inst, flags, result, val1 ) \
+  TEST_FP_OP_D_INTERNAL( testnum, flags, dword result, val1, 0.0, 0.0, \
+                    inst f3, f0; fmv.x.d a0, f3)
+
 #define TEST_FP_OP2_S( testnum, inst, flags, result, val1, val2 ) \
   TEST_FP_OP_S_INTERNAL( testnum, flags, float result, val1, val2, 0.0, \
                     inst f3, f0, f1; fmv.x.s a0, f3)
index b445663f6c928be6ed6b48926e2b9f7245114352..4002e448e0cc62f385844e8c6422230c1d38acc8 100644 (file)
@@ -31,6 +31,9 @@ RVTEST_CODE_BEGIN
   TEST_FP_OP1_D(13,  fsqrt.d, 1, 1.7724538498928541, 3.14159265 );
   TEST_FP_OP1_D(14,  fsqrt.d, 0,                100,      10000 );
 
+  TEST_FP_OP1_S_DWORD_RESULT(15,  fsqrt.s, 0x10,              0x7FC00000,      -1.0 );
+  TEST_FP_OP1_D_DWORD_RESULT(16,  fsqrt.d, 0x10,      0x7FF8000000000000,      -1.0 );
+
   TEST_PASSFAIL
 
 RVTEST_CODE_END