Share code between rv32ui and rv64ui tests
authorAndrew Waterman <waterman@cs.berkeley.edu>
Tue, 30 Aug 2016 20:02:59 +0000 (13:02 -0700)
committerAndrew Waterman <waterman@cs.berkeley.edu>
Tue, 30 Aug 2016 20:13:52 +0000 (13:13 -0700)
They were almost identical, so I made them actually identical.  This
will reduce the burden of writing further tests that span base ISAs.

Tests can still be specialized for XLEN with ifdefs on e.g. __riscv64.

39 files changed:
isa/rv32ui/add.S
isa/rv32ui/addi.S
isa/rv32ui/and.S
isa/rv32ui/andi.S
isa/rv32ui/auipc.S
isa/rv32ui/beq.S
isa/rv32ui/bge.S
isa/rv32ui/bgeu.S
isa/rv32ui/blt.S
isa/rv32ui/bltu.S
isa/rv32ui/bne.S
isa/rv32ui/lb.S
isa/rv32ui/lbu.S
isa/rv32ui/ld.S [deleted file]
isa/rv32ui/lh.S
isa/rv32ui/lhu.S
isa/rv32ui/lui.S
isa/rv32ui/lw.S
isa/rv32ui/lwu.S [deleted file]
isa/rv32ui/or.S
isa/rv32ui/ori.S
isa/rv32ui/sb.S
isa/rv32ui/sh.S
isa/rv32ui/simple.S
isa/rv32ui/sll.S
isa/rv32ui/slli.S
isa/rv32ui/sra.S
isa/rv32ui/srai.S
isa/rv32ui/srl.S
isa/rv32ui/srli.S
isa/rv32ui/sub.S
isa/rv32ui/sw.S
isa/rv32ui/xor.S
isa/rv32ui/xori.S
isa/rv64ui/sll.S
isa/rv64ui/slli.S
isa/rv64ui/srai.S
isa/rv64ui/srl.S
isa/rv64ui/srli.S

index 2eb330e7cd12db8631e5e1fe728b2d34c212d42a..3ab883d3e2dc1481a9104ed8ac5bb8f4c5b14be8 100644 (file)
@@ -1,85 +1,7 @@
 # See LICENSE for license details.
 
-#*****************************************************************************
-# add.S
-#-----------------------------------------------------------------------------
-#
-# Test add instruction.
-#
-
 #include "riscv_test.h"
-#include "test_macros.h"
-
-RVTEST_RV32U
-RVTEST_CODE_BEGIN
-
-  #-------------------------------------------------------------
-  # Arithmetic tests
-  #-------------------------------------------------------------
-
-  TEST_RR_OP( 2,  add, 0x00000000, 0x00000000, 0x00000000 );
-  TEST_RR_OP( 3,  add, 0x00000002, 0x00000001, 0x00000001 );
-  TEST_RR_OP( 4,  add, 0x0000000a, 0x00000003, 0x00000007 );
-
-  TEST_RR_OP( 5,  add, 0xffff8000, 0x00000000, 0xffff8000 );
-  TEST_RR_OP( 6,  add, 0x80000000, 0x80000000, 0x00000000 );
-  TEST_RR_OP( 7,  add, 0x7fff8000, 0x80000000, 0xffff8000 );
-
-  TEST_RR_OP( 8,  add, 0x00007fff, 0x00000000, 0x00007fff );
-  TEST_RR_OP( 9,  add, 0x7fffffff, 0x7fffffff, 0x00000000 );
-  TEST_RR_OP( 10, add, 0x80007ffe, 0x7fffffff, 0x00007fff );
-
-  TEST_RR_OP( 11, add, 0x80007fff, 0x80000000, 0x00007fff );
-  TEST_RR_OP( 12, add, 0x7fff7fff, 0x7fffffff, 0xffff8000 );
-
-  TEST_RR_OP( 13, add, 0xffffffff, 0x00000000, 0xffffffff );
-  TEST_RR_OP( 14, add, 0x00000000, 0xffffffff, 0x00000001 );
-  TEST_RR_OP( 15, add, 0xfffffffe, 0xffffffff, 0xffffffff );
-
-  TEST_RR_OP( 16, add, 0x80000000, 0x00000001, 0x7fffffff );
-
-  #-------------------------------------------------------------
-  # Source/Destination tests
-  #-------------------------------------------------------------
-
-  TEST_RR_SRC1_EQ_DEST( 17, add, 24, 13, 11 );
-  TEST_RR_SRC2_EQ_DEST( 18, add, 25, 14, 11 );
-  TEST_RR_SRC12_EQ_DEST( 19, add, 26, 13 );
-
-  #-------------------------------------------------------------
-  # Bypassing tests
-  #-------------------------------------------------------------
-
-  TEST_RR_DEST_BYPASS( 20, 0, add, 24, 13, 11 );
-  TEST_RR_DEST_BYPASS( 21, 1, add, 25, 14, 11 );
-  TEST_RR_DEST_BYPASS( 22, 2, add, 26, 15, 11 );
-
-  TEST_RR_SRC12_BYPASS( 23, 0, 0, add, 24, 13, 11 );
-  TEST_RR_SRC12_BYPASS( 24, 0, 1, add, 25, 14, 11 );
-  TEST_RR_SRC12_BYPASS( 25, 0, 2, add, 26, 15, 11 );
-  TEST_RR_SRC12_BYPASS( 26, 1, 0, add, 24, 13, 11 );
-  TEST_RR_SRC12_BYPASS( 27, 1, 1, add, 25, 14, 11 );
-  TEST_RR_SRC12_BYPASS( 28, 2, 0, add, 26, 15, 11 );
-
-  TEST_RR_SRC21_BYPASS( 29, 0, 0, add, 24, 13, 11 );
-  TEST_RR_SRC21_BYPASS( 30, 0, 1, add, 25, 14, 11 );
-  TEST_RR_SRC21_BYPASS( 31, 0, 2, add, 26, 15, 11 );
-  TEST_RR_SRC21_BYPASS( 32, 1, 0, add, 24, 13, 11 );
-  TEST_RR_SRC21_BYPASS( 33, 1, 1, add, 25, 14, 11 );
-  TEST_RR_SRC21_BYPASS( 34, 2, 0, add, 26, 15, 11 );
-
-  TEST_RR_ZEROSRC1( 35, add, 15, 15 );
-  TEST_RR_ZEROSRC2( 36, add, 32, 32 );
-  TEST_RR_ZEROSRC12( 37, add, 0 );
-  TEST_RR_ZERODEST( 38, add, 16, 30 );
-
-  TEST_PASSFAIL
-
-RVTEST_CODE_END
-
-  .data
-RVTEST_DATA_BEGIN
-
-  TEST_DATA
+#undef RVTEST_RV64U
+#define RVTEST_RV64U RVTEST_RV32U
 
-RVTEST_DATA_END
+#include "../rv64ui/add.S"
index f7a418b1a65c96fb80243c74347019070b8085c7..fa80a68b237138fe90cec5b8d7e9afac38105a3e 100644 (file)
@@ -1,71 +1,7 @@
 # See LICENSE for license details.
 
-#*****************************************************************************
-# addi.S
-#-----------------------------------------------------------------------------
-#
-# Test addi instruction.
-#
-
 #include "riscv_test.h"
-#include "test_macros.h"
-
-RVTEST_RV32U
-RVTEST_CODE_BEGIN
-
-  #-------------------------------------------------------------
-  # Arithmetic tests
-  #-------------------------------------------------------------
-
-  TEST_IMM_OP( 2,  addi, 0x00000000, 0x00000000, 0x000 );
-  TEST_IMM_OP( 3,  addi, 0x00000002, 0x00000001, 0x001 );
-  TEST_IMM_OP( 4,  addi, 0x0000000a, 0x00000003, 0x007 );
-
-  TEST_IMM_OP( 5,  addi, 0xfffff800, 0x00000000, 0x800 );
-  TEST_IMM_OP( 6,  addi, 0x80000000, 0x80000000, 0x000 );
-  TEST_IMM_OP( 7,  addi, 0x7ffff800, 0x80000000, 0x800 );
-
-  TEST_IMM_OP( 8,  addi, 0x000007ff, 0x00000000, 0x7ff );
-  TEST_IMM_OP( 9,  addi, 0x7fffffff, 0x7fffffff, 0x000 );
-  TEST_IMM_OP( 10, addi, 0x800007fe, 0x7fffffff, 0x7ff );
-
-  TEST_IMM_OP( 11, addi, 0x800007ff, 0x80000000, 0x7ff );
-  TEST_IMM_OP( 12, addi, 0x7ffff7ff, 0x7fffffff, 0x800 );
-
-  TEST_IMM_OP( 13, addi, 0xffffffff, 0x00000000, 0xfff );
-  TEST_IMM_OP( 14, addi, 0x00000000, 0xffffffff, 0x001 );
-  TEST_IMM_OP( 15, addi, 0xfffffffe, 0xffffffff, 0xfff );
-
-  TEST_IMM_OP( 16, addi, 0x80000000, 0x7fffffff, 0x001 );
-
-  #-------------------------------------------------------------
-  # Source/Destination tests
-  #-------------------------------------------------------------
-
-  TEST_IMM_SRC1_EQ_DEST( 17, addi, 24, 13, 11 );
-
-  #-------------------------------------------------------------
-  # Bypassing tests
-  #-------------------------------------------------------------
-
-  TEST_IMM_DEST_BYPASS( 18, 0, addi, 24, 13, 11 );
-  TEST_IMM_DEST_BYPASS( 19, 1, addi, 23, 13, 10 );
-  TEST_IMM_DEST_BYPASS( 20, 2, addi, 22, 13,  9 );
-
-  TEST_IMM_SRC1_BYPASS( 21, 0, addi, 24, 13, 11 );
-  TEST_IMM_SRC1_BYPASS( 22, 1, addi, 23, 13, 10 );
-  TEST_IMM_SRC1_BYPASS( 23, 2, addi, 22, 13,  9 );
-
-  TEST_IMM_ZEROSRC1( 24, addi, 32, 32 );
-  TEST_IMM_ZERODEST( 25, addi, 33, 50 );
-
-  TEST_PASSFAIL
-
-RVTEST_CODE_END
-
-  .data
-RVTEST_DATA_BEGIN
-
-  TEST_DATA
+#undef RVTEST_RV64U
+#define RVTEST_RV64U RVTEST_RV32U
 
-RVTEST_DATA_END
+#include "../rv64ui/addi.S"
index 561ae3b1d092af4d4bdcec238c85be8293f693f4..4ee105b6c2575734d6dc1652794bd298149ec89f 100644 (file)
@@ -1,69 +1,7 @@
 # See LICENSE for license details.
 
-#*****************************************************************************
-# and.S
-#-----------------------------------------------------------------------------
-#
-# Test and instruction.
-#
-
 #include "riscv_test.h"
-#include "test_macros.h"
-
-RVTEST_RV32U
-RVTEST_CODE_BEGIN
-
-  #-------------------------------------------------------------
-  # Logical tests
-  #-------------------------------------------------------------
-
-  TEST_RR_OP( 2, and, 0x0f000f00, 0xff00ff00, 0x0f0f0f0f );
-  TEST_RR_OP( 3, and, 0x00f000f0, 0x0ff00ff0, 0xf0f0f0f0 );
-  TEST_RR_OP( 4, and, 0x000f000f, 0x00ff00ff, 0x0f0f0f0f );
-  TEST_RR_OP( 5, and, 0xf000f000, 0xf00ff00f, 0xf0f0f0f0 );
-
-  #-------------------------------------------------------------
-  # Source/Destination tests
-  #-------------------------------------------------------------
-
-  TEST_RR_SRC1_EQ_DEST( 6, and, 0x0f000f00, 0xff00ff00, 0x0f0f0f0f );
-  TEST_RR_SRC2_EQ_DEST( 7, and, 0x00f000f0, 0x0ff00ff0, 0xf0f0f0f0 );
-  TEST_RR_SRC12_EQ_DEST( 8, and, 0xff00ff00, 0xff00ff00 );
-
-  #-------------------------------------------------------------
-  # Bypassing tests
-  #-------------------------------------------------------------
-
-  TEST_RR_DEST_BYPASS( 9,  0, and, 0x0f000f00, 0xff00ff00, 0x0f0f0f0f );
-  TEST_RR_DEST_BYPASS( 10, 1, and, 0x00f000f0, 0x0ff00ff0, 0xf0f0f0f0 );
-  TEST_RR_DEST_BYPASS( 11, 2, and, 0x000f000f, 0x00ff00ff, 0x0f0f0f0f );
-
-  TEST_RR_SRC12_BYPASS( 12, 0, 0, and, 0x0f000f00, 0xff00ff00, 0x0f0f0f0f );
-  TEST_RR_SRC12_BYPASS( 13, 0, 1, and, 0x00f000f0, 0x0ff00ff0, 0xf0f0f0f0 );
-  TEST_RR_SRC12_BYPASS( 14, 0, 2, and, 0x000f000f, 0x00ff00ff, 0x0f0f0f0f );
-  TEST_RR_SRC12_BYPASS( 15, 1, 0, and, 0x0f000f00, 0xff00ff00, 0x0f0f0f0f );
-  TEST_RR_SRC12_BYPASS( 16, 1, 1, and, 0x00f000f0, 0x0ff00ff0, 0xf0f0f0f0 );
-  TEST_RR_SRC12_BYPASS( 17, 2, 0, and, 0x000f000f, 0x00ff00ff, 0x0f0f0f0f );
-
-  TEST_RR_SRC21_BYPASS( 18, 0, 0, and, 0x0f000f00, 0xff00ff00, 0x0f0f0f0f );
-  TEST_RR_SRC21_BYPASS( 19, 0, 1, and, 0x00f000f0, 0x0ff00ff0, 0xf0f0f0f0 );
-  TEST_RR_SRC21_BYPASS( 20, 0, 2, and, 0x000f000f, 0x00ff00ff, 0x0f0f0f0f );
-  TEST_RR_SRC21_BYPASS( 21, 1, 0, and, 0x0f000f00, 0xff00ff00, 0x0f0f0f0f );
-  TEST_RR_SRC21_BYPASS( 22, 1, 1, and, 0x00f000f0, 0x0ff00ff0, 0xf0f0f0f0 );
-  TEST_RR_SRC21_BYPASS( 23, 2, 0, and, 0x000f000f, 0x00ff00ff, 0x0f0f0f0f );
-
-  TEST_RR_ZEROSRC1( 24, and, 0, 0xff00ff00 );
-  TEST_RR_ZEROSRC2( 25, and, 0, 0x00ff00ff );
-  TEST_RR_ZEROSRC12( 26, and, 0 );
-  TEST_RR_ZERODEST( 27, and, 0x11111111, 0x22222222 );
-
-  TEST_PASSFAIL
-
-RVTEST_CODE_END
-
-  .data
-RVTEST_DATA_BEGIN
-
-  TEST_DATA
+#undef RVTEST_RV64U
+#define RVTEST_RV64U RVTEST_RV32U
 
-RVTEST_DATA_END
+#include "../rv64ui/and.S"
index c2ae94de7030c7ecef2a35fbd6944738db966fb6..e6b1529561a6511edee4ee1cbeaea808f488dece 100644 (file)
@@ -1,55 +1,7 @@
 # See LICENSE for license details.
 
-#*****************************************************************************
-# andi.S
-#-----------------------------------------------------------------------------
-#
-# Test andi instruction.
-#
-
 #include "riscv_test.h"
-#include "test_macros.h"
-
-RVTEST_RV32U
-RVTEST_CODE_BEGIN
-
-  #-------------------------------------------------------------
-  # Logical tests
-  #-------------------------------------------------------------
-
-  TEST_IMM_OP( 2, andi, 0xff00ff00, 0xff00ff00, 0xf0f );
-  TEST_IMM_OP( 3, andi, 0x000000f0, 0x0ff00ff0, 0x0f0 );
-  TEST_IMM_OP( 4, andi, 0x0000000f, 0x00ff00ff, 0x70f );
-  TEST_IMM_OP( 5, andi, 0x00000000, 0xf00ff00f, 0x0f0 );
-
-  #-------------------------------------------------------------
-  # Source/Destination tests
-  #-------------------------------------------------------------
-
-  TEST_IMM_SRC1_EQ_DEST( 6, andi, 0x00000000, 0xff00ff00, 0x0f0 );
-
-  #-------------------------------------------------------------
-  # Bypassing tests
-  #-------------------------------------------------------------
-
-  TEST_IMM_DEST_BYPASS( 7,  0, andi, 0x00000700, 0x0ff00ff0, 0x70f );
-  TEST_IMM_DEST_BYPASS( 8,  1, andi, 0x000000f0, 0x00ff00ff, 0x0f0 );
-  TEST_IMM_DEST_BYPASS( 9,  2, andi, 0xf00ff00f, 0xf00ff00f, 0xf0f );
-
-  TEST_IMM_SRC1_BYPASS( 10, 0, andi, 0x00000700, 0x0ff00ff0, 0x70f );
-  TEST_IMM_SRC1_BYPASS( 11, 1, andi, 0x000000f0, 0x00ff00ff, 0x0f0 );
-  TEST_IMM_SRC1_BYPASS( 12, 2, andi, 0x0000000f, 0xf00ff00f, 0x70f );
-
-  TEST_IMM_ZEROSRC1( 13, andi, 0, 0x0f0 );
-  TEST_IMM_ZERODEST( 14, andi, 0x00ff00ff, 0x70f );
-
-  TEST_PASSFAIL
-
-RVTEST_CODE_END
-
-  .data
-RVTEST_DATA_BEGIN
-
-  TEST_DATA
+#undef RVTEST_RV64U
+#define RVTEST_RV64U RVTEST_RV32U
 
-RVTEST_DATA_END
+#include "../rv64ui/andi.S"
index c67e3c98e99d3e7cf9d4770cc46fb63dc0852517..0827f7ddfead40c36e9382ccee21195b8bb56dde 100644 (file)
@@ -1,39 +1,7 @@
 # See LICENSE for license details.
 
-#*****************************************************************************
-# auipc.S
-#-----------------------------------------------------------------------------
-#
-# Test auipc instruction.
-#
-
 #include "riscv_test.h"
-#include "test_macros.h"
-
-RVTEST_RV32U
-RVTEST_CODE_BEGIN
-
-  TEST_CASE(2, a0, 10000, \
-    .align 3; \
-    lla a0, 1f + 10000; \
-    jal a1, 1f; \
-    1: sub a0, a0, a1; \
-  )
-
-  TEST_CASE(3, a0, -10000, \
-    .align 3; \
-    lla a0, 1f - 10000; \
-    jal a1, 1f; \
-    1: sub a0, a0, a1; \
-  )
-
-  TEST_PASSFAIL
-
-RVTEST_CODE_END
-
-  .data
-RVTEST_DATA_BEGIN
-
-  TEST_DATA
+#undef RVTEST_RV64U
+#define RVTEST_RV64U RVTEST_RV32U
 
-RVTEST_DATA_END
+#include "../rv64ui/auipc.S"
index c972effe8ae66b2e4ea752345d6db94c9c9676da..7c3996da212fb8d6aaeae3750e548cd75a930893 100644 (file)
@@ -1,73 +1,7 @@
 # See LICENSE for license details.
 
-#*****************************************************************************
-# beq.S
-#-----------------------------------------------------------------------------
-#
-# Test beq instruction.
-#
-
 #include "riscv_test.h"
-#include "test_macros.h"
-
-RVTEST_RV32U
-RVTEST_CODE_BEGIN
-
-  #-------------------------------------------------------------
-  # Branch tests
-  #-------------------------------------------------------------
-
-  # Each test checks both forward and backward branches
-
-  TEST_BR2_OP_TAKEN( 2, beq,  0,  0 );
-  TEST_BR2_OP_TAKEN( 3, beq,  1,  1 );
-  TEST_BR2_OP_TAKEN( 4, beq, -1, -1 );
-
-  TEST_BR2_OP_NOTTAKEN( 5, beq,  0,  1 );
-  TEST_BR2_OP_NOTTAKEN( 6, beq,  1,  0 );
-  TEST_BR2_OP_NOTTAKEN( 7, beq, -1,  1 );
-  TEST_BR2_OP_NOTTAKEN( 8, beq,  1, -1 );
-
-  #-------------------------------------------------------------
-  # Bypassing tests
-  #-------------------------------------------------------------
-
-  TEST_BR2_SRC12_BYPASS( 9,  0, 0, beq, 0, -1 );
-  TEST_BR2_SRC12_BYPASS( 10, 0, 1, beq, 0, -1 );
-  TEST_BR2_SRC12_BYPASS( 11, 0, 2, beq, 0, -1 );
-  TEST_BR2_SRC12_BYPASS( 12, 1, 0, beq, 0, -1 );
-  TEST_BR2_SRC12_BYPASS( 13, 1, 1, beq, 0, -1 );
-  TEST_BR2_SRC12_BYPASS( 14, 2, 0, beq, 0, -1 );
-
-  TEST_BR2_SRC12_BYPASS( 15, 0, 0, beq, 0, -1 );
-  TEST_BR2_SRC12_BYPASS( 16, 0, 1, beq, 0, -1 );
-  TEST_BR2_SRC12_BYPASS( 17, 0, 2, beq, 0, -1 );
-  TEST_BR2_SRC12_BYPASS( 18, 1, 0, beq, 0, -1 );
-  TEST_BR2_SRC12_BYPASS( 19, 1, 1, beq, 0, -1 );
-  TEST_BR2_SRC12_BYPASS( 20, 2, 0, beq, 0, -1 );
-
-  #-------------------------------------------------------------
-  # Test delay slot instructions not executed nor bypassed
-  #-------------------------------------------------------------
-
-  TEST_CASE( 21, x1, 3, \
-    li  x1, 1; \
-    beq x0, x0, 1f; \
-    addi x1, x1, 1; \
-    addi x1, x1, 1; \
-    addi x1, x1, 1; \
-    addi x1, x1, 1; \
-1:  addi x1, x1, 1; \
-    addi x1, x1, 1; \
-  )
-
-  TEST_PASSFAIL
-
-RVTEST_CODE_END
-
-  .data
-RVTEST_DATA_BEGIN
-
-  TEST_DATA
+#undef RVTEST_RV64U
+#define RVTEST_RV64U RVTEST_RV32U
 
-RVTEST_DATA_END
+#include "../rv64ui/beq.S"
index d6aea7c00d8f3a5c32875cd4b72f1f74f3f02ac9..d47c304774235d23f9a45262c42a705ef80da2fc 100644 (file)
@@ -1,76 +1,7 @@
 # See LICENSE for license details.
 
-#*****************************************************************************
-# bge.S
-#-----------------------------------------------------------------------------
-#
-# Test bge instruction.
-#
-
 #include "riscv_test.h"
-#include "test_macros.h"
-
-RVTEST_RV32U
-RVTEST_CODE_BEGIN
-
-  #-------------------------------------------------------------
-  # Branch tests
-  #-------------------------------------------------------------
-
-  # Each test checks both forward and backward branches
-
-  TEST_BR2_OP_TAKEN( 2, bge,  0,  0 );
-  TEST_BR2_OP_TAKEN( 3, bge,  1,  1 );
-  TEST_BR2_OP_TAKEN( 4, bge, -1, -1 );
-  TEST_BR2_OP_TAKEN( 5, bge,  1,  0 );
-  TEST_BR2_OP_TAKEN( 6, bge,  1, -1 );
-  TEST_BR2_OP_TAKEN( 7, bge, -1, -2 );
-
-  TEST_BR2_OP_NOTTAKEN(  8, bge,  0,  1 );
-  TEST_BR2_OP_NOTTAKEN(  9, bge, -1,  1 );
-  TEST_BR2_OP_NOTTAKEN( 10, bge, -2, -1 );
-  TEST_BR2_OP_NOTTAKEN( 11, bge, -2,  1 );
-
-  #-------------------------------------------------------------
-  # Bypassing tests
-  #-------------------------------------------------------------
-
-  TEST_BR2_SRC12_BYPASS( 12, 0, 0, bge, -1, 0 );
-  TEST_BR2_SRC12_BYPASS( 13, 0, 1, bge, -1, 0 );
-  TEST_BR2_SRC12_BYPASS( 14, 0, 2, bge, -1, 0 );
-  TEST_BR2_SRC12_BYPASS( 15, 1, 0, bge, -1, 0 );
-  TEST_BR2_SRC12_BYPASS( 16, 1, 1, bge, -1, 0 );
-  TEST_BR2_SRC12_BYPASS( 17, 2, 0, bge, -1, 0 );
-
-  TEST_BR2_SRC12_BYPASS( 18, 0, 0, bge, -1, 0 );
-  TEST_BR2_SRC12_BYPASS( 19, 0, 1, bge, -1, 0 );
-  TEST_BR2_SRC12_BYPASS( 20, 0, 2, bge, -1, 0 );
-  TEST_BR2_SRC12_BYPASS( 21, 1, 0, bge, -1, 0 );
-  TEST_BR2_SRC12_BYPASS( 22, 1, 1, bge, -1, 0 );
-  TEST_BR2_SRC12_BYPASS( 23, 2, 0, bge, -1, 0 );
-
-  #-------------------------------------------------------------
-  # Test delay slot instructions not executed nor bypassed
-  #-------------------------------------------------------------
-
-  TEST_CASE( 24, x1, 3, \
-    li  x1, 1; \
-    bge x1, x0, 1f; \
-    addi x1, x1, 1; \
-    addi x1, x1, 1; \
-    addi x1, x1, 1; \
-    addi x1, x1, 1; \
-1:  addi x1, x1, 1; \
-    addi x1, x1, 1; \
-  )
-
-  TEST_PASSFAIL
-
-RVTEST_CODE_END
-
-  .data
-RVTEST_DATA_BEGIN
-
-  TEST_DATA
+#undef RVTEST_RV64U
+#define RVTEST_RV64U RVTEST_RV32U
 
-RVTEST_DATA_END
+#include "../rv64ui/bge.S"
index 114c84574dbacf29ef3680bf572be3f4b9457fa6..560ec457ca2f166109657bbcf971662ff5383365 100644 (file)
@@ -1,76 +1,7 @@
 # See LICENSE for license details.
 
-#*****************************************************************************
-# bgeu.S
-#-----------------------------------------------------------------------------
-#
-# Test bgeu instruction.
-#
-
 #include "riscv_test.h"
-#include "test_macros.h"
-
-RVTEST_RV32U
-RVTEST_CODE_BEGIN
-
-  #-------------------------------------------------------------
-  # Branch tests
-  #-------------------------------------------------------------
-
-  # Each test checks both forward and backward branches
-
-  TEST_BR2_OP_TAKEN( 2, bgeu, 0x00000000, 0x00000000 );
-  TEST_BR2_OP_TAKEN( 3, bgeu, 0x00000001, 0x00000001 );
-  TEST_BR2_OP_TAKEN( 4, bgeu, 0xffffffff, 0xffffffff );
-  TEST_BR2_OP_TAKEN( 5, bgeu, 0x00000001, 0x00000000 );
-  TEST_BR2_OP_TAKEN( 6, bgeu, 0xffffffff, 0xfffffffe );
-  TEST_BR2_OP_TAKEN( 7, bgeu, 0xffffffff, 0x00000000 );
-
-  TEST_BR2_OP_NOTTAKEN(  8, bgeu, 0x00000000, 0x00000001 );
-  TEST_BR2_OP_NOTTAKEN(  9, bgeu, 0xfffffffe, 0xffffffff );
-  TEST_BR2_OP_NOTTAKEN( 10, bgeu, 0x00000000, 0xffffffff );
-  TEST_BR2_OP_NOTTAKEN( 11, bgeu, 0x7fffffff, 0x80000000 );
-
-  #-------------------------------------------------------------
-  # Bypassing tests
-  #-------------------------------------------------------------
-
-  TEST_BR2_SRC12_BYPASS( 12, 0, 0, bgeu, 0xefffffff, 0xf0000000 );
-  TEST_BR2_SRC12_BYPASS( 13, 0, 1, bgeu, 0xefffffff, 0xf0000000 );
-  TEST_BR2_SRC12_BYPASS( 14, 0, 2, bgeu, 0xefffffff, 0xf0000000 );
-  TEST_BR2_SRC12_BYPASS( 15, 1, 0, bgeu, 0xefffffff, 0xf0000000 );
-  TEST_BR2_SRC12_BYPASS( 16, 1, 1, bgeu, 0xefffffff, 0xf0000000 );
-  TEST_BR2_SRC12_BYPASS( 17, 2, 0, bgeu, 0xefffffff, 0xf0000000 );
-
-  TEST_BR2_SRC12_BYPASS( 18, 0, 0, bgeu, 0xefffffff, 0xf0000000 );
-  TEST_BR2_SRC12_BYPASS( 19, 0, 1, bgeu, 0xefffffff, 0xf0000000 );
-  TEST_BR2_SRC12_BYPASS( 20, 0, 2, bgeu, 0xefffffff, 0xf0000000 );
-  TEST_BR2_SRC12_BYPASS( 21, 1, 0, bgeu, 0xefffffff, 0xf0000000 );
-  TEST_BR2_SRC12_BYPASS( 22, 1, 1, bgeu, 0xefffffff, 0xf0000000 );
-  TEST_BR2_SRC12_BYPASS( 23, 2, 0, bgeu, 0xefffffff, 0xf0000000 );
-
-  #-------------------------------------------------------------
-  # Test delay slot instructions not executed nor bypassed
-  #-------------------------------------------------------------
-
-  TEST_CASE( 24, x1, 3, \
-    li  x1, 1; \
-    bgeu x1, x0, 1f; \
-    addi x1, x1, 1; \
-    addi x1, x1, 1; \
-    addi x1, x1, 1; \
-    addi x1, x1, 1; \
-1:  addi x1, x1, 1; \
-    addi x1, x1, 1; \
-  )
-
-  TEST_PASSFAIL
-
-RVTEST_CODE_END
-
-  .data
-RVTEST_DATA_BEGIN
-
-  TEST_DATA
+#undef RVTEST_RV64U
+#define RVTEST_RV64U RVTEST_RV32U
 
-RVTEST_DATA_END
+#include "../rv64ui/bgeu.S"
index 12e28c32287eb0883dae8f47cb38160855dde85a..72017dd10e8fa5c2f08baa629106e0e68e1de61a 100644 (file)
@@ -1,73 +1,7 @@
 # See LICENSE for license details.
 
-#*****************************************************************************
-# blt.S
-#-----------------------------------------------------------------------------
-#
-# Test blt instruction.
-#
-
 #include "riscv_test.h"
-#include "test_macros.h"
-
-RVTEST_RV32U
-RVTEST_CODE_BEGIN
-
-  #-------------------------------------------------------------
-  # Branch tests
-  #-------------------------------------------------------------
-
-  # Each test checks both forward and backward branches
-
-  TEST_BR2_OP_TAKEN( 2, blt,  0,  1 );
-  TEST_BR2_OP_TAKEN( 3, blt, -1,  1 );
-  TEST_BR2_OP_TAKEN( 4, blt, -2, -1 );
-
-  TEST_BR2_OP_NOTTAKEN( 5, blt,  1,  0 );
-  TEST_BR2_OP_NOTTAKEN( 6, blt,  1, -1 );
-  TEST_BR2_OP_NOTTAKEN( 7, blt, -1, -2 );
-  TEST_BR2_OP_NOTTAKEN( 8, blt,  1, -2 );
-
-  #-------------------------------------------------------------
-  # Bypassing tests
-  #-------------------------------------------------------------
-
-  TEST_BR2_SRC12_BYPASS( 9,  0, 0, blt, 0, -1 );
-  TEST_BR2_SRC12_BYPASS( 10, 0, 1, blt, 0, -1 );
-  TEST_BR2_SRC12_BYPASS( 11, 0, 2, blt, 0, -1 );
-  TEST_BR2_SRC12_BYPASS( 12, 1, 0, blt, 0, -1 );
-  TEST_BR2_SRC12_BYPASS( 13, 1, 1, blt, 0, -1 );
-  TEST_BR2_SRC12_BYPASS( 14, 2, 0, blt, 0, -1 );
-
-  TEST_BR2_SRC12_BYPASS( 15, 0, 0, blt, 0, -1 );
-  TEST_BR2_SRC12_BYPASS( 16, 0, 1, blt, 0, -1 );
-  TEST_BR2_SRC12_BYPASS( 17, 0, 2, blt, 0, -1 );
-  TEST_BR2_SRC12_BYPASS( 18, 1, 0, blt, 0, -1 );
-  TEST_BR2_SRC12_BYPASS( 19, 1, 1, blt, 0, -1 );
-  TEST_BR2_SRC12_BYPASS( 20, 2, 0, blt, 0, -1 );
-
-  #-------------------------------------------------------------
-  # Test delay slot instructions not executed nor bypassed
-  #-------------------------------------------------------------
-
-  TEST_CASE( 21, x1, 3, \
-    li  x1, 1; \
-    blt x0, x1, 1f; \
-    addi x1, x1, 1; \
-    addi x1, x1, 1; \
-    addi x1, x1, 1; \
-    addi x1, x1, 1; \
-1:  addi x1, x1, 1; \
-    addi x1, x1, 1; \
-  )
-
-  TEST_PASSFAIL
-
-RVTEST_CODE_END
-
-  .data
-RVTEST_DATA_BEGIN
-
-  TEST_DATA
+#undef RVTEST_RV64U
+#define RVTEST_RV64U RVTEST_RV32U
 
-RVTEST_DATA_END
+#include "../rv64ui/blt.S"
index 5dcfe7e91c155dfd508fbe9ae56093954624aed8..80f7468b22607187ef5428b79ca9564c48629de6 100644 (file)
@@ -1,73 +1,7 @@
 # See LICENSE for license details.
 
-#*****************************************************************************
-# bltu.S
-#-----------------------------------------------------------------------------
-#
-# Test bltu instruction.
-#
-
 #include "riscv_test.h"
-#include "test_macros.h"
-
-RVTEST_RV32U
-RVTEST_CODE_BEGIN
-
-  #-------------------------------------------------------------
-  # Branch tests
-  #-------------------------------------------------------------
-
-  # Each test checks both forward and backward branches
-
-  TEST_BR2_OP_TAKEN( 2, bltu, 0x00000000, 0x00000001 );
-  TEST_BR2_OP_TAKEN( 3, bltu, 0xfffffffe, 0xffffffff );
-  TEST_BR2_OP_TAKEN( 4, bltu, 0x00000000, 0xffffffff );
-
-  TEST_BR2_OP_NOTTAKEN( 5, bltu, 0x00000001, 0x00000000 );
-  TEST_BR2_OP_NOTTAKEN( 6, bltu, 0xffffffff, 0xfffffffe );
-  TEST_BR2_OP_NOTTAKEN( 7, bltu, 0xffffffff, 0x00000000 );
-  TEST_BR2_OP_NOTTAKEN( 8, bltu, 0x80000000, 0x7fffffff );
-
-  #-------------------------------------------------------------
-  # Bypassing tests
-  #-------------------------------------------------------------
-
-  TEST_BR2_SRC12_BYPASS( 9,  0, 0, bltu, 0xf0000000, 0xefffffff );
-  TEST_BR2_SRC12_BYPASS( 10, 0, 1, bltu, 0xf0000000, 0xefffffff );
-  TEST_BR2_SRC12_BYPASS( 11, 0, 2, bltu, 0xf0000000, 0xefffffff );
-  TEST_BR2_SRC12_BYPASS( 12, 1, 0, bltu, 0xf0000000, 0xefffffff );
-  TEST_BR2_SRC12_BYPASS( 13, 1, 1, bltu, 0xf0000000, 0xefffffff );
-  TEST_BR2_SRC12_BYPASS( 14, 2, 0, bltu, 0xf0000000, 0xefffffff );
-
-  TEST_BR2_SRC12_BYPASS( 15, 0, 0, bltu, 0xf0000000, 0xefffffff );
-  TEST_BR2_SRC12_BYPASS( 16, 0, 1, bltu, 0xf0000000, 0xefffffff );
-  TEST_BR2_SRC12_BYPASS( 17, 0, 2, bltu, 0xf0000000, 0xefffffff );
-  TEST_BR2_SRC12_BYPASS( 18, 1, 0, bltu, 0xf0000000, 0xefffffff );
-  TEST_BR2_SRC12_BYPASS( 19, 1, 1, bltu, 0xf0000000, 0xefffffff );
-  TEST_BR2_SRC12_BYPASS( 20, 2, 0, bltu, 0xf0000000, 0xefffffff );
-
-  #-------------------------------------------------------------
-  # Test delay slot instructions not executed nor bypassed
-  #-------------------------------------------------------------
-
-  TEST_CASE( 21, x1, 3, \
-    li  x1, 1; \
-    bltu x0, x1, 1f; \
-    addi x1, x1, 1; \
-    addi x1, x1, 1; \
-    addi x1, x1, 1; \
-    addi x1, x1, 1; \
-1:  addi x1, x1, 1; \
-    addi x1, x1, 1; \
-  )
-
-  TEST_PASSFAIL
-
-RVTEST_CODE_END
-
-  .data
-RVTEST_DATA_BEGIN
-
-  TEST_DATA
+#undef RVTEST_RV64U
+#define RVTEST_RV64U RVTEST_RV32U
 
-RVTEST_DATA_END
+#include "../rv64ui/bltu.S"
index 0b337534c501674c21990931d93db7207cdc6492..ddb7d9f9a4511f9097c4d8e9e90fcd057b84777e 100644 (file)
@@ -1,73 +1,7 @@
 # See LICENSE for license details.
 
-#*****************************************************************************
-# bne.S
-#-----------------------------------------------------------------------------
-#
-# Test bne instruction.
-#
-
 #include "riscv_test.h"
-#include "test_macros.h"
-
-RVTEST_RV32U
-RVTEST_CODE_BEGIN
-
-  #-------------------------------------------------------------
-  # Branch tests
-  #-------------------------------------------------------------
-
-  # Each test checks both forward and backward branches
-
-  TEST_BR2_OP_TAKEN( 2, bne,  0,  1 );
-  TEST_BR2_OP_TAKEN( 3, bne,  1,  0 );
-  TEST_BR2_OP_TAKEN( 4, bne, -1,  1 );
-  TEST_BR2_OP_TAKEN( 5, bne,  1, -1 );
-
-  TEST_BR2_OP_NOTTAKEN( 6, bne,  0,  0 );
-  TEST_BR2_OP_NOTTAKEN( 7, bne,  1,  1 );
-  TEST_BR2_OP_NOTTAKEN( 8, bne, -1, -1 );
-
-  #-------------------------------------------------------------
-  # Bypassing tests
-  #-------------------------------------------------------------
-
-  TEST_BR2_SRC12_BYPASS( 9,  0, 0, bne, 0, 0 );
-  TEST_BR2_SRC12_BYPASS( 10, 0, 1, bne, 0, 0 );
-  TEST_BR2_SRC12_BYPASS( 11, 0, 2, bne, 0, 0 );
-  TEST_BR2_SRC12_BYPASS( 12, 1, 0, bne, 0, 0 );
-  TEST_BR2_SRC12_BYPASS( 13, 1, 1, bne, 0, 0 );
-  TEST_BR2_SRC12_BYPASS( 14, 2, 0, bne, 0, 0 );
-
-  TEST_BR2_SRC12_BYPASS( 15, 0, 0, bne, 0, 0 );
-  TEST_BR2_SRC12_BYPASS( 16, 0, 1, bne, 0, 0 );
-  TEST_BR2_SRC12_BYPASS( 17, 0, 2, bne, 0, 0 );
-  TEST_BR2_SRC12_BYPASS( 18, 1, 0, bne, 0, 0 );
-  TEST_BR2_SRC12_BYPASS( 19, 1, 1, bne, 0, 0 );
-  TEST_BR2_SRC12_BYPASS( 20, 2, 0, bne, 0, 0 );
-
-  #-------------------------------------------------------------
-  # Test delay slot instructions not executed nor bypassed
-  #-------------------------------------------------------------
-
-  TEST_CASE( 21, x1, 3, \
-    li  x1, 1; \
-    bne x1, x0, 1f; \
-    addi x1, x1, 1; \
-    addi x1, x1, 1; \
-    addi x1, x1, 1; \
-    addi x1, x1, 1; \
-1:  addi x1, x1, 1; \
-    addi x1, x1, 1; \
-  )
-
-  TEST_PASSFAIL
-
-RVTEST_CODE_END
-
-  .data
-RVTEST_DATA_BEGIN
-
-  TEST_DATA
+#undef RVTEST_RV64U
+#define RVTEST_RV64U RVTEST_RV32U
 
-RVTEST_DATA_END
+#include "../rv64ui/bne.S"
index eaf79027784f2825b04ba9c48c6e600fb775c84a..6cf4d446f6db4750f612763901b5207cb9981525 100644 (file)
@@ -1,92 +1,7 @@
 # See LICENSE for license details.
 
-#*****************************************************************************
-# lb.S
-#-----------------------------------------------------------------------------
-#
-# Test lb instruction.
-#
-
 #include "riscv_test.h"
-#include "test_macros.h"
-
-RVTEST_RV32U
-RVTEST_CODE_BEGIN
-
-  #-------------------------------------------------------------
-  # Basic tests
-  #-------------------------------------------------------------
-
-  TEST_LD_OP( 2, lb, 0xffffffff, 0,  tdat );
-  TEST_LD_OP( 3, lb, 0x00000000, 1,  tdat );
-  TEST_LD_OP( 4, lb, 0xfffffff0, 2,  tdat );
-  TEST_LD_OP( 5, lb, 0x0000000f, 3, tdat );
-
-  # Test with negative offset
-
-  TEST_LD_OP( 6, lb, 0xffffffff, -3, tdat4 );
-  TEST_LD_OP( 7, lb, 0x00000000, -2,  tdat4 );
-  TEST_LD_OP( 8, lb, 0xfffffff0, -1,  tdat4 );
-  TEST_LD_OP( 9, lb, 0x0000000f, 0,   tdat4 );
-
-  # Test with a negative base
-
-  TEST_CASE( 10, x3, 0xffffffff, \
-    la  x1, tdat; \
-    addi x1, x1, -32; \
-    lb x3, 32(x1); \
-  )
-
-  # Test with unaligned base
-
-  TEST_CASE( 11, x3, 0x00000000, \
-    la  x1, tdat; \
-    addi x1, x1, -6; \
-    lb x3, 7(x1); \
-  )
-
-  #-------------------------------------------------------------
-  # Bypassing tests
-  #-------------------------------------------------------------
-
-  TEST_LD_DEST_BYPASS( 12, 0, lb, 0xfffffff0, 1, tdat2 );
-  TEST_LD_DEST_BYPASS( 13, 1, lb, 0x0000000f, 1, tdat3 );
-  TEST_LD_DEST_BYPASS( 14, 2, lb, 0x00000000, 1, tdat1 );
-
-  TEST_LD_SRC1_BYPASS( 15, 0, lb, 0xfffffff0, 1, tdat2 );
-  TEST_LD_SRC1_BYPASS( 16, 1, lb, 0x0000000f, 1, tdat3 );
-  TEST_LD_SRC1_BYPASS( 17, 2, lb, 0x00000000, 1, tdat1 );
-
-  #-------------------------------------------------------------
-  # Test write-after-write hazard
-  #-------------------------------------------------------------
-
-  TEST_CASE( 18, x2, 2, \
-    la  x3, tdat; \
-    lb  x2, 0(x3); \
-    li  x2, 2; \
-  )
-
-  TEST_CASE( 19, x2, 2, \
-    la  x3, tdat; \
-    lb  x2, 0(x3); \
-    nop; \
-    li  x2, 2; \
-  )
-
-  TEST_PASSFAIL
-
-RVTEST_CODE_END
-
-  .data
-RVTEST_DATA_BEGIN
-
-  TEST_DATA
-
-tdat:
-tdat1:  .byte 0xff
-tdat2:  .byte 0x00
-tdat3:  .byte 0xf0
-tdat4:  .byte 0x0f
+#undef RVTEST_RV64U
+#define RVTEST_RV64U RVTEST_RV32U
 
-RVTEST_DATA_END
+#include "../rv64ui/lb.S"
index 027b643dc61284d8935444734702fbe627c6bec2..a479a0f2b86abfb96ba146abbbe420c6f6311b90 100644 (file)
@@ -1,92 +1,7 @@
 # See LICENSE for license details.
 
-#*****************************************************************************
-# lbu.S
-#-----------------------------------------------------------------------------
-#
-# Test lbu instruction.
-#
-
 #include "riscv_test.h"
-#include "test_macros.h"
-
-RVTEST_RV32U
-RVTEST_CODE_BEGIN
-
-  #-------------------------------------------------------------
-  # Basic tests
-  #-------------------------------------------------------------
-
-  TEST_LD_OP( 2, lbu, 0x000000ff, 0,  tdat );
-  TEST_LD_OP( 3, lbu, 0x00000000, 1,  tdat );
-  TEST_LD_OP( 4, lbu, 0x000000f0, 2,  tdat );
-  TEST_LD_OP( 5, lbu, 0x0000000f, 3, tdat );
-
-  # Test with negative offset
-
-  TEST_LD_OP( 6, lbu, 0x000000ff, -3, tdat4 );
-  TEST_LD_OP( 7, lbu, 0x00000000, -2,  tdat4 );
-  TEST_LD_OP( 8, lbu, 0x000000f0, -1,  tdat4 );
-  TEST_LD_OP( 9, lbu, 0x0000000f, 0,   tdat4 );
-
-  # Test with a negative base
-
-  TEST_CASE( 10, x3, 0x000000ff, \
-    la  x1, tdat; \
-    addi x1, x1, -32; \
-    lbu x3, 32(x1); \
-  )
-
-  # Test with unaligned base
-
-  TEST_CASE( 11, x3, 0x00000000, \
-    la  x1, tdat; \
-    addi x1, x1, -6; \
-    lbu x3, 7(x1); \
-  )
-
-  #-------------------------------------------------------------
-  # Bypassing tests
-  #-------------------------------------------------------------
-
-  TEST_LD_DEST_BYPASS( 12, 0, lbu, 0x000000f0, 1, tdat2 );
-  TEST_LD_DEST_BYPASS( 13, 1, lbu, 0x0000000f, 1, tdat3 );
-  TEST_LD_DEST_BYPASS( 14, 2, lbu, 0x00000000, 1, tdat1 );
-
-  TEST_LD_SRC1_BYPASS( 15, 0, lbu, 0x000000f0, 1, tdat2 );
-  TEST_LD_SRC1_BYPASS( 16, 1, lbu, 0x0000000f, 1, tdat3 );
-  TEST_LD_SRC1_BYPASS( 17, 2, lbu, 0x00000000, 1, tdat1 );
-
-  #-------------------------------------------------------------
-  # Test write-after-write hazard
-  #-------------------------------------------------------------
-
-  TEST_CASE( 18, x2, 2, \
-    la  x3, tdat; \
-    lbu  x2, 0(x3); \
-    li  x2, 2; \
-  )
-
-  TEST_CASE( 19, x2, 2, \
-    la  x3, tdat; \
-    lbu  x2, 0(x3); \
-    nop; \
-    li  x2, 2; \
-  )
-
-  TEST_PASSFAIL
-
-RVTEST_CODE_END
-
-  .data
-RVTEST_DATA_BEGIN
-
-  TEST_DATA
-
-tdat:
-tdat1:  .byte 0xff
-tdat2:  .byte 0x00
-tdat3:  .byte 0xf0
-tdat4:  .byte 0x0f
+#undef RVTEST_RV64U
+#define RVTEST_RV64U RVTEST_RV32U
 
-RVTEST_DATA_END
+#include "../rv64ui/lbu.S"
diff --git a/isa/rv32ui/ld.S b/isa/rv32ui/ld.S
deleted file mode 100644 (file)
index 8e24f0b..0000000
+++ /dev/null
@@ -1,92 +0,0 @@
-# See LICENSE for license details.
-
-#*****************************************************************************
-# ld.S
-#-----------------------------------------------------------------------------
-#
-# Test ld instruction.
-#
-
-#include "riscv_test.h"
-#include "test_macros.h"
-
-RVTEST_RV32U
-RVTEST_CODE_BEGIN
-
-  #-------------------------------------------------------------
-  # Basic tests
-  #-------------------------------------------------------------
-
-  TEST_LD_OP( 2, ld, 0x00ff00ff, 0,  tdat );
-  TEST_LD_OP( 3, ld, 0xff00ff00, 8,  tdat );
-  TEST_LD_OP( 4, ld, 0x0ff00ff0, 16, tdat );
-  TEST_LD_OP( 5, ld, 0xf00ff00f, 24, tdat );
-
-  # Test with negative offset
-
-  TEST_LD_OP( 6, ld, 0x00ff00ff, -24, tdat4 );
-  TEST_LD_OP( 7, ld, 0xff00ff00, -16, tdat4 );
-  TEST_LD_OP( 8, ld, 0x0ff00ff0, -8,  tdat4 );
-  TEST_LD_OP( 9, ld, 0xf00ff00f, 0,   tdat4 );
-
-  # Test with a negative base
-
-  TEST_CASE( 10, x3, 0x00ff00ff, \
-    la  x1, tdat; \
-    addi x1, x1, -32; \
-    ld x3, 32(x1); \
-  )
-
-  # Test with unaligned base
-
-  TEST_CASE( 11, x3, 0xff00ff00, \
-    la  x1, tdat; \
-    addi x1, x1, -3; \
-    ld x3, 11(x1); \
-  )
-
-  #-------------------------------------------------------------
-  # Bypassing tests
-  #-------------------------------------------------------------
-
-  TEST_LD_DEST_BYPASS( 12, 0, ld, 0x0ff00ff0, 8, tdat2 );
-  TEST_LD_DEST_BYPASS( 13, 1, ld, 0xf00ff00f, 8, tdat3 );
-  TEST_LD_DEST_BYPASS( 14, 2, ld, 0xff00ff00, 8, tdat1 );
-
-  TEST_LD_SRC1_BYPASS( 15, 0, ld, 0x0ff00ff0, 8, tdat2 );
-  TEST_LD_SRC1_BYPASS( 16, 1, ld, 0xf00ff00f, 8, tdat3 );
-  TEST_LD_SRC1_BYPASS( 17, 2, ld, 0xff00ff00, 8, tdat1 );
-
-  #-------------------------------------------------------------
-  # Test write-after-write hazard
-  #-------------------------------------------------------------
-
-  TEST_CASE( 18, x2, 2, \
-    la  x3, tdat; \
-    ld  x2, 0(x3); \
-    li  x2, 2; \
-  )
-
-  TEST_CASE( 19, x2, 2, \
-    la  x3, tdat; \
-    ld  x2, 0(x3); \
-    nop; \
-    li  x2, 2; \
-  )
-
-  TEST_PASSFAIL
-
-RVTEST_CODE_END
-
-  .data
-RVTEST_DATA_BEGIN
-
-  TEST_DATA
-
-tdat:
-tdat1:  .dword 0x00ff00ff
-tdat2:  .dword 0xff00ff00
-tdat3:  .dword 0x0ff00ff0
-tdat4:  .dword 0xf00ff00f
-
-RVTEST_DATA_END
index d8eda918a467bf8c74e04835c370a9af89d8e45e..f1b2390ef20360d370aa5560f5d96ec1bd3930c5 100644 (file)
@@ -1,92 +1,7 @@
 # See LICENSE for license details.
 
-#*****************************************************************************
-# lh.S
-#-----------------------------------------------------------------------------
-#
-# Test lh instruction.
-#
-
 #include "riscv_test.h"
-#include "test_macros.h"
-
-RVTEST_RV32U
-RVTEST_CODE_BEGIN
-
-  #-------------------------------------------------------------
-  # Basic tests
-  #-------------------------------------------------------------
-
-  TEST_LD_OP( 2, lh, 0x000000ff, 0,  tdat );
-  TEST_LD_OP( 3, lh, 0xffffff00, 2,  tdat );
-  TEST_LD_OP( 4, lh, 0x00000ff0, 4,  tdat );
-  TEST_LD_OP( 5, lh, 0xfffff00f, 6, tdat );
-
-  # Test with negative offset
-
-  TEST_LD_OP( 6, lh, 0x000000ff, -6,  tdat4 );
-  TEST_LD_OP( 7, lh, 0xffffff00, -4,  tdat4 );
-  TEST_LD_OP( 8, lh, 0x00000ff0, -2,  tdat4 );
-  TEST_LD_OP( 9, lh, 0xfffff00f,  0, tdat4 );
-
-  # Test with a negative base
-
-  TEST_CASE( 10, x3, 0x000000ff, \
-    la  x1, tdat; \
-    addi x1, x1, -32; \
-    lh x3, 32(x1); \
-  )
-
-  # Test with unaligned base
-
-  TEST_CASE( 11, x3, 0xffffff00, \
-    la  x1, tdat; \
-    addi x1, x1, -5; \
-    lh x3, 7(x1); \
-  )
-
-  #-------------------------------------------------------------
-  # Bypassing tests
-  #-------------------------------------------------------------
-
-  TEST_LD_DEST_BYPASS( 12, 0, lh, 0x00000ff0, 2, tdat2 );
-  TEST_LD_DEST_BYPASS( 13, 1, lh, 0xfffff00f, 2, tdat3 );
-  TEST_LD_DEST_BYPASS( 14, 2, lh, 0xffffff00, 2, tdat1 );
-
-  TEST_LD_SRC1_BYPASS( 15, 0, lh, 0x00000ff0, 2, tdat2 );
-  TEST_LD_SRC1_BYPASS( 16, 1, lh, 0xfffff00f, 2, tdat3 );
-  TEST_LD_SRC1_BYPASS( 17, 2, lh, 0xffffff00, 2, tdat1 );
-
-  #-------------------------------------------------------------
-  # Test write-after-write hazard
-  #-------------------------------------------------------------
-
-  TEST_CASE( 18, x2, 2, \
-    la  x3, tdat; \
-    lh  x2, 0(x3); \
-    li  x2, 2; \
-  )
-
-  TEST_CASE( 19, x2, 2, \
-    la  x3, tdat; \
-    lh  x2, 0(x3); \
-    nop; \
-    li  x2, 2; \
-  )
-
-  TEST_PASSFAIL
-
-RVTEST_CODE_END
-
-  .data
-RVTEST_DATA_BEGIN
-
-  TEST_DATA
-
-tdat:
-tdat1:  .half 0x00ff
-tdat2:  .half 0xff00
-tdat3:  .half 0x0ff0
-tdat4:  .half 0xf00f
+#undef RVTEST_RV64U
+#define RVTEST_RV64U RVTEST_RV32U
 
-RVTEST_DATA_END
+#include "../rv64ui/lh.S"
index 71daec6cf1b72c85329579174b4347edeeccaaa9..775765ff3ba3fb07f732f69618f9ddcfafa35366 100644 (file)
@@ -1,92 +1,7 @@
 # See LICENSE for license details.
 
-#*****************************************************************************
-# lhu.S
-#-----------------------------------------------------------------------------
-#
-# Test lhu instruction.
-#
-
 #include "riscv_test.h"
-#include "test_macros.h"
-
-RVTEST_RV32U
-RVTEST_CODE_BEGIN
-
-  #-------------------------------------------------------------
-  # Basic tests
-  #-------------------------------------------------------------
-
-  TEST_LD_OP( 2, lhu, 0x000000ff, 0,  tdat );
-  TEST_LD_OP( 3, lhu, 0x0000ff00, 2,  tdat );
-  TEST_LD_OP( 4, lhu, 0x00000ff0, 4,  tdat );
-  TEST_LD_OP( 5, lhu, 0x0000f00f, 6, tdat );
-
-  # Test with negative offset
-
-  TEST_LD_OP( 6, lhu, 0x000000ff, -6,  tdat4 );
-  TEST_LD_OP( 7, lhu, 0x0000ff00, -4,  tdat4 );
-  TEST_LD_OP( 8, lhu, 0x00000ff0, -2,  tdat4 );
-  TEST_LD_OP( 9, lhu, 0x0000f00f,  0, tdat4 );
-
-  # Test with a negative base
-
-  TEST_CASE( 10, x3, 0x000000ff, \
-    la  x1, tdat; \
-    addi x1, x1, -32; \
-    lhu x3, 32(x1); \
-  )
-
-  # Test with unaligned base
-
-  TEST_CASE( 11, x3, 0x0000ff00, \
-    la  x1, tdat; \
-    addi x1, x1, -5; \
-    lhu x3, 7(x1); \
-  )
-
-  #-------------------------------------------------------------
-  # Bypassing tests
-  #-------------------------------------------------------------
-
-  TEST_LD_DEST_BYPASS( 12, 0, lhu, 0x00000ff0, 2, tdat2 );
-  TEST_LD_DEST_BYPASS( 13, 1, lhu, 0x0000f00f, 2, tdat3 );
-  TEST_LD_DEST_BYPASS( 14, 2, lhu, 0x0000ff00, 2, tdat1 );
-
-  TEST_LD_SRC1_BYPASS( 15, 0, lhu, 0x00000ff0, 2, tdat2 );
-  TEST_LD_SRC1_BYPASS( 16, 1, lhu, 0x0000f00f, 2, tdat3 );
-  TEST_LD_SRC1_BYPASS( 17, 2, lhu, 0x0000ff00, 2, tdat1 );
-
-  #-------------------------------------------------------------
-  # Test write-after-write hazard
-  #-------------------------------------------------------------
-
-  TEST_CASE( 18, x2, 2, \
-    la  x3, tdat; \
-    lhu  x2, 0(x3); \
-    li  x2, 2; \
-  )
-
-  TEST_CASE( 19, x2, 2, \
-    la  x3, tdat; \
-    lhu  x2, 0(x3); \
-    nop; \
-    li  x2, 2; \
-  )
-
-  TEST_PASSFAIL
-
-RVTEST_CODE_END
-
-  .data
-RVTEST_DATA_BEGIN
-
-  TEST_DATA
-
-tdat:
-tdat1:  .half 0x00ff
-tdat2:  .half 0xff00
-tdat3:  .half 0x0ff0
-tdat4:  .half 0xf00f
+#undef RVTEST_RV64U
+#define RVTEST_RV64U RVTEST_RV32U
 
-RVTEST_DATA_END
+#include "../rv64ui/lhu.S"
index 50822d1bd9f6089ec9b800f5a4cb2983c9590711..a127d610eeea9613ebc8326ba224c18cdfae15e0 100644 (file)
@@ -1,36 +1,7 @@
 # See LICENSE for license details.
 
-#*****************************************************************************
-# lui.S
-#-----------------------------------------------------------------------------
-#
-# Test lui instruction.
-#
-
 #include "riscv_test.h"
-#include "test_macros.h"
-
-RVTEST_RV32U
-RVTEST_CODE_BEGIN
-
-  #-------------------------------------------------------------
-  # Basic tests
-  #-------------------------------------------------------------
-
-  TEST_CASE( 2, x1, 0x00000000, lui x1, 0x00000 );
-  TEST_CASE( 3, x1, 0xfffff800, lui x1, 0xfffff;sra x1,x1,1);
-  TEST_CASE( 4, x1, 0x000007ff, lui x1, 0x7ffff;sra x1,x1,20);
-  TEST_CASE( 5, x1, 0xfffff800, lui x1, 0x80000;sra x1,x1,20);
-
-  TEST_CASE( 6, x0, 0, lui x0, 0x80000 );
-
-  TEST_PASSFAIL
-
-RVTEST_CODE_END
-
-  .data
-RVTEST_DATA_BEGIN
-
-  TEST_DATA
+#undef RVTEST_RV64U
+#define RVTEST_RV64U RVTEST_RV32U
 
-RVTEST_DATA_END
+#include "../rv64ui/lui.S"
index 4a07838d64c249e441e2f9b9272a8a27057ad0a4..3b747d831930f02c11139b6c8ab97e0509dbde9f 100644 (file)
@@ -1,92 +1,7 @@
 # See LICENSE for license details.
 
-#*****************************************************************************
-# lw.S
-#-----------------------------------------------------------------------------
-#
-# Test lw instruction.
-#
-
 #include "riscv_test.h"
-#include "test_macros.h"
-
-RVTEST_RV32U
-RVTEST_CODE_BEGIN
-
-  #-------------------------------------------------------------
-  # Basic tests
-  #-------------------------------------------------------------
-
-  TEST_LD_OP( 2, lw, 0x00ff00ff, 0,  tdat );
-  TEST_LD_OP( 3, lw, 0xff00ff00, 4,  tdat );
-  TEST_LD_OP( 4, lw, 0x0ff00ff0, 8,  tdat );
-  TEST_LD_OP( 5, lw, 0xf00ff00f, 12, tdat );
-
-  # Test with negative offset
-
-  TEST_LD_OP( 6, lw, 0x00ff00ff, -12, tdat4 );
-  TEST_LD_OP( 7, lw, 0xff00ff00, -8,  tdat4 );
-  TEST_LD_OP( 8, lw, 0x0ff00ff0, -4,  tdat4 );
-  TEST_LD_OP( 9, lw, 0xf00ff00f, 0,   tdat4 );
-
-  # Test with a negative base
-
-  TEST_CASE( 10, x3, 0x00ff00ff, \
-    la  x1, tdat; \
-    addi x1, x1, -32; \
-    lw x3, 32(x1); \
-  )
-
-  # Test with unaligned base
-
-  TEST_CASE( 11, x3, 0xff00ff00, \
-    la  x1, tdat; \
-    addi x1, x1, -3; \
-    lw x3, 7(x1); \
-  )
-
-  #-------------------------------------------------------------
-  # Bypassing tests
-  #-------------------------------------------------------------
-
-  TEST_LD_DEST_BYPASS( 12, 0, lw, 0x0ff00ff0, 4, tdat2 );
-  TEST_LD_DEST_BYPASS( 13, 1, lw, 0xf00ff00f, 4, tdat3 );
-  TEST_LD_DEST_BYPASS( 14, 2, lw, 0xff00ff00, 4, tdat1 );
-
-  TEST_LD_SRC1_BYPASS( 15, 0, lw, 0x0ff00ff0, 4, tdat2 );
-  TEST_LD_SRC1_BYPASS( 16, 1, lw, 0xf00ff00f, 4, tdat3 );
-  TEST_LD_SRC1_BYPASS( 17, 2, lw, 0xff00ff00, 4, tdat1 );
-
-  #-------------------------------------------------------------
-  # Test write-after-write hazard
-  #-------------------------------------------------------------
-
-  TEST_CASE( 18, x2, 2, \
-    la  x3, tdat; \
-    lw  x2, 0(x3); \
-    li  x2, 2; \
-  )
-
-  TEST_CASE( 19, x2, 2, \
-    la  x3, tdat; \
-    lw  x2, 0(x3); \
-    nop; \
-    li  x2, 2; \
-  )
-
-  TEST_PASSFAIL
-
-RVTEST_CODE_END
-
-  .data
-RVTEST_DATA_BEGIN
-
-  TEST_DATA
-
-tdat:
-tdat1:  .word 0x00ff00ff
-tdat2:  .word 0xff00ff00
-tdat3:  .word 0x0ff00ff0
-tdat4:  .word 0xf00ff00f
+#undef RVTEST_RV64U
+#define RVTEST_RV64U RVTEST_RV32U
 
-RVTEST_DATA_END
+#include "../rv64ui/lw.S"
diff --git a/isa/rv32ui/lwu.S b/isa/rv32ui/lwu.S
deleted file mode 100644 (file)
index 818a257..0000000
+++ /dev/null
@@ -1,92 +0,0 @@
-# See LICENSE for license details.
-
-#*****************************************************************************
-# lwu.S
-#-----------------------------------------------------------------------------
-#
-# Test lwu instruction.
-#
-
-#include "riscv_test.h"
-#include "test_macros.h"
-
-RVTEST_RV32U
-RVTEST_CODE_BEGIN
-
-  #-------------------------------------------------------------
-  # Basic tests
-  #-------------------------------------------------------------
-
-  TEST_LD_OP( 2, lwu, 0x00ff00ff, 0,  tdat );
-  TEST_LD_OP( 3, lwu, 0xff00ff00, 4,  tdat );
-  TEST_LD_OP( 4, lwu, 0x0ff00ff0, 8,  tdat );
-  TEST_LD_OP( 5, lwu, 0xf00ff00f, 12, tdat );
-
-  # Test with negative offset
-
-  TEST_LD_OP( 6, lwu, 0x00ff00ff, -12, tdat4 );
-  TEST_LD_OP( 7, lwu, 0xff00ff00, -8,  tdat4 );
-  TEST_LD_OP( 8, lwu, 0x0ff00ff0, -4,  tdat4 );
-  TEST_LD_OP( 9, lwu, 0xf00ff00f, 0,   tdat4 );
-
-  # Test with a negative base
-
-  TEST_CASE( 10, x3, 0x00ff00ff, \
-    la  x1, tdat; \
-    addi x1, x1, -32; \
-    lwu x3, 32(x1); \
-  )
-
-  # Test with unaligned base
-
-  TEST_CASE( 11, x3, 0xff00ff00, \
-    la  x1, tdat; \
-    addi x1, x1, -3; \
-    lwu x3, 7(x1); \
-  )
-
-  #-------------------------------------------------------------
-  # Bypassing tests
-  #-------------------------------------------------------------
-
-  TEST_LD_DEST_BYPASS( 12, 0, lwu, 0x0ff00ff0, 4, tdat2 );
-  TEST_LD_DEST_BYPASS( 13, 1, lwu, 0xf00ff00f, 4, tdat3 );
-  TEST_LD_DEST_BYPASS( 14, 2, lwu, 0xff00ff00, 4, tdat1 );
-
-  TEST_LD_SRC1_BYPASS( 15, 0, lwu, 0x0ff00ff0, 4, tdat2 );
-  TEST_LD_SRC1_BYPASS( 16, 1, lwu, 0xf00ff00f, 4, tdat3 );
-  TEST_LD_SRC1_BYPASS( 17, 2, lwu, 0xff00ff00, 4, tdat1 );
-
-  #-------------------------------------------------------------
-  # Test write-after-write hazard
-  #-------------------------------------------------------------
-
-  TEST_CASE( 18, x2, 2, \
-    la  x3, tdat; \
-    lwu x2, 0(x3); \
-    li  x2, 2; \
-  )
-
-  TEST_CASE( 19, x2, 2, \
-    la  x3, tdat; \
-    lwu x2, 0(x3); \
-    nop; \
-    li  x2, 2; \
-  )
-
-  TEST_PASSFAIL
-
-RVTEST_CODE_END
-
-  .data
-RVTEST_DATA_BEGIN
-
-  TEST_DATA
-
-tdat:
-tdat1:  .word 0x00ff00ff
-tdat2:  .word 0xff00ff00
-tdat3:  .word 0x0ff00ff0
-tdat4:  .word 0xf00ff00f
-
-RVTEST_DATA_END
index 110bcc44ce4ef212e232c26436781ba97525ee5b..1cf5674ade841106879c16654b220524e64c4bda 100644 (file)
@@ -1,69 +1,7 @@
 # See LICENSE for license details.
 
-#*****************************************************************************
-# or.S
-#-----------------------------------------------------------------------------
-#
-# Test or instruction.
-#
-
 #include "riscv_test.h"
-#include "test_macros.h"
-
-RVTEST_RV32U
-RVTEST_CODE_BEGIN
-
-  #-------------------------------------------------------------
-  # Logical tests
-  #-------------------------------------------------------------
-
-  TEST_RR_OP( 2, or, 0xff0fff0f, 0xff00ff00, 0x0f0f0f0f );
-  TEST_RR_OP( 3, or, 0xfff0fff0, 0x0ff00ff0, 0xf0f0f0f0 );
-  TEST_RR_OP( 4, or, 0x0fff0fff, 0x00ff00ff, 0x0f0f0f0f );
-  TEST_RR_OP( 5, or, 0xf0fff0ff, 0xf00ff00f, 0xf0f0f0f0 );
-
-  #-------------------------------------------------------------
-  # Source/Destination tests
-  #-------------------------------------------------------------
-
-  TEST_RR_SRC1_EQ_DEST( 6, or, 0xff0fff0f, 0xff00ff00, 0x0f0f0f0f );
-  TEST_RR_SRC2_EQ_DEST( 7, or, 0xff0fff0f, 0xff00ff00, 0x0f0f0f0f );
-  TEST_RR_SRC12_EQ_DEST( 8, or, 0xff00ff00, 0xff00ff00 );
-
-  #-------------------------------------------------------------
-  # Bypassing tests
-  #-------------------------------------------------------------
-
-  TEST_RR_DEST_BYPASS( 9,  0, or, 0xff0fff0f, 0xff00ff00, 0x0f0f0f0f );
-  TEST_RR_DEST_BYPASS( 10, 1, or, 0xfff0fff0, 0x0ff00ff0, 0xf0f0f0f0 );
-  TEST_RR_DEST_BYPASS( 11, 2, or, 0x0fff0fff, 0x00ff00ff, 0x0f0f0f0f );
-
-  TEST_RR_SRC12_BYPASS( 12, 0, 0, or, 0xff0fff0f, 0xff00ff00, 0x0f0f0f0f );
-  TEST_RR_SRC12_BYPASS( 13, 0, 1, or, 0xfff0fff0, 0x0ff00ff0, 0xf0f0f0f0 );
-  TEST_RR_SRC12_BYPASS( 14, 0, 2, or, 0x0fff0fff, 0x00ff00ff, 0x0f0f0f0f );
-  TEST_RR_SRC12_BYPASS( 15, 1, 0, or, 0xff0fff0f, 0xff00ff00, 0x0f0f0f0f );
-  TEST_RR_SRC12_BYPASS( 16, 1, 1, or, 0xfff0fff0, 0x0ff00ff0, 0xf0f0f0f0 );
-  TEST_RR_SRC12_BYPASS( 17, 2, 0, or, 0x0fff0fff, 0x00ff00ff, 0x0f0f0f0f );
-
-  TEST_RR_SRC21_BYPASS( 18, 0, 0, or, 0xff0fff0f, 0xff00ff00, 0x0f0f0f0f );
-  TEST_RR_SRC21_BYPASS( 19, 0, 1, or, 0xfff0fff0, 0x0ff00ff0, 0xf0f0f0f0 );
-  TEST_RR_SRC21_BYPASS( 20, 0, 2, or, 0x0fff0fff, 0x00ff00ff, 0x0f0f0f0f );
-  TEST_RR_SRC21_BYPASS( 21, 1, 0, or, 0xff0fff0f, 0xff00ff00, 0x0f0f0f0f );
-  TEST_RR_SRC21_BYPASS( 22, 1, 1, or, 0xfff0fff0, 0x0ff00ff0, 0xf0f0f0f0 );
-  TEST_RR_SRC21_BYPASS( 23, 2, 0, or, 0x0fff0fff, 0x00ff00ff, 0x0f0f0f0f );
-
-  TEST_RR_ZEROSRC1( 24, or, 0xff00ff00, 0xff00ff00 );
-  TEST_RR_ZEROSRC2( 25, or, 0x00ff00ff, 0x00ff00ff );
-  TEST_RR_ZEROSRC12( 26, or, 0 );
-  TEST_RR_ZERODEST( 27, or, 0x11111111, 0x22222222 );
-
-  TEST_PASSFAIL
-
-RVTEST_CODE_END
-
-  .data
-RVTEST_DATA_BEGIN
-
-  TEST_DATA
+#undef RVTEST_RV64U
+#define RVTEST_RV64U RVTEST_RV32U
 
-RVTEST_DATA_END
+#include "../rv64ui/or.S"
index a674784be3795902de2062e05b4aa1836ad398b5..339964961e1bbbcb28522de49498c9d623c0ffbf 100644 (file)
@@ -1,55 +1,7 @@
 # See LICENSE for license details.
 
-#*****************************************************************************
-# ori.S
-#-----------------------------------------------------------------------------
-#
-# Test ori instruction.
-#
-
 #include "riscv_test.h"
-#include "test_macros.h"
-
-RVTEST_RV32U
-RVTEST_CODE_BEGIN
-
-  #-------------------------------------------------------------
-  # Logical tests
-  #-------------------------------------------------------------
-
-  TEST_IMM_OP( 2, ori, 0xffffff0f, 0xff00ff00, 0xf0f );
-  TEST_IMM_OP( 3, ori, 0x0ff00ff0, 0x0ff00ff0, 0x0f0 );
-  TEST_IMM_OP( 4, ori, 0x00ff07ff, 0x00ff00ff, 0x70f );
-  TEST_IMM_OP( 5, ori, 0xf00ff0ff, 0xf00ff00f, 0x0f0 );
-
-  #-------------------------------------------------------------
-  # Source/Destination tests
-  #-------------------------------------------------------------
-
-  TEST_IMM_SRC1_EQ_DEST( 6, ori, 0xff00fff0, 0xff00ff00, 0x0f0 );
-
-  #-------------------------------------------------------------
-  # Bypassing tests
-  #-------------------------------------------------------------
-
-  TEST_IMM_DEST_BYPASS( 7,  0, ori, 0x0ff00ff0, 0x0ff00ff0, 0x0f0 );
-  TEST_IMM_DEST_BYPASS( 8,  1, ori, 0x00ff07ff, 0x00ff00ff, 0x70f );
-  TEST_IMM_DEST_BYPASS( 9,  2, ori, 0xf00ff0ff, 0xf00ff00f, 0x0f0 );
-
-  TEST_IMM_SRC1_BYPASS( 10, 0, ori, 0x0ff00ff0, 0x0ff00ff0, 0x0f0 );
-  TEST_IMM_SRC1_BYPASS( 11, 1, ori, 0xffffffff, 0x00ff00ff, 0xf0f );
-  TEST_IMM_SRC1_BYPASS( 12, 2, ori, 0xf00ff0ff, 0xf00ff00f, 0x0f0 );
-
-  TEST_IMM_ZEROSRC1( 13, ori, 0x0f0, 0x0f0 );
-  TEST_IMM_ZERODEST( 14, ori, 0x00ff00ff, 0x70f );
-
-  TEST_PASSFAIL
-
-RVTEST_CODE_END
-
-  .data
-RVTEST_DATA_BEGIN
-
-  TEST_DATA
+#undef RVTEST_RV64U
+#define RVTEST_RV64U RVTEST_RV32U
 
-RVTEST_DATA_END
+#include "../rv64ui/ori.S"
index 05d1894f70bb81969b0dcf19013c35612e938088..b2f99ac7066bdb7555d2fbddbaaf1372ba4891b5 100644 (file)
@@ -1,96 +1,7 @@
 # See LICENSE for license details.
 
-#*****************************************************************************
-# sb.S
-#-----------------------------------------------------------------------------
-#
-# Test sb instruction.
-#
-
 #include "riscv_test.h"
-#include "test_macros.h"
-
-RVTEST_RV32U
-RVTEST_CODE_BEGIN
-
-  #-------------------------------------------------------------
-  # Basic tests
-  #-------------------------------------------------------------
-
-  TEST_ST_OP( 2, lb, sb, 0xffffffaa, 0, tdat );
-  TEST_ST_OP( 3, lb, sb, 0x00000000, 1, tdat );
-  TEST_ST_OP( 4, lh, sb, 0xffffefa0, 2, tdat );
-  TEST_ST_OP( 5, lb, sb, 0x0000000a, 3, tdat );
-
-  # Test with negative offset
-
-  TEST_ST_OP( 6, lb, sb, 0xffffffaa, -3, tdat8 );
-  TEST_ST_OP( 7, lb, sb, 0x00000000, -2, tdat8 );
-  TEST_ST_OP( 8, lb, sb, 0xffffffa0, -1, tdat8 );
-  TEST_ST_OP( 9, lb, sb, 0x0000000a, 0,  tdat8 );
-
-  # Test with a negative base
-
-  TEST_CASE( 10, x3, 0x78, \
-    la  x1, tdat9; \
-    li  x2, 0x12345678; \
-    addi x4, x1, -32; \
-    sb x2, 32(x4); \
-    lb x3, 0(x1); \
-  )
-
-  # Test with unaligned base
-
-  TEST_CASE( 11, x3, 0xffffff98, \
-    la  x1, tdat9; \
-    li  x2, 0x00003098; \
-    addi x1, x1, -6; \
-    sb x2, 7(x1); \
-    la  x4, tdat10; \
-    lb x3, 0(x4); \
-  )
-
-  #-------------------------------------------------------------
-  # Bypassing tests
-  #-------------------------------------------------------------
-
-  TEST_ST_SRC12_BYPASS( 12, 0, 0, lb, sb, 0xffffffdd, 0, tdat );
-  TEST_ST_SRC12_BYPASS( 13, 0, 1, lb, sb, 0xffffffcd, 1, tdat );
-  TEST_ST_SRC12_BYPASS( 14, 0, 2, lb, sb, 0xffffffcc, 2, tdat );
-  TEST_ST_SRC12_BYPASS( 15, 1, 0, lb, sb, 0xffffffbc, 3, tdat );
-  TEST_ST_SRC12_BYPASS( 16, 1, 1, lb, sb, 0xffffffbb, 4, tdat );
-  TEST_ST_SRC12_BYPASS( 17, 2, 0, lb, sb, 0xffffffab, 5, tdat );
-
-  TEST_ST_SRC21_BYPASS( 18, 0, 0, lb, sb, 0x33, 0, tdat );
-  TEST_ST_SRC21_BYPASS( 19, 0, 1, lb, sb, 0x23, 1, tdat );
-  TEST_ST_SRC21_BYPASS( 20, 0, 2, lb, sb, 0x22, 2, tdat );
-  TEST_ST_SRC21_BYPASS( 21, 1, 0, lb, sb, 0x12, 3, tdat );
-  TEST_ST_SRC21_BYPASS( 22, 1, 1, lb, sb, 0x11, 4, tdat );
-  TEST_ST_SRC21_BYPASS( 23, 2, 0, lb, sb, 0x01, 5, tdat );
-
-  li a0, 0xef
-  la a1, tdat
-  sb a0, 3(a1)
-
-  TEST_PASSFAIL
-
-RVTEST_CODE_END
-
-  .data
-RVTEST_DATA_BEGIN
-
-  TEST_DATA
-
-tdat:
-tdat1:  .byte 0xef
-tdat2:  .byte 0xef
-tdat3:  .byte 0xef
-tdat4:  .byte 0xef
-tdat5:  .byte 0xef
-tdat6:  .byte 0xef
-tdat7:  .byte 0xef
-tdat8:  .byte 0xef
-tdat9:  .byte 0xef
-tdat10: .byte 0xef
+#undef RVTEST_RV64U
+#define RVTEST_RV64U RVTEST_RV32U
 
-RVTEST_DATA_END
+#include "../rv64ui/sb.S"
index 6c472748bdc15c2df66442992e36fb7ce7ed3015..eb5a72d1a0f97bc7124513917ab41bddd4e29e10 100644 (file)
@@ -1,114 +1,7 @@
 # See LICENSE for license details.
 
-#*****************************************************************************
-# sh.S
-#-----------------------------------------------------------------------------
-#
-# Test sh instruction.
-#
-
 #include "riscv_test.h"
-#include "test_macros.h"
-
-RVTEST_RV32U
-RVTEST_CODE_BEGIN
-
-  #-------------------------------------------------------------
-  # Basic tests
-  #-------------------------------------------------------------
-
-  TEST_ST_OP( 2, lh, sh, 0x000000aa, 0, tdat );
-  TEST_ST_OP( 3, lh, sh, 0xffffaa00, 2, tdat );
-  TEST_ST_OP( 4, lw, sh, 0xbeef0aa0, 4, tdat );
-  TEST_ST_OP( 5, lh, sh, 0xffffa00a, 6, tdat );
-
-  # Test with negative offset
-
-  TEST_ST_OP( 6, lh, sh, 0x000000aa, -6, tdat8 );
-  TEST_ST_OP( 7, lh, sh, 0xffffaa00, -4, tdat8 );
-  TEST_ST_OP( 8, lh, sh, 0x00000aa0, -2, tdat8 );
-  TEST_ST_OP( 9, lh, sh, 0xffffa00a, 0,  tdat8 );
-
-  # Test with a negative base
-
-  TEST_CASE( 10, x3, 0x5678, \
-    la  x1, tdat9; \
-    li  x2, 0x12345678; \
-    addi x4, x1, -32; \
-    sh x2, 32(x4); \
-    lh x3, 0(x1); \
-  )
-
-  # Test with unaligned base
-
-  TEST_CASE( 11, x3, 0x3098, \
-    la  x1, tdat9; \
-    li  x2, 0x00003098; \
-    addi x1, x1, -5; \
-    sh x2, 7(x1); \
-    la  x4, tdat10; \
-    lh x3, 0(x4); \
-  )
-
-  #-------------------------------------------------------------
-  # Bypassing tests
-  #-------------------------------------------------------------
-
-  TEST_ST_SRC12_BYPASS( 12, 0, 0, lh, sh, 0xffffccdd, 0,  tdat );
-  TEST_ST_SRC12_BYPASS( 13, 0, 1, lh, sh, 0xffffbccd, 2,  tdat );
-  TEST_ST_SRC12_BYPASS( 14, 0, 2, lh, sh, 0xffffbbcc, 4,  tdat );
-  TEST_ST_SRC12_BYPASS( 15, 1, 0, lh, sh, 0xffffabbc, 6, tdat );
-  TEST_ST_SRC12_BYPASS( 16, 1, 1, lh, sh, 0xffffaabb, 8, tdat );
-  TEST_ST_SRC12_BYPASS( 17, 2, 0, lh, sh, 0xffffdaab, 10, tdat );
-
-  TEST_ST_SRC21_BYPASS( 18, 0, 0, lh, sh, 0x2233, 0,  tdat );
-  TEST_ST_SRC21_BYPASS( 19, 0, 1, lh, sh, 0x1223, 2,  tdat );
-  TEST_ST_SRC21_BYPASS( 20, 0, 2, lh, sh, 0x1122, 4,  tdat );
-  TEST_ST_SRC21_BYPASS( 21, 1, 0, lh, sh, 0x0112, 6, tdat );
-  TEST_ST_SRC21_BYPASS( 22, 1, 1, lh, sh, 0x0011, 8, tdat );
-  TEST_ST_SRC21_BYPASS( 23, 2, 0, lh, sh, 0x3001, 10, tdat );
-
-  #---------------------------------------------------------------
-  # Side effect tests
-  #---------------------------------------------------------------
-
-  # sh to a word aligned address should only affect the 2 lower bytes
-  # and should leave the 2 upper bytes unmodified.
-  #
-  # In this test we write 2 bytes to the lower 2 bytes of the word
-  # tdat11 and then ensure that the both the upper 2 bytes and
-  # lower 2 bytes are as expected.
-  TEST_CASE( 24, x3, 0x12343098, \
-    la  x1, tdat11; \
-    li  x2, 0x00003098; \
-    sh x2, 0(x1); \
-    lw x3, 0(x1); \
-  )
-
-  li a0, 0xbeef
-  la a1, tdat
-  sh a0, 6(a1)
-
-  TEST_PASSFAIL
-
-RVTEST_CODE_END
-
-  .data
-RVTEST_DATA_BEGIN
-
-  TEST_DATA
-
-tdat:
-tdat1:  .half 0xbeef
-tdat2:  .half 0xbeef
-tdat3:  .half 0xbeef
-tdat4:  .half 0xbeef
-tdat5:  .half 0xbeef
-tdat6:  .half 0xbeef
-tdat7:  .half 0xbeef
-tdat8:  .half 0xbeef
-tdat9:  .half 0xbeef
-tdat10: .half 0xbeef
-tdat11: .word 0x12345678
+#undef RVTEST_RV64U
+#define RVTEST_RV64U RVTEST_RV32U
 
-RVTEST_DATA_END
+#include "../rv64ui/sh.S"
index 92cf20366996c9cdf2e7f6eeab2d8542dd158f5b..20e5546573d312a05a985277cb7addab4b5256d7 100644 (file)
@@ -1,27 +1,7 @@
 # See LICENSE for license details.
 
-#*****************************************************************************
-# simple.S
-#-----------------------------------------------------------------------------
-#
-# This is the most basic self checking test. If your simulator does not
-# pass thiss then there is little chance that it will pass any of the
-# more complicated self checking tests.
-#
-
 #include "riscv_test.h"
-#include "test_macros.h"
-
-RVTEST_RV32U
-RVTEST_CODE_BEGIN
-
-RVTEST_PASS
-
-RVTEST_CODE_END
-
-  .data
-RVTEST_DATA_BEGIN
-
-  TEST_DATA
+#undef RVTEST_RV64U
+#define RVTEST_RV64U RVTEST_RV32U
 
-RVTEST_DATA_END
+#include "../rv64ui/simple.S"
index d297ac5daa04f96535ac665a21a9d165f762c4a4..237df9ead62c66ab043b8d0f9a03c5fc7b1cf59b 100644 (file)
@@ -1,90 +1,7 @@
 # See LICENSE for license details.
 
-#*****************************************************************************
-# sll.S
-#-----------------------------------------------------------------------------
-#
-# Test sll instruction.
-#
-
 #include "riscv_test.h"
-#include "test_macros.h"
-
-RVTEST_RV32U
-RVTEST_CODE_BEGIN
-
-  #-------------------------------------------------------------
-  # Arithmetic tests
-  #-------------------------------------------------------------
-
-  TEST_RR_OP( 2,  sll, 0x00000001, 0x00000001, 0  );
-  TEST_RR_OP( 3,  sll, 0x00000002, 0x00000001, 1  );
-  TEST_RR_OP( 4,  sll, 0x00000080, 0x00000001, 7  );
-  TEST_RR_OP( 5,  sll, 0x00004000, 0x00000001, 14 );
-  TEST_RR_OP( 6,  sll, 0x80000000, 0x00000001, 31 );
-
-  TEST_RR_OP( 7,  sll, 0xffffffff, 0xffffffff, 0  );
-  TEST_RR_OP( 8,  sll, 0xfffffffe, 0xffffffff, 1  );
-  TEST_RR_OP( 9,  sll, 0xffffff80, 0xffffffff, 7  );
-  TEST_RR_OP( 10, sll, 0xffffc000, 0xffffffff, 14 );
-  TEST_RR_OP( 11, sll, 0x80000000, 0xffffffff, 31 );
-
-  TEST_RR_OP( 12, sll, 0x21212121, 0x21212121, 0  );
-  TEST_RR_OP( 13, sll, 0x42424242, 0x21212121, 1  );
-  TEST_RR_OP( 14, sll, 0x90909080, 0x21212121, 7  );
-  TEST_RR_OP( 15, sll, 0x48484000, 0x21212121, 14 );
-  TEST_RR_OP( 16, sll, 0x80000000, 0x21212121, 31 );
-
-  # Verify that shifts only use bottom five bits
-
-  TEST_RR_OP( 17, sll, 0x21212121, 0x21212121, 0xffffffe0 );
-  TEST_RR_OP( 18, sll, 0x42424242, 0x21212121, 0xffffffe1 );
-  TEST_RR_OP( 19, sll, 0x90909080, 0x21212121, 0xffffffe7 );
-  TEST_RR_OP( 20, sll, 0x48484000, 0x21212121, 0xffffffee );
-  TEST_RR_OP( 21, sll, 0x00000000, 0x21212120, 0xffffffff );
-
-  #-------------------------------------------------------------
-  # Source/Destination tests
-  #-------------------------------------------------------------
-
-  TEST_RR_SRC1_EQ_DEST( 22, sll, 0x00000080, 0x00000001, 7  );
-  TEST_RR_SRC2_EQ_DEST( 23, sll, 0x00004000, 0x00000001, 14 );
-  TEST_RR_SRC12_EQ_DEST( 24, sll, 24, 3 );
-
-  #-------------------------------------------------------------
-  # Bypassing tests
-  #-------------------------------------------------------------
-
-  TEST_RR_DEST_BYPASS( 25, 0, sll, 0x00000080, 0x00000001, 7  );
-  TEST_RR_DEST_BYPASS( 26, 1, sll, 0x00004000, 0x00000001, 14 );
-  TEST_RR_DEST_BYPASS( 27, 2, sll, 0x80000000, 0x00000001, 31 );
-
-  TEST_RR_SRC12_BYPASS( 28, 0, 0, sll, 0x00000080, 0x00000001, 7  );
-  TEST_RR_SRC12_BYPASS( 29, 0, 1, sll, 0x00004000, 0x00000001, 14 );
-  TEST_RR_SRC12_BYPASS( 30, 0, 2, sll, 0x80000000, 0x00000001, 31 );
-  TEST_RR_SRC12_BYPASS( 31, 1, 0, sll, 0x00000080, 0x00000001, 7  );
-  TEST_RR_SRC12_BYPASS( 32, 1, 1, sll, 0x00004000, 0x00000001, 14 );
-  TEST_RR_SRC12_BYPASS( 33, 2, 0, sll, 0x80000000, 0x00000001, 31 );
-
-  TEST_RR_SRC21_BYPASS( 34, 0, 0, sll, 0x00000080, 0x00000001, 7  );
-  TEST_RR_SRC21_BYPASS( 35, 0, 1, sll, 0x00004000, 0x00000001, 14 );
-  TEST_RR_SRC21_BYPASS( 36, 0, 2, sll, 0x80000000, 0x00000001, 31 );
-  TEST_RR_SRC21_BYPASS( 37, 1, 0, sll, 0x00000080, 0x00000001, 7  );
-  TEST_RR_SRC21_BYPASS( 38, 1, 1, sll, 0x00004000, 0x00000001, 14 );
-  TEST_RR_SRC21_BYPASS( 39, 2, 0, sll, 0x80000000, 0x00000001, 31 );
-
-  TEST_RR_ZEROSRC1( 40, sll, 0, 15 );
-  TEST_RR_ZEROSRC2( 41, sll, 32, 32 );
-  TEST_RR_ZEROSRC12( 42, sll, 0 );
-  TEST_RR_ZERODEST( 43, sll, 1024, 2048 );
-
-  TEST_PASSFAIL
-
-RVTEST_CODE_END
-
-  .data
-RVTEST_DATA_BEGIN
-
-  TEST_DATA
+#undef RVTEST_RV64U
+#define RVTEST_RV64U RVTEST_RV32U
 
-RVTEST_DATA_END
+#include "../rv64ui/sll.S"
index a51eec9cebf1eb1a3c4d24dbb6dfbd37e60657bf..5f950e16447f37a53ab30600ff4eab1c39ef3f5c 100644 (file)
@@ -1,68 +1,7 @@
 # See LICENSE for license details.
 
-#*****************************************************************************
-# slli.S
-#-----------------------------------------------------------------------------
-#
-# Test slli instruction.
-#
-
 #include "riscv_test.h"
-#include "test_macros.h"
-
-RVTEST_RV32U
-RVTEST_CODE_BEGIN
-
-  #-------------------------------------------------------------
-  # Arithmetic tests
-  #-------------------------------------------------------------
-
-  TEST_IMM_OP( 2,  slli, 0x00000001, 0x00000001, 0  );
-  TEST_IMM_OP( 3,  slli, 0x00000002, 0x00000001, 1  );
-  TEST_IMM_OP( 4,  slli, 0x00000080, 0x00000001, 7  );
-  TEST_IMM_OP( 5,  slli, 0x00004000, 0x00000001, 14 );
-  TEST_IMM_OP( 6,  slli, 0x80000000, 0x00000001, 31 );
-
-  TEST_IMM_OP( 7,  slli, 0xffffffff, 0xffffffff, 0  );
-  TEST_IMM_OP( 8,  slli, 0xfffffffe, 0xffffffff, 1  );
-  TEST_IMM_OP( 9,  slli, 0xffffff80, 0xffffffff, 7  );
-  TEST_IMM_OP( 10, slli, 0xffffc000, 0xffffffff, 14 );
-  TEST_IMM_OP( 11, slli, 0x80000000, 0xffffffff, 31 );
-
-  TEST_IMM_OP( 12, slli, 0x21212121, 0x21212121, 0  );
-  TEST_IMM_OP( 13, slli, 0x42424242, 0x21212121, 1  );
-  TEST_IMM_OP( 14, slli, 0x90909080, 0x21212121, 7  );
-  TEST_IMM_OP( 15, slli, 0x48484000, 0x21212121, 14 );
-  TEST_IMM_OP( 16, slli, 0x80000000, 0x21212121, 31 );
-
-  #-------------------------------------------------------------
-  # Source/Destination tests
-  #-------------------------------------------------------------
-
-  TEST_IMM_SRC1_EQ_DEST( 17, slli, 0x00000080, 0x00000001, 7 );
-
-  #-------------------------------------------------------------
-  # Bypassing tests
-  #-------------------------------------------------------------
-
-  TEST_IMM_DEST_BYPASS( 18, 0, slli, 0x00000080, 0x00000001, 7  );
-  TEST_IMM_DEST_BYPASS( 19, 1, slli, 0x00004000, 0x00000001, 14 );
-  TEST_IMM_DEST_BYPASS( 20, 2, slli, 0x80000000, 0x00000001, 31 );
-
-  TEST_IMM_SRC1_BYPASS( 21, 0, slli, 0x00000080, 0x00000001, 7  );
-  TEST_IMM_SRC1_BYPASS( 22, 1, slli, 0x00004000, 0x00000001, 14 );
-  TEST_IMM_SRC1_BYPASS( 23, 2, slli, 0x80000000, 0x00000001, 31 );
-
-  TEST_IMM_ZEROSRC1( 24, slli, 0, 31 );
-  TEST_IMM_ZERODEST( 25, slli, 33, 20 );
-
-  TEST_PASSFAIL
-
-RVTEST_CODE_END
-
-  .data
-RVTEST_DATA_BEGIN
-
-  TEST_DATA
+#undef RVTEST_RV64U
+#define RVTEST_RV64U RVTEST_RV32U
 
-RVTEST_DATA_END
+#include "../rv64ui/slli.S"
index 8c1de3676056c898805eaf54ac4b2acb4b597fbe..08abe196c8bb33933480c8ed189f138a8c0159cb 100644 (file)
@@ -1,90 +1,7 @@
 # See LICENSE for license details.
 
-#*****************************************************************************
-# sra.S
-#-----------------------------------------------------------------------------
-#
-# Test sra instruction.
-#
-
 #include "riscv_test.h"
-#include "test_macros.h"
-
-RVTEST_RV32U
-RVTEST_CODE_BEGIN
-
-  #-------------------------------------------------------------
-  # Arithmetic tests
-  #-------------------------------------------------------------
-
-  TEST_RR_OP( 2,  sra, 0x80000000, 0x80000000, 0  );
-  TEST_RR_OP( 3,  sra, 0xc0000000, 0x80000000, 1  );
-  TEST_RR_OP( 4,  sra, 0xff000000, 0x80000000, 7  );
-  TEST_RR_OP( 5,  sra, 0xfffe0000, 0x80000000, 14 );
-  TEST_RR_OP( 6,  sra, 0xffffffff, 0x80000001, 31 );
-
-  TEST_RR_OP( 7,  sra, 0x7fffffff, 0x7fffffff, 0  );
-  TEST_RR_OP( 8,  sra, 0x3fffffff, 0x7fffffff, 1  );
-  TEST_RR_OP( 9,  sra, 0x00ffffff, 0x7fffffff, 7  );
-  TEST_RR_OP( 10, sra, 0x0001ffff, 0x7fffffff, 14 );
-  TEST_RR_OP( 11, sra, 0x00000000, 0x7fffffff, 31 );
-
-  TEST_RR_OP( 12, sra, 0x81818181, 0x81818181, 0  );
-  TEST_RR_OP( 13, sra, 0xc0c0c0c0, 0x81818181, 1  );
-  TEST_RR_OP( 14, sra, 0xff030303, 0x81818181, 7  );
-  TEST_RR_OP( 15, sra, 0xfffe0606, 0x81818181, 14 );
-  TEST_RR_OP( 16, sra, 0xffffffff, 0x81818181, 31 );
-
-  # Verify that shifts only use bottom five bits
-
-  TEST_RR_OP( 17, sra, 0x81818181, 0x81818181, 0xffffffc0 );
-  TEST_RR_OP( 18, sra, 0xc0c0c0c0, 0x81818181, 0xffffffc1 );
-  TEST_RR_OP( 19, sra, 0xff030303, 0x81818181, 0xffffffc7 );
-  TEST_RR_OP( 20, sra, 0xfffe0606, 0x81818181, 0xffffffce );
-  TEST_RR_OP( 21, sra, 0xffffffff, 0x81818181, 0xffffffff );
-
-  #-------------------------------------------------------------
-  # Source/Destination tests
-  #-------------------------------------------------------------
-
-  TEST_RR_SRC1_EQ_DEST( 22, sra, 0xff000000, 0x80000000, 7  );
-  TEST_RR_SRC2_EQ_DEST( 23, sra, 0xfffe0000, 0x80000000, 14 );
-  TEST_RR_SRC12_EQ_DEST( 24, sra, 0, 7 );
-
-  #-------------------------------------------------------------
-  # Bypassing tests
-  #-------------------------------------------------------------
-
-  TEST_RR_DEST_BYPASS( 25, 0, sra, 0xff000000, 0x80000000, 7  );
-  TEST_RR_DEST_BYPASS( 26, 1, sra, 0xfffe0000, 0x80000000, 14 );
-  TEST_RR_DEST_BYPASS( 27, 2, sra, 0xffffffff, 0x80000000, 31 );
-
-  TEST_RR_SRC12_BYPASS( 28, 0, 0, sra, 0xff000000, 0x80000000, 7  );
-  TEST_RR_SRC12_BYPASS( 29, 0, 1, sra, 0xfffe0000, 0x80000000, 14 );
-  TEST_RR_SRC12_BYPASS( 30, 0, 2, sra, 0xffffffff, 0x80000000, 31 );
-  TEST_RR_SRC12_BYPASS( 31, 1, 0, sra, 0xff000000, 0x80000000, 7  );
-  TEST_RR_SRC12_BYPASS( 32, 1, 1, sra, 0xfffe0000, 0x80000000, 14 );
-  TEST_RR_SRC12_BYPASS( 33, 2, 0, sra, 0xffffffff, 0x80000000, 31 );
-
-  TEST_RR_SRC21_BYPASS( 34, 0, 0, sra, 0xff000000, 0x80000000, 7  );
-  TEST_RR_SRC21_BYPASS( 35, 0, 1, sra, 0xfffe0000, 0x80000000, 14 );
-  TEST_RR_SRC21_BYPASS( 36, 0, 2, sra, 0xffffffff, 0x80000000, 31 );
-  TEST_RR_SRC21_BYPASS( 37, 1, 0, sra, 0xff000000, 0x80000000, 7  );
-  TEST_RR_SRC21_BYPASS( 38, 1, 1, sra, 0xfffe0000, 0x80000000, 14 );
-  TEST_RR_SRC21_BYPASS( 39, 2, 0, sra, 0xffffffff, 0x80000000, 31 );
-
-  TEST_RR_ZEROSRC1( 40, sra, 0, 15 );
-  TEST_RR_ZEROSRC2( 41, sra, 32, 32 );
-  TEST_RR_ZEROSRC12( 42, sra, 0 );
-  TEST_RR_ZERODEST( 43, sra, 1024, 2048 );
-
-  TEST_PASSFAIL
-
-RVTEST_CODE_END
-
-  .data
-RVTEST_DATA_BEGIN
-
-  TEST_DATA
+#undef RVTEST_RV64U
+#define RVTEST_RV64U RVTEST_RV32U
 
-RVTEST_DATA_END
+#include "../rv64ui/sra.S"
index 463819043a0be73b813ea6d8429850361ba3aaab..b62a880584a211866feee3b1318ca48bf9895a6d 100644 (file)
@@ -1,68 +1,7 @@
 # See LICENSE for license details.
 
-#*****************************************************************************
-# srai.S
-#-----------------------------------------------------------------------------
-#
-# Test srai instruction.
-#
-
 #include "riscv_test.h"
-#include "test_macros.h"
-
-RVTEST_RV32U
-RVTEST_CODE_BEGIN
-
-  #-------------------------------------------------------------
-  # Arithmetic tests
-  #-------------------------------------------------------------
-
-  TEST_IMM_OP( 2,  srai, 0x00000000, 0x00000000, 0  );
-  TEST_IMM_OP( 3,  srai, 0xc0000000, 0x80000000, 1  );
-  TEST_IMM_OP( 4,  srai, 0xff000000, 0x80000000, 7  );
-  TEST_IMM_OP( 5,  srai, 0xfffe0000, 0x80000000, 14 );
-  TEST_IMM_OP( 6,  srai, 0xffffffff, 0x80000001, 31 );
-
-  TEST_IMM_OP( 7,  srai, 0x7fffffff, 0x7fffffff, 0  );
-  TEST_IMM_OP( 8,  srai, 0x3fffffff, 0x7fffffff, 1  );
-  TEST_IMM_OP( 9,  srai, 0x00ffffff, 0x7fffffff, 7  );
-  TEST_IMM_OP( 10, srai, 0x0001ffff, 0x7fffffff, 14 );
-  TEST_IMM_OP( 11, srai, 0x00000000, 0x7fffffff, 31 );
-
-  TEST_IMM_OP( 12, srai, 0x81818181, 0x81818181, 0  );
-  TEST_IMM_OP( 13, srai, 0xc0c0c0c0, 0x81818181, 1  );
-  TEST_IMM_OP( 14, srai, 0xff030303, 0x81818181, 7  );
-  TEST_IMM_OP( 15, srai, 0xfffe0606, 0x81818181, 14 );
-  TEST_IMM_OP( 16, srai, 0xffffffff, 0x81818181, 31 );
-
-  #-------------------------------------------------------------
-  # Source/Destination tests
-  #-------------------------------------------------------------
-
-  TEST_IMM_SRC1_EQ_DEST( 17, srai, 0xff000000, 0x80000000, 7 );
-
-  #-------------------------------------------------------------
-  # Bypassing tests
-  #-------------------------------------------------------------
-
-  TEST_IMM_DEST_BYPASS( 18, 0, srai, 0xff000000, 0x80000000, 7  );
-  TEST_IMM_DEST_BYPASS( 19, 1, srai, 0xfffe0000, 0x80000000, 14 );
-  TEST_IMM_DEST_BYPASS( 20, 2, srai, 0xffffffff, 0x80000001, 31 );
-
-  TEST_IMM_SRC1_BYPASS( 21, 0, srai, 0xff000000, 0x80000000, 7 );
-  TEST_IMM_SRC1_BYPASS( 22, 1, srai, 0xfffe0000, 0x80000000, 14 );
-  TEST_IMM_SRC1_BYPASS( 23, 2, srai, 0xffffffff, 0x80000001, 31 );
-
-  TEST_IMM_ZEROSRC1( 24, srai, 0, 31 );
-  TEST_IMM_ZERODEST( 25, srai, 33, 20 );
-#
-  TEST_PASSFAIL
-
-RVTEST_CODE_END
-
-  .data
-RVTEST_DATA_BEGIN
-
-  TEST_DATA
+#undef RVTEST_RV64U
+#define RVTEST_RV64U RVTEST_RV32U
 
-RVTEST_DATA_END
+#include "../rv64ui/srai.S"
index 35cc4c7406adc328949c19ada920722be439f105..c0ac841f742512185311f7be1f239f3744fd8c68 100644 (file)
@@ -1,90 +1,7 @@
 # See LICENSE for license details.
 
-#*****************************************************************************
-# srl.S
-#-----------------------------------------------------------------------------
-#
-# Test srl instruction.
-#
-
 #include "riscv_test.h"
-#include "test_macros.h"
-
-RVTEST_RV32U
-RVTEST_CODE_BEGIN
-
-  #-------------------------------------------------------------
-  # Arithmetic tests
-  #-------------------------------------------------------------
-
-  TEST_RR_OP( 2,  srl, 0xffff8000, 0xffff8000, 0  );
-  TEST_RR_OP( 3,  srl, 0x7fffc000, 0xffff8000, 1  );
-  TEST_RR_OP( 4,  srl, 0x01ffff00, 0xffff8000, 7  );
-  TEST_RR_OP( 5,  srl, 0x0003fffe, 0xffff8000, 14 );
-  TEST_RR_OP( 6,  srl, 0x0001ffff, 0xffff8001, 15 );
-
-  TEST_RR_OP( 7,  srl, 0xffffffff, 0xffffffff, 0  );
-  TEST_RR_OP( 8,  srl, 0x7fffffff, 0xffffffff, 1  );
-  TEST_RR_OP( 9,  srl, 0x01ffffff, 0xffffffff, 7  );
-  TEST_RR_OP( 10, srl, 0x0003ffff, 0xffffffff, 14 );
-  TEST_RR_OP( 11, srl, 0x00000001, 0xffffffff, 31 );
-
-  TEST_RR_OP( 12, srl, 0x21212121, 0x21212121, 0  );
-  TEST_RR_OP( 13, srl, 0x10909090, 0x21212121, 1  );
-  TEST_RR_OP( 14, srl, 0x00424242, 0x21212121, 7  );
-  TEST_RR_OP( 15, srl, 0x00008484, 0x21212121, 14 );
-  TEST_RR_OP( 16, srl, 0x00000000, 0x21212121, 31 );
-
-  # Verify that shifts only use bottom five bits
-
-  TEST_RR_OP( 17, srl, 0x21212121, 0x21212121, 0xffffffe0 );
-  TEST_RR_OP( 18, srl, 0x10909090, 0x21212121, 0xffffffe1 );
-  TEST_RR_OP( 19, srl, 0x00424242, 0x21212121, 0xffffffe7 );
-  TEST_RR_OP( 20, srl, 0x00008484, 0x21212121, 0xffffffee );
-  TEST_RR_OP( 21, srl, 0x00000000, 0x21212121, 0xffffffff );
-
-  #-------------------------------------------------------------
-  # Source/Destination tests
-  #-------------------------------------------------------------
-
-  TEST_RR_SRC1_EQ_DEST( 22, srl, 0x7fffc000, 0xffff8000, 1  );
-  TEST_RR_SRC2_EQ_DEST( 23, srl, 0x0003fffe, 0xffff8000, 14 );
-  TEST_RR_SRC12_EQ_DEST( 24, srl, 0, 7 );
-
-  #-------------------------------------------------------------
-  # Bypassing tests
-  #-------------------------------------------------------------
-
-  TEST_RR_DEST_BYPASS( 25, 0, srl, 0x7fffc000, 0xffff8000, 1  );
-  TEST_RR_DEST_BYPASS( 26, 1, srl, 0x0003fffe, 0xffff8000, 14 );
-  TEST_RR_DEST_BYPASS( 27, 2, srl, 0x0001ffff, 0xffff8000, 15 );
-
-  TEST_RR_SRC12_BYPASS( 28, 0, 0, srl, 0x7fffc000, 0xffff8000, 1  );
-  TEST_RR_SRC12_BYPASS( 29, 0, 1, srl, 0x01ffff00, 0xffff8000, 7 );
-  TEST_RR_SRC12_BYPASS( 30, 0, 2, srl, 0x0001ffff, 0xffff8000, 15 );
-  TEST_RR_SRC12_BYPASS( 31, 1, 0, srl, 0x7fffc000, 0xffff8000, 1  );
-  TEST_RR_SRC12_BYPASS( 32, 1, 1, srl, 0x01ffff00, 0xffff8000, 7 );
-  TEST_RR_SRC12_BYPASS( 33, 2, 0, srl, 0x0001ffff, 0xffff8000, 15 );
-
-  TEST_RR_SRC21_BYPASS( 34, 0, 0, srl, 0x7fffc000, 0xffff8000, 1  );
-  TEST_RR_SRC21_BYPASS( 35, 0, 1, srl, 0x01ffff00, 0xffff8000, 7 );
-  TEST_RR_SRC21_BYPASS( 36, 0, 2, srl, 0x0001ffff, 0xffff8000, 15 );
-  TEST_RR_SRC21_BYPASS( 37, 1, 0, srl, 0x7fffc000, 0xffff8000, 1  );
-  TEST_RR_SRC21_BYPASS( 38, 1, 1, srl, 0x01ffff00, 0xffff8000, 7 );
-  TEST_RR_SRC21_BYPASS( 39, 2, 0, srl, 0x0001ffff, 0xffff8000, 15 );
-
-  TEST_RR_ZEROSRC1( 40, srl, 0, 15 );
-  TEST_RR_ZEROSRC2( 41, srl, 32, 32 );
-  TEST_RR_ZEROSRC12( 42, srl, 0 );
-  TEST_RR_ZERODEST( 43, srl, 1024, 2048 );
-
-  TEST_PASSFAIL
-
-RVTEST_CODE_END
-
-  .data
-RVTEST_DATA_BEGIN
-
-  TEST_DATA
+#undef RVTEST_RV64U
+#define RVTEST_RV64U RVTEST_RV32U
 
-RVTEST_DATA_END
+#include "../rv64ui/srl.S"
index c2797cdee52f38748f6011d6c929bca7d55daff8..ef0203b3c7efc866d3eb9445c9023c285e42ac24 100644 (file)
@@ -1,69 +1,7 @@
 # See LICENSE for license details.
 
-#*****************************************************************************
-# srli.S
-#-----------------------------------------------------------------------------
-#
-# Test srli instruction.
-#
-
 #include "riscv_test.h"
-#include "test_macros.h"
-
-RVTEST_RV32U
-RVTEST_CODE_BEGIN
-
-  #-------------------------------------------------------------
-  # Arithmetic tests
-  #-------------------------------------------------------------
-
-  TEST_IMM_OP( 2,  srli, 0xffff8000, 0xffff8000, 0  );
-  TEST_IMM_OP( 3,  srli, 0x7fffc000, 0xffff8000, 1  );
-  TEST_IMM_OP( 4,  srli, 0x01ffff00, 0xffff8000, 7  );
-  TEST_IMM_OP( 5,  srli, 0x0003fffe, 0xffff8000, 14 );
-  TEST_IMM_OP( 6,  srli, 0x0001ffff, 0xffff8001, 15 );
-
-  TEST_IMM_OP( 7,  srli, 0xffffffff, 0xffffffff, 0  );
-  TEST_IMM_OP( 8,  srli, 0x7fffffff, 0xffffffff, 1  );
-  TEST_IMM_OP( 9,  srli, 0x01ffffff, 0xffffffff, 7  );
-  TEST_IMM_OP( 10, srli, 0x0003ffff, 0xffffffff, 14 );
-  TEST_IMM_OP( 11, srli, 0x00000001, 0xffffffff, 31 );
-
-  TEST_IMM_OP( 12, srli, 0x21212121, 0x21212121, 0  );
-  TEST_IMM_OP( 13, srli, 0x10909090, 0x21212121, 1  );
-  TEST_IMM_OP( 14, srli, 0x00424242, 0x21212121, 7  );
-  TEST_IMM_OP( 15, srli, 0x00008484, 0x21212121, 14 );
-  TEST_IMM_OP( 16, srli, 0x00000000, 0x21212121, 31 );
-
-  #-------------------------------------------------------------
-  # Source/Destination tests
-  #-------------------------------------------------------------
-
-  TEST_IMM_SRC1_EQ_DEST( 21, srli, 0x7fffc000, 0xffff8000, 1  );
-
-  #-------------------------------------------------------------
-  # Bypassing tests
-  #-------------------------------------------------------------
-
-  TEST_IMM_DEST_BYPASS( 22, 0, srl, 0x7fffc000, 0xffff8000, 1  );
-  TEST_IMM_DEST_BYPASS( 23, 1, srl, 0x0003fffe, 0xffff8000, 14 );
-  TEST_IMM_DEST_BYPASS( 24, 2, srl, 0x0001ffff, 0xffff8000, 15 );
-  
-  TEST_IMM_SRC1_BYPASS( 25, 0, srl, 0x7fffc000, 0xffff8000, 1  );
-  TEST_IMM_SRC1_BYPASS( 26, 1, srl, 0x0003fffe, 0xffff8000, 14 );
-  TEST_IMM_SRC1_BYPASS( 27, 2, srl, 0x0001ffff, 0xffff8000, 15 );
-  
-
-  TEST_IMM_ZEROSRC1( 28, srli, 0, 31 );
-  TEST_IMM_ZERODEST( 29, srli, 33, 20 );
-
-  TEST_PASSFAIL
-
-RVTEST_CODE_END
-
-  .data
-RVTEST_DATA_BEGIN
-
-  TEST_DATA
+#undef RVTEST_RV64U
+#define RVTEST_RV64U RVTEST_RV32U
 
-RVTEST_DATA_END
+#include "../rv64ui/srli.S"
index ad56e3e938376076cc02af16c5fda189a0d234de..330f4781a003f1a2cdad22ed93efacd6d7ccd169 100644 (file)
@@ -1,83 +1,7 @@
 # See LICENSE for license details.
 
-#*****************************************************************************
-# sub.S
-#-----------------------------------------------------------------------------
-#
-# Test sub instruction.
-#
-
 #include "riscv_test.h"
-#include "test_macros.h"
-
-RVTEST_RV32U
-RVTEST_CODE_BEGIN
-
-  #-------------------------------------------------------------
-  # Arithmetic tests
-  #-------------------------------------------------------------
-
-  TEST_RR_OP( 2,  sub, 0x00000000, 0x00000000, 0x00000000 );
-  TEST_RR_OP( 3,  sub, 0x00000000, 0x00000001, 0x00000001 );
-  TEST_RR_OP( 4,  sub, 0xfffffffc, 0x00000003, 0x00000007 );
-
-  TEST_RR_OP( 5,  sub, 0x00008000, 0x00000000, 0xffff8000 );
-  TEST_RR_OP( 6,  sub, 0x80000000, 0x80000000, 0x00000000 );
-  TEST_RR_OP( 7,  sub, 0x80008000, 0x80000000, 0xffff8000 );
-
-  TEST_RR_OP( 8,  sub, 0xffff8001, 0x00000000, 0x00007fff );
-  TEST_RR_OP( 9,  sub, 0x7fffffff, 0x7fffffff, 0x00000000 );
-  TEST_RR_OP( 10, sub, 0x7fff8000, 0x7fffffff, 0x00007fff );
-
-  TEST_RR_OP( 11, sub, 0x7fff8001, 0x80000000, 0x00007fff );
-  TEST_RR_OP( 12, sub, 0x80007fff, 0x7fffffff, 0xffff8000 );
-
-  TEST_RR_OP( 13, sub, 0x00000001, 0x00000000, 0xffffffff );
-  TEST_RR_OP( 14, sub, 0xfffffffe, 0xffffffff, 0x00000001 );
-  TEST_RR_OP( 15, sub, 0x00000000, 0xffffffff, 0xffffffff );
-
-  #-------------------------------------------------------------
-  # Source/Destination tests
-  #-------------------------------------------------------------
-
-  TEST_RR_SRC1_EQ_DEST( 16, sub, 2, 13, 11 );
-  TEST_RR_SRC2_EQ_DEST( 17, sub, 3, 14, 11 );
-  TEST_RR_SRC12_EQ_DEST( 18, sub, 0, 13 );
-
-  #-------------------------------------------------------------
-  # Bypassing tests
-  #-------------------------------------------------------------
-
-  TEST_RR_DEST_BYPASS( 19, 0, sub, 2, 13, 11 );
-  TEST_RR_DEST_BYPASS( 20, 1, sub, 3, 14, 11 );
-  TEST_RR_DEST_BYPASS( 21, 2, sub, 4, 15, 11 );
-
-  TEST_RR_SRC12_BYPASS( 22, 0, 0, sub, 2, 13, 11 );
-  TEST_RR_SRC12_BYPASS( 23, 0, 1, sub, 3, 14, 11 );
-  TEST_RR_SRC12_BYPASS( 24, 0, 2, sub, 4, 15, 11 );
-  TEST_RR_SRC12_BYPASS( 25, 1, 0, sub, 2, 13, 11 );
-  TEST_RR_SRC12_BYPASS( 26, 1, 1, sub, 3, 14, 11 );
-  TEST_RR_SRC12_BYPASS( 27, 2, 0, sub, 4, 15, 11 );
-
-  TEST_RR_SRC21_BYPASS( 28, 0, 0, sub, 2, 13, 11 );
-  TEST_RR_SRC21_BYPASS( 29, 0, 1, sub, 3, 14, 11 );
-  TEST_RR_SRC21_BYPASS( 30, 0, 2, sub, 4, 15, 11 );
-  TEST_RR_SRC21_BYPASS( 31, 1, 0, sub, 2, 13, 11 );
-  TEST_RR_SRC21_BYPASS( 32, 1, 1, sub, 3, 14, 11 );
-  TEST_RR_SRC21_BYPASS( 33, 2, 0, sub, 4, 15, 11 );
-
-  TEST_RR_ZEROSRC1( 34, sub, 15, -15 );
-  TEST_RR_ZEROSRC2( 35, sub, 32, 32 );
-  TEST_RR_ZEROSRC12( 36, sub, 0 );
-  TEST_RR_ZERODEST( 37, sub, 16, 30 );
-
-  TEST_PASSFAIL
-
-RVTEST_CODE_END
-
-  .data
-RVTEST_DATA_BEGIN
-
-  TEST_DATA
+#undef RVTEST_RV64U
+#define RVTEST_RV64U RVTEST_RV32U
 
-RVTEST_DATA_END
+#include "../rv64ui/sub.S"
index fbf76cc260dbbaad4cdbb413a663e91b63a91d70..30981330472cb3385371b56cc810b3d73f031687 100644 (file)
@@ -1,92 +1,7 @@
 # See LICENSE for license details.
 
-#*****************************************************************************
-# sw.S
-#-----------------------------------------------------------------------------
-#
-# Test sw instruction.
-#
-
 #include "riscv_test.h"
-#include "test_macros.h"
-
-RVTEST_RV32U
-RVTEST_CODE_BEGIN
-
-  #-------------------------------------------------------------
-  # Basic tests
-  #-------------------------------------------------------------
-
-  TEST_ST_OP( 2, lw, sw, 0x00aa00aa, 0,  tdat );
-  TEST_ST_OP( 3, lw, sw, 0xaa00aa00, 4,  tdat );
-  TEST_ST_OP( 4, lw, sw, 0x0aa00aa0, 8,  tdat );
-  TEST_ST_OP( 5, lw, sw, 0xa00aa00a, 12, tdat );
-
-  # Test with negative offset
-
-  TEST_ST_OP( 6, lw, sw, 0x00aa00aa, -12, tdat8 );
-  TEST_ST_OP( 7, lw, sw, 0xaa00aa00, -8,  tdat8 );
-  TEST_ST_OP( 8, lw, sw, 0x0aa00aa0, -4,  tdat8 );
-  TEST_ST_OP( 9, lw, sw, 0xa00aa00a, 0,   tdat8 );
-
-  # Test with a negative base
-
-  TEST_CASE( 10, x3, 0x12345678, \
-    la  x1, tdat9; \
-    li  x2, 0x12345678; \
-    addi x4, x1, -32; \
-    sw x2, 32(x4); \
-    lw x3, 0(x1); \
-  )
-
-  # Test with unaligned base
-
-  TEST_CASE( 11, x3, 0x58213098, \
-    la  x1, tdat9; \
-    li  x2, 0x58213098; \
-    addi x1, x1, -3; \
-    sw x2, 7(x1); \
-    la  x4, tdat10; \
-    lw x3, 0(x4); \
-  )
-
-  #-------------------------------------------------------------
-  # Bypassing tests
-  #-------------------------------------------------------------
-
-  TEST_ST_SRC12_BYPASS( 12, 0, 0, lw, sw, 0xaabbccdd, 0,  tdat );
-  TEST_ST_SRC12_BYPASS( 13, 0, 1, lw, sw, 0xdaabbccd, 4,  tdat );
-  TEST_ST_SRC12_BYPASS( 14, 0, 2, lw, sw, 0xddaabbcc, 8,  tdat );
-  TEST_ST_SRC12_BYPASS( 15, 1, 0, lw, sw, 0xcddaabbc, 12, tdat );
-  TEST_ST_SRC12_BYPASS( 16, 1, 1, lw, sw, 0xccddaabb, 16, tdat );
-  TEST_ST_SRC12_BYPASS( 17, 2, 0, lw, sw, 0xbccddaab, 20, tdat );
-
-  TEST_ST_SRC21_BYPASS( 18, 0, 0, lw, sw, 0x00112233, 0,  tdat );
-  TEST_ST_SRC21_BYPASS( 19, 0, 1, lw, sw, 0x30011223, 4,  tdat );
-  TEST_ST_SRC21_BYPASS( 20, 0, 2, lw, sw, 0x33001122, 8,  tdat );
-  TEST_ST_SRC21_BYPASS( 21, 1, 0, lw, sw, 0x23300112, 12, tdat );
-  TEST_ST_SRC21_BYPASS( 22, 1, 1, lw, sw, 0x22330011, 16, tdat );
-  TEST_ST_SRC21_BYPASS( 23, 2, 0, lw, sw, 0x12233001, 20, tdat );
-
-  TEST_PASSFAIL
-
-RVTEST_CODE_END
-
-  .data
-RVTEST_DATA_BEGIN
-
-  TEST_DATA
-
-tdat:
-tdat1:  .word 0xdeadbeef
-tdat2:  .word 0xdeadbeef
-tdat3:  .word 0xdeadbeef
-tdat4:  .word 0xdeadbeef
-tdat5:  .word 0xdeadbeef
-tdat6:  .word 0xdeadbeef
-tdat7:  .word 0xdeadbeef
-tdat8:  .word 0xdeadbeef
-tdat9:  .word 0xdeadbeef
-tdat10: .word 0xdeadbeef
+#undef RVTEST_RV64U
+#define RVTEST_RV64U RVTEST_RV32U
 
-RVTEST_DATA_END
+#include "../rv64ui/sw.S"
index 72875fef12dd2dccf519122cc7d6985f4422d0b2..a9c1e41e9405854ad68801652fdbab29f2ab5451 100644 (file)
@@ -1,69 +1,7 @@
 # See LICENSE for license details.
 
-#*****************************************************************************
-# xor.S
-#-----------------------------------------------------------------------------
-#
-# Test xor instruction.
-#
-
 #include "riscv_test.h"
-#include "test_macros.h"
-
-RVTEST_RV32U
-RVTEST_CODE_BEGIN
-
-  #-------------------------------------------------------------
-  # Logical tests
-  #-------------------------------------------------------------
-
-  TEST_RR_OP( 2, xor, 0xf00ff00f, 0xff00ff00, 0x0f0f0f0f );
-  TEST_RR_OP( 3, xor, 0xff00ff00, 0x0ff00ff0, 0xf0f0f0f0 );
-  TEST_RR_OP( 4, xor, 0x0ff00ff0, 0x00ff00ff, 0x0f0f0f0f );
-  TEST_RR_OP( 5, xor, 0x00ff00ff, 0xf00ff00f, 0xf0f0f0f0 );
-
-  #-------------------------------------------------------------
-  # Source/Destination tests
-  #-------------------------------------------------------------
-
-  TEST_RR_SRC1_EQ_DEST( 6, xor, 0xf00ff00f, 0xff00ff00, 0x0f0f0f0f );
-  TEST_RR_SRC2_EQ_DEST( 7, xor, 0xf00ff00f, 0xff00ff00, 0x0f0f0f0f );
-  TEST_RR_SRC12_EQ_DEST( 8, xor, 0x00000000, 0xff00ff00 );
-
-  #-------------------------------------------------------------
-  # Bypassing tests
-  #-------------------------------------------------------------
-
-  TEST_RR_DEST_BYPASS( 9,  0, xor, 0xf00ff00f, 0xff00ff00, 0x0f0f0f0f );
-  TEST_RR_DEST_BYPASS( 10, 1, xor, 0xff00ff00, 0x0ff00ff0, 0xf0f0f0f0 );
-  TEST_RR_DEST_BYPASS( 11, 2, xor, 0x0ff00ff0, 0x00ff00ff, 0x0f0f0f0f );
-
-  TEST_RR_SRC12_BYPASS( 12, 0, 0, xor, 0xf00ff00f, 0xff00ff00, 0x0f0f0f0f );
-  TEST_RR_SRC12_BYPASS( 13, 0, 1, xor, 0xff00ff00, 0x0ff00ff0, 0xf0f0f0f0 );
-  TEST_RR_SRC12_BYPASS( 14, 0, 2, xor, 0x0ff00ff0, 0x00ff00ff, 0x0f0f0f0f );
-  TEST_RR_SRC12_BYPASS( 15, 1, 0, xor, 0xf00ff00f, 0xff00ff00, 0x0f0f0f0f );
-  TEST_RR_SRC12_BYPASS( 16, 1, 1, xor, 0xff00ff00, 0x0ff00ff0, 0xf0f0f0f0 );
-  TEST_RR_SRC12_BYPASS( 17, 2, 0, xor, 0x0ff00ff0, 0x00ff00ff, 0x0f0f0f0f );
-
-  TEST_RR_SRC21_BYPASS( 18, 0, 0, xor, 0xf00ff00f, 0xff00ff00, 0x0f0f0f0f );
-  TEST_RR_SRC21_BYPASS( 19, 0, 1, xor, 0xff00ff00, 0x0ff00ff0, 0xf0f0f0f0 );
-  TEST_RR_SRC21_BYPASS( 20, 0, 2, xor, 0x0ff00ff0, 0x00ff00ff, 0x0f0f0f0f );
-  TEST_RR_SRC21_BYPASS( 21, 1, 0, xor, 0xf00ff00f, 0xff00ff00, 0x0f0f0f0f );
-  TEST_RR_SRC21_BYPASS( 22, 1, 1, xor, 0xff00ff00, 0x0ff00ff0, 0xf0f0f0f0 );
-  TEST_RR_SRC21_BYPASS( 23, 2, 0, xor, 0x0ff00ff0, 0x00ff00ff, 0x0f0f0f0f );
-
-  TEST_RR_ZEROSRC1( 24, xor, 0xff00ff00, 0xff00ff00 );
-  TEST_RR_ZEROSRC2( 25, xor, 0x00ff00ff, 0x00ff00ff );
-  TEST_RR_ZEROSRC12( 26, xor, 0 );
-  TEST_RR_ZERODEST( 27, xor, 0x11111111, 0x22222222 );
-
-  TEST_PASSFAIL
-
-RVTEST_CODE_END
-
-  .data
-RVTEST_DATA_BEGIN
-
-  TEST_DATA
+#undef RVTEST_RV64U
+#define RVTEST_RV64U RVTEST_RV32U
 
-RVTEST_DATA_END
+#include "../rv64ui/xor.S"
index 7f2207c8b2cce2d812e6e3d2d4329ce279cf3697..9e7115265b9a1bc1d025e56e29441d7aa7029251 100644 (file)
@@ -1,55 +1,7 @@
 # See LICENSE for license details.
 
-#*****************************************************************************
-# xori.S
-#-----------------------------------------------------------------------------
-#
-# Test xori instruction.
-#
-
 #include "riscv_test.h"
-#include "test_macros.h"
-
-RVTEST_RV32U
-RVTEST_CODE_BEGIN
-
-  #-------------------------------------------------------------
-  # Logical tests
-  #-------------------------------------------------------------
-
-  TEST_IMM_OP( 2, xori, 0xff00f00f, 0x00ff0f00, 0xf0f );
-  TEST_IMM_OP( 3, xori, 0x0ff00f00, 0x0ff00ff0, 0x0f0 );
-  TEST_IMM_OP( 4, xori, 0x00ff0ff0, 0x00ff08ff, 0x70f );
-  TEST_IMM_OP( 5, xori, 0xf00ff0ff, 0xf00ff00f, 0x0f0 );
-
-  #-------------------------------------------------------------
-  # Source/Destination tests
-  #-------------------------------------------------------------
-
-  TEST_IMM_SRC1_EQ_DEST( 6, xori, 0xff00f00f, 0xff00f700, 0x70f );
-
-   #-------------------------------------------------------------
-  # Bypassing tests
-  #-------------------------------------------------------------
-
-  TEST_IMM_DEST_BYPASS( 7,  0, xori, 0x0ff00f00, 0x0ff00ff0, 0x0f0 );
-  TEST_IMM_DEST_BYPASS( 8,  1, xori, 0x00ff0ff0, 0x00ff08ff, 0x70f );
-  TEST_IMM_DEST_BYPASS( 9,  2, xori, 0xf00ff0ff, 0xf00ff00f, 0x0f0 );
-
-  TEST_IMM_SRC1_BYPASS( 10, 0, xori, 0x0ff00f00, 0x0ff00ff0, 0x0f0 );
-  TEST_IMM_SRC1_BYPASS( 11, 1, xori, 0x00ff0ff0, 0x00ff0fff, 0x00f );
-  TEST_IMM_SRC1_BYPASS( 12, 2, xori, 0xf00ff0ff, 0xf00ff00f, 0x0f0 );
-
-  TEST_IMM_ZEROSRC1( 13, xori, 0x0f0, 0x0f0 );
-  TEST_IMM_ZERODEST( 14, xori, 0x00ff00ff, 0x70f );
-
-  TEST_PASSFAIL
-
-RVTEST_CODE_END
-
-  .data
-RVTEST_DATA_BEGIN
-
-  TEST_DATA
+#undef RVTEST_RV64U
+#define RVTEST_RV64U RVTEST_RV32U
 
-RVTEST_DATA_END
+#include "../rv64ui/xori.S"
index b6c2fb382e98897af0a0c27d2c65c0a490e3529a..31037d16b06637afe4e7a863366825008ead759e 100644 (file)
@@ -41,7 +41,13 @@ RVTEST_CODE_BEGIN
   TEST_RR_OP( 18, sll, 0x0000000042424242, 0x0000000021212121, 0xffffffffffffffc1 );
   TEST_RR_OP( 19, sll, 0x0000001090909080, 0x0000000021212121, 0xffffffffffffffc7 );
   TEST_RR_OP( 20, sll, 0x0000084848484000, 0x0000000021212121, 0xffffffffffffffce );
+
+#ifdef __riscv64
   TEST_RR_OP( 21, sll, 0x8000000000000000, 0x0000000021212121, 0xffffffffffffffff );
+  TEST_RR_OP( 50, sll, 0x8000000000000000, 0x0000000000000001, 63 );
+  TEST_RR_OP( 51, sll, 0xffffff8000000000, 0xffffffffffffffff, 39 );
+  TEST_RR_OP( 52, sll, 0x0909080000000000, 0x0000000021212121, 43 );
+#endif
 
   #-------------------------------------------------------------
   # Source/Destination tests
index fe1be592485f15ac2a019a6befde8106136a0398..dd02d49cc2d67c366fa260946090670fb6bf176a 100644 (file)
@@ -35,6 +35,12 @@ RVTEST_CODE_BEGIN
   TEST_IMM_OP( 15, slli, 0x0000084848484000, 0x0000000021212121, 14 );
   TEST_IMM_OP( 16, slli, 0x1090909080000000, 0x0000000021212121, 31 );
 
+#ifdef __riscv64
+  TEST_RR_OP( 50, sll, 0x8000000000000000, 0x0000000000000001, 63 );
+  TEST_RR_OP( 51, sll, 0xffffff8000000000, 0xffffffffffffffff, 39 );
+  TEST_RR_OP( 52, sll, 0x0909080000000000, 0x0000000021212121, 43 );
+#endif
+
   #-------------------------------------------------------------
   # Source/Destination tests
   #-------------------------------------------------------------
@@ -53,8 +59,8 @@ RVTEST_CODE_BEGIN
   TEST_IMM_SRC1_BYPASS( 22, 1, slli, 0x0000000000004000, 0x0000000000000001, 14 );
   TEST_IMM_SRC1_BYPASS( 23, 2, slli, 0x0000000080000000, 0x0000000000000001, 31 );
 
-  TEST_IMM_ZEROSRC1( 24, slli, 0, 32 );
-  TEST_IMM_ZERODEST( 25, slli, 33, 50 );
+  TEST_IMM_ZEROSRC1( 24, slli, 0, 31 );
+  TEST_IMM_ZERODEST( 25, slli, 33, 20 );
 
   TEST_PASSFAIL
 
index dff234873dae88bef9e4007be106919d3964d911..8d052130d4ae5d93eee216c6a84073409715a5e2 100644 (file)
@@ -53,8 +53,8 @@ RVTEST_CODE_BEGIN
   TEST_IMM_SRC1_BYPASS( 22, 1, srai, 0xfffffffffffe0000, 0xffffffff80000000, 14 );
   TEST_IMM_SRC1_BYPASS( 23, 2, srai, 0xffffffffffffffff, 0xffffffff80000001, 31 );
 
-  TEST_IMM_ZEROSRC1( 24, srai, 0, 32 );
-  TEST_IMM_ZERODEST( 25, srai, 33, 50 );
+  TEST_IMM_ZEROSRC1( 24, srai, 0, 4 );
+  TEST_IMM_ZERODEST( 25, srai, 33, 10 );
 
   TEST_PASSFAIL
 
index 876c303a6e3311cfe303d77bac897ed382fdd258..ad5c2e5e5b28d3aac23c92d9b1836f31e9f96e01 100644 (file)
@@ -17,23 +17,26 @@ RVTEST_CODE_BEGIN
   # Arithmetic tests
   #-------------------------------------------------------------
 
-  TEST_RR_OP( 2,  srl, 0xffffffff80000000, 0xffffffff80000000, 0  );
-  TEST_RR_OP( 3,  srl, 0x7fffffffc0000000, 0xffffffff80000000, 1  );
-  TEST_RR_OP( 4,  srl, 0x01ffffffff000000, 0xffffffff80000000, 7  );
-  TEST_RR_OP( 5,  srl, 0x0003fffffffe0000, 0xffffffff80000000, 14 );
-  TEST_RR_OP( 6,  srl, 0x00000001ffffffff, 0xffffffff80000001, 31 );
-
-  TEST_RR_OP( 7,  srl, 0xffffffffffffffff, 0xffffffffffffffff, 0  );
-  TEST_RR_OP( 8,  srl, 0x7fffffffffffffff, 0xffffffffffffffff, 1  );
-  TEST_RR_OP( 9,  srl, 0x01ffffffffffffff, 0xffffffffffffffff, 7  );
-  TEST_RR_OP( 10, srl, 0x0003ffffffffffff, 0xffffffffffffffff, 14 );
-  TEST_RR_OP( 11, srl, 0x00000001ffffffff, 0xffffffffffffffff, 31 );
-
-  TEST_RR_OP( 12, srl, 0x0000000021212121, 0x0000000021212121, 0  );
-  TEST_RR_OP( 13, srl, 0x0000000010909090, 0x0000000021212121, 1  );
-  TEST_RR_OP( 14, srl, 0x0000000000424242, 0x0000000021212121, 7  );
-  TEST_RR_OP( 15, srl, 0x0000000000008484, 0x0000000021212121, 14 );
-  TEST_RR_OP( 16, srl, 0x0000000000000000, 0x0000000021212121, 31 );
+#define TEST_SRL(n, v, a) \
+  TEST_RR_OP(n, srl, ((v) & ((1 << (_RISCV_SZLONG-1) << 1) - 1)) >> (a), v, a)
+
+  TEST_SRL( 2,  0xffffffff80000000, 0  );
+  TEST_SRL( 3,  0xffffffff80000000, 1  );
+  TEST_SRL( 4,  0xffffffff80000000, 7  );
+  TEST_SRL( 5,  0xffffffff80000000, 14 );
+  TEST_SRL( 6,  0xffffffff80000001, 31 );
+
+  TEST_SRL( 7,  0xffffffffffffffff, 0  );
+  TEST_SRL( 8,  0xffffffffffffffff, 1  );
+  TEST_SRL( 9,  0xffffffffffffffff, 7  );
+  TEST_SRL( 10, 0xffffffffffffffff, 14 );
+  TEST_SRL( 11, 0xffffffffffffffff, 31 );
+
+  TEST_SRL( 12, 0x0000000021212121, 0  );
+  TEST_SRL( 13, 0x0000000021212121, 1  );
+  TEST_SRL( 14, 0x0000000021212121, 7  );
+  TEST_SRL( 15, 0x0000000021212121, 14 );
+  TEST_SRL( 16, 0x0000000021212121, 31 );
 
   # Verify that shifts only use bottom five bits
 
@@ -47,31 +50,31 @@ RVTEST_CODE_BEGIN
   # Source/Destination tests
   #-------------------------------------------------------------
 
-  TEST_RR_SRC1_EQ_DEST( 22, srl, 0x01ffffffff000000, 0xffffffff80000000, 7  );
-  TEST_RR_SRC2_EQ_DEST( 23, srl, 0x0003fffffffe0000, 0xffffffff80000000, 14 );
+  TEST_RR_SRC1_EQ_DEST( 22, srl, 0x01000000, 0x80000000, 7  );
+  TEST_RR_SRC2_EQ_DEST( 23, srl, 0x00020000, 0x80000000, 14 );
   TEST_RR_SRC12_EQ_DEST( 24, srl, 0, 7 );
 
   #-------------------------------------------------------------
   # Bypassing tests
   #-------------------------------------------------------------
 
-  TEST_RR_DEST_BYPASS( 25, 0, srl, 0x01ffffffff000000, 0xffffffff80000000, 7  );
-  TEST_RR_DEST_BYPASS( 26, 1, srl, 0x0003fffffffe0000, 0xffffffff80000000, 14 );
-  TEST_RR_DEST_BYPASS( 27, 2, srl, 0x00000001ffffffff, 0xffffffff80000000, 31 );
-
-  TEST_RR_SRC12_BYPASS( 28, 0, 0, srl, 0x01ffffffff000000, 0xffffffff80000000, 7  );
-  TEST_RR_SRC12_BYPASS( 29, 0, 1, srl, 0x0003fffffffe0000, 0xffffffff80000000, 14 );
-  TEST_RR_SRC12_BYPASS( 30, 0, 2, srl, 0x00000001ffffffff, 0xffffffff80000000, 31 );
-  TEST_RR_SRC12_BYPASS( 31, 1, 0, srl, 0x01ffffffff000000, 0xffffffff80000000, 7  );
-  TEST_RR_SRC12_BYPASS( 32, 1, 1, srl, 0x0003fffffffe0000, 0xffffffff80000000, 14 );
-  TEST_RR_SRC12_BYPASS( 33, 2, 0, srl, 0x00000001ffffffff, 0xffffffff80000000, 31 );
-
-  TEST_RR_SRC21_BYPASS( 34, 0, 0, srl, 0x01ffffffff000000, 0xffffffff80000000, 7  );
-  TEST_RR_SRC21_BYPASS( 35, 0, 1, srl, 0x0003fffffffe0000, 0xffffffff80000000, 14 );
-  TEST_RR_SRC21_BYPASS( 36, 0, 2, srl, 0x00000001ffffffff, 0xffffffff80000000, 31 );
-  TEST_RR_SRC21_BYPASS( 37, 1, 0, srl, 0x01ffffffff000000, 0xffffffff80000000, 7  );
-  TEST_RR_SRC21_BYPASS( 38, 1, 1, srl, 0x0003fffffffe0000, 0xffffffff80000000, 14 );
-  TEST_RR_SRC21_BYPASS( 39, 2, 0, srl, 0x00000001ffffffff, 0xffffffff80000000, 31 );
+  TEST_RR_DEST_BYPASS( 25, 0, srl, 0x01000000, 0x80000000, 7  );
+  TEST_RR_DEST_BYPASS( 26, 1, srl, 0x00020000, 0x80000000, 14 );
+  TEST_RR_DEST_BYPASS( 27, 2, srl, 0x00000001, 0x80000000, 31 );
+
+  TEST_RR_SRC12_BYPASS( 28, 0, 0, srl, 0x01000000, 0x80000000, 7  );
+  TEST_RR_SRC12_BYPASS( 29, 0, 1, srl, 0x00020000, 0x80000000, 14 );
+  TEST_RR_SRC12_BYPASS( 30, 0, 2, srl, 0x00000001, 0x80000000, 31 );
+  TEST_RR_SRC12_BYPASS( 31, 1, 0, srl, 0x01000000, 0x80000000, 7  );
+  TEST_RR_SRC12_BYPASS( 32, 1, 1, srl, 0x00020000, 0x80000000, 14 );
+  TEST_RR_SRC12_BYPASS( 33, 2, 0, srl, 0x00000001, 0x80000000, 31 );
+
+  TEST_RR_SRC21_BYPASS( 34, 0, 0, srl, 0x01000000, 0x80000000, 7  );
+  TEST_RR_SRC21_BYPASS( 35, 0, 1, srl, 0x00020000, 0x80000000, 14 );
+  TEST_RR_SRC21_BYPASS( 36, 0, 2, srl, 0x00000001, 0x80000000, 31 );
+  TEST_RR_SRC21_BYPASS( 37, 1, 0, srl, 0x01000000, 0x80000000, 7  );
+  TEST_RR_SRC21_BYPASS( 38, 1, 1, srl, 0x00020000, 0x80000000, 14 );
+  TEST_RR_SRC21_BYPASS( 39, 2, 0, srl, 0x00000001, 0x80000000, 31 );
 
   TEST_RR_ZEROSRC1( 40, srl, 0, 15 );
   TEST_RR_ZEROSRC2( 41, srl, 32, 32 );
index 61e5da5039241b23652006890732a42697290a7f..eae25329f590390a836d04835267070100a9fdc0 100644 (file)
@@ -17,44 +17,47 @@ RVTEST_CODE_BEGIN
   # Arithmetic tests
   #-------------------------------------------------------------
 
-  TEST_IMM_OP( 2,  srli, 0xffffffff80000000, 0xffffffff80000000, 0  );
-  TEST_IMM_OP( 3,  srli, 0x7fffffffc0000000, 0xffffffff80000000, 1  );
-  TEST_IMM_OP( 4,  srli, 0x01ffffffff000000, 0xffffffff80000000, 7  );
-  TEST_IMM_OP( 5,  srli, 0x0003fffffffe0000, 0xffffffff80000000, 14 );
-  TEST_IMM_OP( 6,  srli, 0x00000001ffffffff, 0xffffffff80000001, 31 );
-
-  TEST_IMM_OP( 7,  srli, 0xffffffffffffffff, 0xffffffffffffffff, 0  );
-  TEST_IMM_OP( 8,  srli, 0x7fffffffffffffff, 0xffffffffffffffff, 1  );
-  TEST_IMM_OP( 9,  srli, 0x01ffffffffffffff, 0xffffffffffffffff, 7  );
-  TEST_IMM_OP( 10, srli, 0x0003ffffffffffff, 0xffffffffffffffff, 14 );
-  TEST_IMM_OP( 11, srli, 0x00000001ffffffff, 0xffffffffffffffff, 31 );
-
-  TEST_IMM_OP( 12, srli, 0x0000000021212121, 0x0000000021212121, 0  );
-  TEST_IMM_OP( 13, srli, 0x0000000010909090, 0x0000000021212121, 1  );
-  TEST_IMM_OP( 14, srli, 0x0000000000424242, 0x0000000021212121, 7  );
-  TEST_IMM_OP( 15, srli, 0x0000000000008484, 0x0000000021212121, 14 );
-  TEST_IMM_OP( 16, srli, 0x0000000000000000, 0x0000000021212121, 31 );
+#define TEST_SRL(n, v, a) \
+  TEST_IMM_OP(n, srli, ((v) & ((1 << (_RISCV_SZLONG-1) << 1) - 1)) >> (a), v, a)
+
+  TEST_SRL( 2,  0xffffffff80000000, 0  );
+  TEST_SRL( 3,  0xffffffff80000000, 1  );
+  TEST_SRL( 4,  0xffffffff80000000, 7  );
+  TEST_SRL( 5,  0xffffffff80000000, 14 );
+  TEST_SRL( 6,  0xffffffff80000001, 31 );
+
+  TEST_SRL( 7,  0xffffffffffffffff, 0  );
+  TEST_SRL( 8,  0xffffffffffffffff, 1  );
+  TEST_SRL( 9,  0xffffffffffffffff, 7  );
+  TEST_SRL( 10, 0xffffffffffffffff, 14 );
+  TEST_SRL( 11, 0xffffffffffffffff, 31 );
+
+  TEST_SRL( 12, 0x0000000021212121, 0  );
+  TEST_SRL( 13, 0x0000000021212121, 1  );
+  TEST_SRL( 14, 0x0000000021212121, 7  );
+  TEST_SRL( 15, 0x0000000021212121, 14 );
+  TEST_SRL( 16, 0x0000000021212121, 31 );
 
   #-------------------------------------------------------------
   # Source/Destination tests
   #-------------------------------------------------------------
 
-  TEST_IMM_SRC1_EQ_DEST( 17, srli, 0x01ffffffff000000, 0xffffffff80000000, 7 );
+  TEST_IMM_SRC1_EQ_DEST( 17, srli, 0x01000000, 0x80000000, 7 );
 
   #-------------------------------------------------------------
   # Bypassing tests
   #-------------------------------------------------------------
 
-  TEST_IMM_DEST_BYPASS( 18, 0, srli, 0x01ffffffff000000, 0xffffffff80000000, 7  );
-  TEST_IMM_DEST_BYPASS( 19, 1, srli, 0x0003fffffffe0000, 0xffffffff80000000, 14 );
-  TEST_IMM_DEST_BYPASS( 20, 2, srli, 0x00000001ffffffff, 0xffffffff80000001, 31 );
+  TEST_IMM_DEST_BYPASS( 18, 0, srli, 0x01000000, 0x80000000, 7  );
+  TEST_IMM_DEST_BYPASS( 19, 1, srli, 0x00020000, 0x80000000, 14 );
+  TEST_IMM_DEST_BYPASS( 20, 2, srli, 0x00000001, 0x80000001, 31 );
 
-  TEST_IMM_SRC1_BYPASS( 21, 0, srli, 0x01ffffffff000000, 0xffffffff80000000, 7  );
-  TEST_IMM_SRC1_BYPASS( 22, 1, srli, 0x0003fffffffe0000, 0xffffffff80000000, 14 );
-  TEST_IMM_SRC1_BYPASS( 23, 2, srli, 0x00000001ffffffff, 0xffffffff80000001, 31 );
+  TEST_IMM_SRC1_BYPASS( 21, 0, srli, 0x01000000, 0x80000000, 7  );
+  TEST_IMM_SRC1_BYPASS( 22, 1, srli, 0x00020000, 0x80000000, 14 );
+  TEST_IMM_SRC1_BYPASS( 23, 2, srli, 0x00000001, 0x80000001, 31 );
 
-  TEST_IMM_ZEROSRC1( 24, srli, 0, 32 );
-  TEST_IMM_ZERODEST( 25, srli, 33, 50 );
+  TEST_IMM_ZEROSRC1( 24, srli, 0, 4 );
+  TEST_IMM_ZERODEST( 25, srli, 33, 10 );
 
   TEST_PASSFAIL