fcvt_w.S revision 12771:75508af5d8dc
14479Sbinkertn@umich.edu# See LICENSE for license details.
24479Sbinkertn@umich.edu
34479Sbinkertn@umich.edu#*****************************************************************************
44479Sbinkertn@umich.edu# fcvt_w.S
54479Sbinkertn@umich.edu#-----------------------------------------------------------------------------
64479Sbinkertn@umich.edu#
74479Sbinkertn@umich.edu# Test fcvt{wu|w|lu|l}.s instructions.
84479Sbinkertn@umich.edu#
94479Sbinkertn@umich.edu
104479Sbinkertn@umich.edu#include "riscv_test.h"
114479Sbinkertn@umich.edu#include "test_macros.h"
124479Sbinkertn@umich.edu
134479Sbinkertn@umich.eduRVTEST_RV64UF
144479Sbinkertn@umich.eduRVTEST_CODE_BEGIN
154479Sbinkertn@umich.edu
164479Sbinkertn@umich.edu  #-------------------------------------------------------------
174479Sbinkertn@umich.edu  # Arithmetic tests
184479Sbinkertn@umich.edu  #-------------------------------------------------------------
194479Sbinkertn@umich.edu
204479Sbinkertn@umich.edu  TEST_FP_INT_OP_S( 2,  fcvt.w.s, 0x01,         -1, -1.1, rtz);
214479Sbinkertn@umich.edu  TEST_FP_INT_OP_S( 3,  fcvt.w.s, 0x00,         -1, -1.0, rtz);
224479Sbinkertn@umich.edu  TEST_FP_INT_OP_S( 4,  fcvt.w.s, 0x01,          0, -0.9, rtz);
234479Sbinkertn@umich.edu  TEST_FP_INT_OP_S( 5,  fcvt.w.s, 0x01,          0,  0.9, rtz);
244479Sbinkertn@umich.edu  TEST_FP_INT_OP_S( 6,  fcvt.w.s, 0x00,          1,  1.0, rtz);
254479Sbinkertn@umich.edu  TEST_FP_INT_OP_S( 7,  fcvt.w.s, 0x01,          1,  1.1, rtz);
264479Sbinkertn@umich.edu  TEST_FP_INT_OP_S( 8,  fcvt.w.s, 0x10,     -1<<31, -3e9, rtz);
274479Sbinkertn@umich.edu  TEST_FP_INT_OP_S( 9,  fcvt.w.s, 0x10,  (1<<31)-1,  3e9, rtz);
284479Sbinkertn@umich.edu
294479Sbinkertn@umich.edu  TEST_FP_INT_OP_S(12, fcvt.wu.s, 0x10,          0, -3.0, rtz);
304479Sbinkertn@umich.edu  TEST_FP_INT_OP_S(13, fcvt.wu.s, 0x10,          0, -1.0, rtz);
314479Sbinkertn@umich.edu  TEST_FP_INT_OP_S(14, fcvt.wu.s, 0x01,          0, -0.9, rtz);
324479Sbinkertn@umich.edu  TEST_FP_INT_OP_S(15, fcvt.wu.s, 0x01,          0,  0.9, rtz);
334479Sbinkertn@umich.edu  TEST_FP_INT_OP_S(16, fcvt.wu.s, 0x00,          1,  1.0, rtz);
344479Sbinkertn@umich.edu  TEST_FP_INT_OP_S(17, fcvt.wu.s, 0x01,          1,  1.1, rtz);
354479Sbinkertn@umich.edu  TEST_FP_INT_OP_S(18, fcvt.wu.s, 0x10,          0, -3e9, rtz);
364479Sbinkertn@umich.edu  TEST_FP_INT_OP_S(19, fcvt.wu.s, 0x00, 3000000000,  3e9, rtz);
374479Sbinkertn@umich.edu
384479Sbinkertn@umich.edu#if __riscv_xlen >= 64
394479Sbinkertn@umich.edu  TEST_FP_INT_OP_S(22,  fcvt.l.s, 0x01,         -1, -1.1, rtz);
404479Sbinkertn@umich.edu  TEST_FP_INT_OP_S(23,  fcvt.l.s, 0x00,         -1, -1.0, rtz);
414479Sbinkertn@umich.edu  TEST_FP_INT_OP_S(24,  fcvt.l.s, 0x01,          0, -0.9, rtz);
424479Sbinkertn@umich.edu  TEST_FP_INT_OP_S(25,  fcvt.l.s, 0x01,          0,  0.9, rtz);
434479Sbinkertn@umich.edu  TEST_FP_INT_OP_S(26,  fcvt.l.s, 0x00,          1,  1.0, rtz);
446498Snate@binkert.org  TEST_FP_INT_OP_S(27,  fcvt.l.s, 0x01,          1,  1.1, rtz);
454479Sbinkertn@umich.edu
464479Sbinkertn@umich.edu  TEST_FP_INT_OP_S(32, fcvt.lu.s, 0x10,          0, -3.0, rtz);
474479Sbinkertn@umich.edu  TEST_FP_INT_OP_S(33, fcvt.lu.s, 0x10,          0, -1.0, rtz);
486498Snate@binkert.org  TEST_FP_INT_OP_S(34, fcvt.lu.s, 0x01,          0, -0.9, rtz);
494479Sbinkertn@umich.edu  TEST_FP_INT_OP_S(35, fcvt.lu.s, 0x01,          0,  0.9, rtz);
504479Sbinkertn@umich.edu  TEST_FP_INT_OP_S(36, fcvt.lu.s, 0x00,          1,  1.0, rtz);
514479Sbinkertn@umich.edu  TEST_FP_INT_OP_S(37, fcvt.lu.s, 0x01,          1,  1.1, rtz);
524479Sbinkertn@umich.edu  TEST_FP_INT_OP_S(38, fcvt.lu.s, 0x10,          0, -3e9, rtz);
534479Sbinkertn@umich.edu#endif
544479Sbinkertn@umich.edu
554479Sbinkertn@umich.edu  # test negative NaN, negative infinity conversion
564479Sbinkertn@umich.edu  TEST_CASE( 42, x1, 0x000000007fffffff, la x1, tdat  ; flw f1,  0(x1); fcvt.w.s x1, f1)
574479Sbinkertn@umich.edu  TEST_CASE( 44, x1, 0xffffffff80000000, la x1, tdat  ; flw f1,  8(x1); fcvt.w.s x1, f1)
584479Sbinkertn@umich.edu#if __riscv_xlen >= 64
594479Sbinkertn@umich.edu  TEST_CASE( 43, x1, 0x7fffffffffffffff, la x1, tdat  ; flw f1,  0(x1); fcvt.l.s x1, f1)
604479Sbinkertn@umich.edu  TEST_CASE( 45, x1, 0x8000000000000000, la x1, tdat  ; flw f1,  8(x1); fcvt.l.s x1, f1)
614479Sbinkertn@umich.edu#endif
624479Sbinkertn@umich.edu
634479Sbinkertn@umich.edu  # test positive NaN, positive infinity conversion
644479Sbinkertn@umich.edu  TEST_CASE( 52, x1, 0x000000007fffffff, la x1, tdat  ; flw f1,  4(x1); fcvt.w.s x1, f1)
654479Sbinkertn@umich.edu  TEST_CASE( 54, x1, 0x000000007fffffff, la x1, tdat  ; flw f1, 12(x1); fcvt.w.s x1, f1)
664479Sbinkertn@umich.edu#if __riscv_xlen >= 64
674479Sbinkertn@umich.edu  TEST_CASE( 53, x1, 0x7fffffffffffffff, la x1, tdat  ; flw f1,  4(x1); fcvt.l.s x1, f1)
684479Sbinkertn@umich.edu  TEST_CASE( 55, x1, 0x7fffffffffffffff, la x1, tdat  ; flw f1, 12(x1); fcvt.l.s x1, f1)
694479Sbinkertn@umich.edu#endif
704479Sbinkertn@umich.edu
714479Sbinkertn@umich.edu  # test NaN, infinity conversions to unsigned integer
724479Sbinkertn@umich.edu  TEST_CASE( 62, x1, 0xffffffffffffffff, la x1, tdat  ; flw f1,  0(x1); fcvt.wu.s x1, f1)
734479Sbinkertn@umich.edu  TEST_CASE( 63, x1, 0xffffffffffffffff, la x1, tdat  ; flw f1,  4(x1); fcvt.wu.s x1, f1)
744479Sbinkertn@umich.edu  TEST_CASE( 64, x1,                  0, la x1, tdat  ; flw f1,  8(x1); fcvt.wu.s x1, f1)
754479Sbinkertn@umich.edu  TEST_CASE( 65, x1, 0xffffffffffffffff, la x1, tdat  ; flw f1, 12(x1); fcvt.wu.s x1, f1)
764479Sbinkertn@umich.edu#if __riscv_xlen >= 64
774479Sbinkertn@umich.edu  TEST_CASE( 66, x1, 0xffffffffffffffff, la x1, tdat  ; flw f1,  0(x1); fcvt.lu.s x1, f1)
784479Sbinkertn@umich.edu  TEST_CASE( 67, x1, 0xffffffffffffffff, la x1, tdat  ; flw f1,  4(x1); fcvt.lu.s x1, f1)
794479Sbinkertn@umich.edu  TEST_CASE( 68, x1,                  0, la x1, tdat  ; flw f1,  8(x1); fcvt.lu.s x1, f1)
804479Sbinkertn@umich.edu  TEST_CASE( 69, x1, 0xffffffffffffffff, la x1, tdat  ; flw f1, 12(x1); fcvt.lu.s x1, f1)
814479Sbinkertn@umich.edu#endif
824479Sbinkertn@umich.edu
834479Sbinkertn@umich.edu  TEST_PASSFAIL
844479Sbinkertn@umich.edu
854479Sbinkertn@umich.eduRVTEST_CODE_END
864479Sbinkertn@umich.edu
874479Sbinkertn@umich.edu  .data
884479Sbinkertn@umich.eduRVTEST_DATA_BEGIN
894479Sbinkertn@umich.edu
904479Sbinkertn@umich.edu  TEST_DATA
914479Sbinkertn@umich.edu
924479Sbinkertn@umich.edu# -NaN, NaN, -inf, +inf
934479Sbinkertn@umich.edutdat:
944479Sbinkertn@umich.edu.word 0xffffffff
954479Sbinkertn@umich.edu.word 0x7fffffff
964479Sbinkertn@umich.edu.word 0xff800000
974479Sbinkertn@umich.edu.word 0x7f800000
984479Sbinkertn@umich.edu
994479Sbinkertn@umich.edutdat_d:
1004479Sbinkertn@umich.edu.dword 0xffffffffffffffff
1014479Sbinkertn@umich.edu.dword 0x7fffffffffffffff
1024479Sbinkertn@umich.edu.dword 0xfff0000000000000
1036498Snate@binkert.org.dword 0x7ff0000000000000
1046498Snate@binkert.org
1056498Snate@binkert.orgRVTEST_DATA_END
1066498Snate@binkert.org