OpenCores
URL https://opencores.org/ocsvn/potato/potato/trunk

Subversion Repositories potato

[/] [potato/] [trunk/] [riscv-tests/] [sh.S] - Blame information for rev 6

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 6 skordal
# See LICENSE for license details.
2
 
3
#*****************************************************************************
4
# sh.S
5
#-----------------------------------------------------------------------------
6
#
7
# Test sh instruction.
8
#
9
 
10
#include "riscv_test.h"
11
#include "test_macros.h"
12
 
13
RVTEST_RV32U
14
RVTEST_CODE_BEGIN
15
 
16
  #-------------------------------------------------------------
17
  # Basic tests
18
  #-------------------------------------------------------------
19
 
20
  TEST_ST_OP( 2, lh, sh, 0x000000aa, 0, tdat );
21
  TEST_ST_OP( 3, lh, sh, 0xffffaa00, 2, tdat );
22
#ifdef __RISCVEL
23
  TEST_ST_OP( 4, lw, sh, 0xbeef0aa0, 4, tdat );
24
#elif defined(__RISCVEB)
25
#else
26
  TEST_ST_OP( 4, lw, sh, 0x0aa0beef, 4, tdat );
27
#error unknown endianness!
28
#endif
29
  TEST_ST_OP( 5, lh, sh, 0xffffa00a, 6, tdat );
30
 
31
  # Test with negative offset
32
 
33
  TEST_ST_OP( 6, lh, sh, 0x000000aa, -6, tdat8 );
34
  TEST_ST_OP( 7, lh, sh, 0xffffaa00, -4, tdat8 );
35
  TEST_ST_OP( 8, lh, sh, 0x00000aa0, -2, tdat8 );
36
  TEST_ST_OP( 9, lh, sh, 0xffffa00a, 0,  tdat8 );
37
 
38
  # Test with a negative base
39
 
40
  TEST_CASE( 10, x3, 0x5678, \
41
    la  x1, tdat9; \
42
    li  x2, 0x12345678; \
43
    addi x4, x1, -32; \
44
    sh x2, 32(x4); \
45
    lh x3, 0(x1); \
46
  )
47
 
48
  # Test with unaligned base
49
 
50
  TEST_CASE( 11, x3, 0x3098, \
51
    la  x1, tdat9; \
52
    li  x2, 0x00003098; \
53
    addi x1, x1, -5; \
54
    sh x2, 7(x1); \
55
    la  x4, tdat10; \
56
    lh x3, 0(x4); \
57
  )
58
 
59
  #-------------------------------------------------------------
60
  # Bypassing tests
61
  #-------------------------------------------------------------
62
 
63
  TEST_ST_SRC12_BYPASS( 12, 0, 0, lh, sh, 0xffffccdd, 0,  tdat );
64
  TEST_ST_SRC12_BYPASS( 13, 0, 1, lh, sh, 0xffffbccd, 2,  tdat );
65
  TEST_ST_SRC12_BYPASS( 14, 0, 2, lh, sh, 0xffffbbcc, 4,  tdat );
66
  TEST_ST_SRC12_BYPASS( 15, 1, 0, lh, sh, 0xffffabbc, 6, tdat );
67
  TEST_ST_SRC12_BYPASS( 16, 1, 1, lh, sh, 0xffffaabb, 8, tdat );
68
  TEST_ST_SRC12_BYPASS( 17, 2, 0, lh, sh, 0xffffdaab, 10, tdat );
69
 
70
  TEST_ST_SRC21_BYPASS( 18, 0, 0, lh, sh, 0x2233, 0,  tdat );
71
  TEST_ST_SRC21_BYPASS( 19, 0, 1, lh, sh, 0x1223, 2,  tdat );
72
  TEST_ST_SRC21_BYPASS( 20, 0, 2, lh, sh, 0x1122, 4,  tdat );
73
  TEST_ST_SRC21_BYPASS( 21, 1, 0, lh, sh, 0x0112, 6, tdat );
74
  TEST_ST_SRC21_BYPASS( 22, 1, 1, lh, sh, 0x0011, 8, tdat );
75
  TEST_ST_SRC21_BYPASS( 23, 2, 0, lh, sh, 0x3001, 10, tdat );
76
 
77
  li a0, 0xbeef
78
  la a1, tdat
79
  sh a0, 6(a1)
80
 
81
  TEST_PASSFAIL
82
 
83
RVTEST_CODE_END
84
 
85
  .data
86
RVTEST_DATA_BEGIN
87
 
88
  TEST_DATA
89
 
90
tdat:
91
tdat1:  .half 0xbeef
92
tdat2:  .half 0xbeef
93
tdat3:  .half 0xbeef
94
tdat4:  .half 0xbeef
95
tdat5:  .half 0xbeef
96
tdat6:  .half 0xbeef
97
tdat7:  .half 0xbeef
98
tdat8:  .half 0xbeef
99
tdat9:  .half 0xbeef
100
tdat10: .half 0xbeef
101
 
102
RVTEST_DATA_END

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.