rv32g-core

Pipelined, synthesizable, and fabricable RISC-V core in SystemVerilog+Yosys+OpenROAD
Log | Files | Refs | LICENSE

sb.S (2610B)


      1 # See LICENSE for license details.
      2 
      3 #*****************************************************************************
      4 # sb.S
      5 #-----------------------------------------------------------------------------
      6 #
      7 # Test sb instruction.
      8 #
      9 
     10 #include "riscv_test.h"
     11 #include "test_macros.h"
     12 
     13 RVTEST_RV64U
     14 RVTEST_CODE_BEGIN
     15 
     16   #-------------------------------------------------------------
     17   # Basic tests
     18   #-------------------------------------------------------------
     19 
     20   TEST_ST_OP( 2, lb, sb, 0xffffffffffffffaa, 0, tdat );
     21   TEST_ST_OP( 3, lb, sb, 0x0000000000000000, 1, tdat );
     22   TEST_ST_OP( 4, lh, sb, 0xffffffffffffefa0, 2, tdat );
     23   TEST_ST_OP( 5, lb, sb, 0x000000000000000a, 3, tdat );
     24 
     25   # Test with negative offset
     26 
     27   TEST_ST_OP( 6, lb, sb, 0xffffffffffffffaa, -3, tdat8 );
     28   TEST_ST_OP( 7, lb, sb, 0x0000000000000000, -2, tdat8 );
     29   TEST_ST_OP( 8, lb, sb, 0xffffffffffffffa0, -1, tdat8 );
     30   TEST_ST_OP( 9, lb, sb, 0x000000000000000a, 0,  tdat8 );
     31 
     32   # Test with a negative base
     33 
     34   TEST_CASE( 10, x5, 0x78, \
     35     la  x1, tdat9; \
     36     li  x2, 0x12345678; \
     37     addi x4, x1, -32; \
     38     sb x2, 32(x4); \
     39     lb x5, 0(x1); \
     40   )
     41 
     42   # Test with unaligned base
     43 
     44   TEST_CASE( 11, x5, 0xffffffffffffff98, \
     45     la  x1, tdat9; \
     46     li  x2, 0x00003098; \
     47     addi x1, x1, -6; \
     48     sb x2, 7(x1); \
     49     la  x4, tdat10; \
     50     lb x5, 0(x4); \
     51   )
     52 
     53   #-------------------------------------------------------------
     54   # Bypassing tests
     55   #-------------------------------------------------------------
     56 
     57   TEST_ST_SRC12_BYPASS( 12, 0, 0, lb, sb, 0xffffffffffffffdd, 0, tdat );
     58   TEST_ST_SRC12_BYPASS( 13, 0, 1, lb, sb, 0xffffffffffffffcd, 1, tdat );
     59   TEST_ST_SRC12_BYPASS( 14, 0, 2, lb, sb, 0xffffffffffffffcc, 2, tdat );
     60   TEST_ST_SRC12_BYPASS( 15, 1, 0, lb, sb, 0xffffffffffffffbc, 3, tdat );
     61   TEST_ST_SRC12_BYPASS( 16, 1, 1, lb, sb, 0xffffffffffffffbb, 4, tdat );
     62   TEST_ST_SRC12_BYPASS( 17, 2, 0, lb, sb, 0xffffffffffffffab, 5, tdat );
     63 
     64   TEST_ST_SRC21_BYPASS( 18, 0, 0, lb, sb, 0x33, 0, tdat );
     65   TEST_ST_SRC21_BYPASS( 19, 0, 1, lb, sb, 0x23, 1, tdat );
     66   TEST_ST_SRC21_BYPASS( 20, 0, 2, lb, sb, 0x22, 2, tdat );
     67   TEST_ST_SRC21_BYPASS( 21, 1, 0, lb, sb, 0x12, 3, tdat );
     68   TEST_ST_SRC21_BYPASS( 22, 1, 1, lb, sb, 0x11, 4, tdat );
     69   TEST_ST_SRC21_BYPASS( 23, 2, 0, lb, sb, 0x01, 5, tdat );
     70 
     71   li a0, 0xef
     72   la a1, tdat
     73   sb a0, 3(a1)
     74 
     75   TEST_PASSFAIL
     76 
     77 RVTEST_CODE_END
     78 
     79   .data
     80 RVTEST_DATA_BEGIN
     81 
     82   TEST_DATA
     83 
     84 tdat:
     85 tdat1:  .byte 0xef
     86 tdat2:  .byte 0xef
     87 tdat3:  .byte 0xef
     88 tdat4:  .byte 0xef
     89 tdat5:  .byte 0xef
     90 tdat6:  .byte 0xef
     91 tdat7:  .byte 0xef
     92 tdat8:  .byte 0xef
     93 tdat9:  .byte 0xef
     94 tdat10: .byte 0xef
     95 
     96 RVTEST_DATA_END