Test that fcvt canonicalizes NaNs
authorPalmer Dabbelt <palmer.dabbelt@eecs.berkeley.edu>
Sat, 30 Jan 2016 00:54:18 +0000 (16:54 -0800)
committerPalmer Dabbelt <palmer.dabbelt@eecs.berkeley.edu>
Sat, 30 Jan 2016 01:51:24 +0000 (17:51 -0800)
I believe this is entirely within the RISC-V ISA spec:

 * fmv is defined to move IEEE floats
 * All otherwise-unspeficied floating-point operations canonicalize NaNs

This test fails on Spike, but passes on Rocket.  I believe this is the source
of my current torture failures.

isa/rv64uf/fcvt.S

index bc0f75ce412a6699b9b0f6076e7f3478a4b85c82..cbaf6d31ba474614c9dc51f8a2baac10650b726c 100644 (file)
@@ -44,6 +44,15 @@ RVTEST_CODE_BEGIN
   TEST_FCVT_S_D(20, -1.5, -1.5)
   TEST_FCVT_D_S(21, -1.5, -1.5)
 
+  TEST_CASE(22, a0, 0x7ff8000000000000,
+    la a1, test_data_22;
+    ld a2, 0(a1);
+    fmv.d.x f2, a2;
+    fcvt.s.d f2, f2;
+    fcvt.d.s f2, f2;
+    fmv.x.d a0, f2;
+  )
+
   TEST_PASSFAIL
 
 RVTEST_CODE_END
@@ -53,4 +62,7 @@ RVTEST_DATA_BEGIN
 
   TEST_DATA
 
+test_data_22:
+  .dword 0x7ffcffffffff8004
+
 RVTEST_DATA_END