1 #include "riscv_test.h"
2 #include "sv_test_macros.h"
4 RVTEST_RV64U # Define TVM used by program.
6 #define SV_ELWIDTH_TEST( wid1, wid2, wid3, expect1, expect2, expect3 ) \
8 SV_LDD_DATA( x12, testdata , 0); \
9 SV_LDD_DATA( x13, testdata+8 , 0); \
10 SV_LDD_DATA( x14, testdata+16, 0); \
11 SV_LDD_DATA( x15, testdata+24, 0); \
12 SV_LDD_DATA( x16, testdata+32, 0); \
13 SV_LDD_DATA( x17, testdata+40, 0); \
15 li x28, 0xa5a5a5a5a5a5a5a5; \
16 li x29, 0xa5a5a5a5a5a5a5a5; \
17 li x30, 0xa5a5a5a5a5a5a5a5; \
20 SET_SV_3CSRS( SV_REG_CSR( 1, 15, wid1, 15, 1), \
21 SV_REG_CSR( 1, 12, wid2, 12, 1), \
22 SV_REG_CSR( 1, 28, wid3, 28, 1)); \
31 TEST_SV_IMM( x28, expect1 ); \
32 TEST_SV_IMM( x29, expect2 ); \
33 TEST_SV_IMM( x30, expect3 ); \
34 TEST_SV_IMM( x15, 0x0000005242322212); \
35 TEST_SV_IMM( x16, 0x0000005141312111);
38 # SV test: vector-vector add
40 # sets up x3 and x4 with data, sets VL to 2, and carries out
41 # an "add 1 to x3". which actually means "add 1 to x3 *AND* add 1 to x4"
44 RVTEST_CODE_BEGIN # Start of test code.
47 SV_ELWIDTH_TEST( 0, 0, 0,
48 0xffffffff8b6bab8b, 0xffffffff88684828, 0x0000000000000000 )
49 SV_ELWIDTH_TEST( 0, 0, 3,
50 0x886848288b6bab8b, 0xa5a5a5a500000000, 0xa5a5a5a5a5a5a5a5 )
51 SV_ELWIDTH_TEST( 1, 1, 0,
52 0xffffffffffffff8b, 0xffffffffffffffab, 0x000000000000006b )
53 SV_ELWIDTH_TEST( 1, 1, 3,
54 0xffffffabffffff8b, 0xa5a5a5a50000006b, 0xa5a5a5a5a5a5a5a5 )
55 SV_ELWIDTH_TEST( 1, 1, 2,
56 0xa5a5006bffabff8b, 0xa5a5a5a5a5a5a5a5, 0xa5a5a5a5a5a5a5a5 )
57 SV_ELWIDTH_TEST( 1, 1, 1,
58 0xa5a5a5a5a56bab8b, 0xa5a5a5a5a5a5a5a5, 0xa5a5a5a5a5a5a5a5 )
60 RVTEST_PASS # Signal success.
63 RVTEST_CODE_END # End of test code.
66 # This section is optional, and this data is NOT saved in the output.
70 .dword 0x0000005949398979
71 .dword 0x0000005747372717
72 .dword 0x0000000000000000
73 .dword 0x0000005242322212
74 .dword 0x0000005141312111
75 .dword 0x0000000000000000
77 # Output data section.
78 RVTEST_DATA_BEGIN # Start of test output data region.
84 RVTEST_DATA_END # End of test output data region.