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