Added -NaN test for fcvt.{w/h}.s
[riscv-tests.git] / isa / rv64uf / fcvt_w.S
index ffe344ed29d278a9ec51b36a39f96378db89965c..6d8b1ac31dc1bf81d47c26b19ad4ce1137ce28c9 100644 (file)
@@ -88,6 +88,18 @@ RVTEST_CODE_BEGIN
   TEST_FP_INT_OP_D(78, fcvt.lu.d, 0x10,         -1, -3e9, rtz);
   TEST_FP_INT_OP_D(79, fcvt.lu.d, 0x00, 3000000000,  3e9, rtz);
 
+  # test negative NaN, negative infinity conversion
+  TEST_CASE(80, x1, 0xffffffff80000000, la x1, tdat; flw f1, 0(x1); fcvt.w.s x1, f1)
+  TEST_CASE(81, x1, 0x8000000000000000, la x1, tdat; flw f1, 0(x1); fcvt.l.s x1, f1)
+  TEST_CASE(82, x1, 0xffffffff80000000, la x1, tdat; flw f1, 8(x1); fcvt.w.s x1, f1)
+  TEST_CASE(83, x1, 0x8000000000000000, la x1, tdat; flw f1, 8(x1); fcvt.l.s x1, f1)
+
+  # test positive NaN, positive infinity conversion
+  TEST_CASE(84, x1, 0x000000007fffffff, la x1, tdat; flw f1, 4(x1); fcvt.w.s x1, f1)
+  TEST_CASE(85, x1, 0x7fffffffffffffff, la x1, tdat; flw f1, 4(x1); fcvt.l.s x1, f1)
+  TEST_CASE(86, x1, 0x000000007fffffff, la x1, tdat; flw f1,12(x1); fcvt.w.s x1, f1)
+  TEST_CASE(87, x1, 0x7fffffffffffffff, la x1, tdat; flw f1,12(x1); fcvt.l.s x1, f1)
+
   TEST_PASSFAIL
 
 RVTEST_CODE_END
@@ -97,4 +109,11 @@ RVTEST_DATA_BEGIN
 
   TEST_DATA
 
+# -NaN, NaN, -inf, +inf
+tdat:
+.word 0xffffffff
+.word 0x7fffffff
+.word 0xff800000
+.word 0x7f800000
+
 RVTEST_DATA_END