fcvt.S revision 12771:75508af5d8dc
112771Sqtt2@cornell.edu# See LICENSE for license details.
212771Sqtt2@cornell.edu
312771Sqtt2@cornell.edu#*****************************************************************************
412771Sqtt2@cornell.edu# fcvt.S
512771Sqtt2@cornell.edu#-----------------------------------------------------------------------------
612771Sqtt2@cornell.edu#
712771Sqtt2@cornell.edu# Test fcvt.d.{wu|w|lu|l}, fcvt.s.d, and fcvt.d.s instructions.
812771Sqtt2@cornell.edu#
912771Sqtt2@cornell.edu
1012771Sqtt2@cornell.edu#include "riscv_test.h"
1112771Sqtt2@cornell.edu#include "test_macros.h"
1212771Sqtt2@cornell.edu
1312771Sqtt2@cornell.eduRVTEST_RV64UF
1412771Sqtt2@cornell.eduRVTEST_CODE_BEGIN
1512771Sqtt2@cornell.edu
1612771Sqtt2@cornell.edu#if __riscv_xlen == 32
1712771Sqtt2@cornell.edu    # Replace the function with the 32-bit variant defined in test_macros.h
1812771Sqtt2@cornell.edu    #undef TEST_INT_FP_OP_D
1912771Sqtt2@cornell.edu    #define TEST_INT_FP_OP_D TEST_INT_FP_OP_D32
2012771Sqtt2@cornell.edu
2112771Sqtt2@cornell.edu    #undef TEST_FCVT_S_D
2212771Sqtt2@cornell.edu    #define TEST_FCVT_S_D TEST_FCVT_S_D32
2312771Sqtt2@cornell.edu#endif
2412771Sqtt2@cornell.edu
2512771Sqtt2@cornell.edu  #-------------------------------------------------------------
2612771Sqtt2@cornell.edu  # Arithmetic tests
2712771Sqtt2@cornell.edu  #-------------------------------------------------------------
2812771Sqtt2@cornell.edu
2912771Sqtt2@cornell.edu  TEST_INT_FP_OP_D(2,  fcvt.d.w,                   2.0,  2);
3012771Sqtt2@cornell.edu  TEST_INT_FP_OP_D(3,  fcvt.d.w,                  -2.0, -2);
3112771Sqtt2@cornell.edu
3212771Sqtt2@cornell.edu  TEST_INT_FP_OP_D(4, fcvt.d.wu,                   2.0,  2);
3312771Sqtt2@cornell.edu  TEST_INT_FP_OP_D(5, fcvt.d.wu,            4294967294, -2);
3412771Sqtt2@cornell.edu
3512771Sqtt2@cornell.edu#if __riscv_xlen >= 64
3612771Sqtt2@cornell.edu  TEST_INT_FP_OP_D(6,  fcvt.d.l,                   2.0,  2);
3712771Sqtt2@cornell.edu  TEST_INT_FP_OP_D(7,  fcvt.d.l,                  -2.0, -2);
3812771Sqtt2@cornell.edu
3912771Sqtt2@cornell.edu  TEST_INT_FP_OP_D(8, fcvt.d.lu,                   2.0,  2);
4012771Sqtt2@cornell.edu  TEST_INT_FP_OP_D(9, fcvt.d.lu, 1.8446744073709552e19, -2);
4112771Sqtt2@cornell.edu#endif
4212771Sqtt2@cornell.edu
4312771Sqtt2@cornell.edu  TEST_FCVT_S_D(10, -1.5, -1.5)
4412771Sqtt2@cornell.edu  TEST_FCVT_D_S(11, -1.5, -1.5)
4512771Sqtt2@cornell.edu
4612771Sqtt2@cornell.edu#if __riscv_xlen >= 64
4712771Sqtt2@cornell.edu  TEST_CASE(12, a0, 0x7ff8000000000000,
4812771Sqtt2@cornell.edu    la a1, test_data_22;
4912771Sqtt2@cornell.edu    ld a2, 0(a1);
5012771Sqtt2@cornell.edu    fmv.d.x f2, a2;
5112771Sqtt2@cornell.edu    fcvt.s.d f2, f2;
5212771Sqtt2@cornell.edu    fcvt.d.s f2, f2;
5312771Sqtt2@cornell.edu    fmv.x.d a0, f2;
5412771Sqtt2@cornell.edu  )
5512771Sqtt2@cornell.edu#else
5612771Sqtt2@cornell.edu  TEST_CASE_D32(12, a0, a1, 0x7ff8000000000000,
5712771Sqtt2@cornell.edu    la a1, test_data_22;
5812771Sqtt2@cornell.edu    fld f2, 0(a1);
5912771Sqtt2@cornell.edu    fcvt.s.d f2, f2;
6012771Sqtt2@cornell.edu    fcvt.d.s f2, f2;
6112771Sqtt2@cornell.edu    fsd f2, 0(a1);
6212771Sqtt2@cornell.edu    lw a0, 0(a1);
6312771Sqtt2@cornell.edu    lw a1, 4(a1)
6412771Sqtt2@cornell.edu  )
6512771Sqtt2@cornell.edu#endif
6612771Sqtt2@cornell.edu
6712771Sqtt2@cornell.edu  TEST_PASSFAIL
6812771Sqtt2@cornell.edu
6912771Sqtt2@cornell.eduRVTEST_CODE_END
7012771Sqtt2@cornell.edu
7112771Sqtt2@cornell.edu  .data
7212771Sqtt2@cornell.eduRVTEST_DATA_BEGIN
73
74  TEST_DATA
75
76test_data_22:
77  .dword 0x7ffcffffffff8004
78
79RVTEST_DATA_END
80