aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoakim Andersson <joerchan@gmail.com>2015-04-12 23:50:05 +0200
committerJoakim Andersson <joerchan@gmail.com>2015-04-12 23:50:05 +0200
commit75f9bc244d43359750bf53660b6a7a36ee11e4ed (patch)
tree9b60efb465cf6a9ea0e8b5db01edaa3eafae46d1
parent74fa7fbd09701e8a63b616cd9a8f78c23a43cbb3 (diff)
downloadriscv-tests-75f9bc244d43359750bf53660b6a7a36ee11e4ed.zip
riscv-tests-75f9bc244d43359750bf53660b6a7a36ee11e4ed.tar.gz
riscv-tests-75f9bc244d43359750bf53660b6a7a36ee11e4ed.tar.bz2
Better coverage of mul high instructions
-rw-r--r--isa/rv32ui/mul.S6
-rw-r--r--isa/rv32ui/mulh.S10
-rw-r--r--isa/rv32ui/mulhsu.S9
-rw-r--r--isa/rv32ui/mulhu.S6
4 files changed, 31 insertions, 0 deletions
diff --git a/isa/rv32ui/mul.S b/isa/rv32ui/mul.S
index b3ec446..0368629 100644
--- a/isa/rv32ui/mul.S
+++ b/isa/rv32ui/mul.S
@@ -31,6 +31,12 @@ RVTEST_CODE_BEGIN
TEST_RR_OP(30, mul, 0x0000ff7f, 0xaaaaaaab, 0x0002fe7d );
TEST_RR_OP(31, mul, 0x0000ff7f, 0x0002fe7d, 0xaaaaaaab );
+ TEST_RR_OP(34, mul, 0x00000000, 0xff000000, 0xff000000 );
+
+ TEST_RR_OP(35, mul, 0x00000001, 0xffffffff, 0xffffffff );
+ TEST_RR_OP(36, mul, 0xffffffff, 0xffffffff, 0x00000001 );
+ TEST_RR_OP(37, mul, 0xffffffff, 0x00000001, 0xffffffff );
+
#-------------------------------------------------------------
# Source/Destination tests
#-------------------------------------------------------------
diff --git a/isa/rv32ui/mulh.S b/isa/rv32ui/mulh.S
index 3f96931..3b34b6a 100644
--- a/isa/rv32ui/mulh.S
+++ b/isa/rv32ui/mulh.S
@@ -25,6 +25,16 @@ RVTEST_CODE_BEGIN
TEST_RR_OP( 6, mulh, 0x00000000, 0x80000000, 0x00000000 );
TEST_RR_OP( 7, mulh, 0x00000000, 0x80000000, 0x00000000 );
+ TEST_RR_OP(30, mulh, 0xfffe0101, 0xaaaaaaab, 0x0002fe7d );
+ TEST_RR_OP(31, mulh, 0xfffe0101, 0x0002fe7d, 0xaaaaaaab );
+
+ TEST_RR_OP(32, mulh, 0xfe010000, 0xff000000, 0xff000000 );
+
+ TEST_RR_OP(33, mulh, 0xfffffffe, 0xffffffff, 0xffffffff );
+ TEST_RR_OP(34, mulh, 0xffffffff, 0xffffffff, 0x00000001 );
+ TEST_RR_OP(35, mulh, 0xffffffff, 0x00000001, 0xffffffff );
+
+
#-------------------------------------------------------------
# Source/Destination tests
#-------------------------------------------------------------
diff --git a/isa/rv32ui/mulhsu.S b/isa/rv32ui/mulhsu.S
index 1d3dd3e..93e698c 100644
--- a/isa/rv32ui/mulhsu.S
+++ b/isa/rv32ui/mulhsu.S
@@ -25,6 +25,15 @@ RVTEST_CODE_BEGIN
TEST_RR_OP( 6, mulhsu, 0x00000000, 0x80000000, 0x00000000 );
TEST_RR_OP( 7, mulhsu, 0x80004000, 0x80000000, 0xffff8000 );
+ TEST_RR_OP(30, mulhsu, 0xfffe0101, 0xaaaaaaab, 0x0002fe7d );
+ TEST_RR_OP(31, mulhsu, 0x0001fefe, 0x0002fe7d, 0xaaaaaaab );
+
+ TEST_RR_OP(32, mulhsu, 0x01ff0000, 0xff000000, 0xff000000 );
+
+ TEST_RR_OP(33, mulhsu, 0x00000001, 0xffffffff, 0xffffffff );
+ TEST_RR_OP(34, mulhsu, 0xffffffff, 0xffffffff, 0x00000001 );
+ TEST_RR_OP(35, mulhsu, 0x00000000, 0x00000001, 0xffffffff );
+
#-------------------------------------------------------------
# Source/Destination tests
#-------------------------------------------------------------
diff --git a/isa/rv32ui/mulhu.S b/isa/rv32ui/mulhu.S
index 70301d2..601dcff 100644
--- a/isa/rv32ui/mulhu.S
+++ b/isa/rv32ui/mulhu.S
@@ -28,6 +28,12 @@ RVTEST_CODE_BEGIN
TEST_RR_OP(30, mulhu, 0x0001fefe, 0xaaaaaaab, 0x0002fe7d );
TEST_RR_OP(31, mulhu, 0x0001fefe, 0x0002fe7d, 0xaaaaaaab );
+ TEST_RR_OP(32, mulhu, 0xfe010000, 0xff000000, 0xff000000 );
+
+ TEST_RR_OP(33, mulhu, 0xfffffffe, 0xffffffff, 0xffffffff );
+ TEST_RR_OP(34, mulhu, 0x00000000, 0xffffffff, 0x00000001 );
+ TEST_RR_OP(35, mulhu, 0x00000000, 0x00000001, 0xffffffff );
+
#-------------------------------------------------------------
# Source/Destination tests
#-------------------------------------------------------------