aboutsummaryrefslogtreecommitdiff
path: root/riscv/insns
diff options
context:
space:
mode:
authormarcfedorow <mark.fedorov@cloudbear.ru>2021-07-08 23:09:06 +0300
committerGitHub <noreply@github.com>2021-07-08 13:09:06 -0700
commit21f4b59d3ae16ebf14752c2dfd580646f7612152 (patch)
tree17860bc1e1865ed71e34717e8049fea475cac147 /riscv/insns
parentdb6f5795270c922d52041fd016261982687dd145 (diff)
downloadspike-21f4b59d3ae16ebf14752c2dfd580646f7612152.zip
spike-21f4b59d3ae16ebf14752c2dfd580646f7612152.tar.gz
spike-21f4b59d3ae16ebf14752c2dfd580646f7612152.tar.bz2
Fixed range issues on sr<al>[i]32.u insns (see #695) (#740)
Diffstat (limited to 'riscv/insns')
-rw-r--r--riscv/insns/sra32_u.h2
-rw-r--r--riscv/insns/srai32_u.h2
-rw-r--r--riscv/insns/srl32_u.h2
-rw-r--r--riscv/insns/srli32_u.h2
4 files changed, 4 insertions, 4 deletions
diff --git a/riscv/insns/sra32_u.h b/riscv/insns/sra32_u.h
index c0ce87f..ac9f9e5 100644
--- a/riscv/insns/sra32_u.h
+++ b/riscv/insns/sra32_u.h
@@ -1,7 +1,7 @@
require_rv64;
P_X_LOOP(32, 5, {
if(sa > 0)
- pd = ((ps1 >> (sa - 1)) + 1) >> 1;
+ pd = (((uint64_t)(ps1 >> (sa - 1))) + 1) >> 1;
else
pd = ps1;
}) \ No newline at end of file
diff --git a/riscv/insns/srai32_u.h b/riscv/insns/srai32_u.h
index 5c7b06c..5c4330d 100644
--- a/riscv/insns/srai32_u.h
+++ b/riscv/insns/srai32_u.h
@@ -1,7 +1,7 @@
require_rv64;
P_I_LOOP(32, 5, {
if (imm5u > 0)
- pd = ((ps1 >> (imm5u - 1)) + 1) >> 1;
+ pd = (((uint64_t)(ps1 >> (imm5u - 1))) + 1) >> 1;
else
pd = ps1;
}) \ No newline at end of file
diff --git a/riscv/insns/srl32_u.h b/riscv/insns/srl32_u.h
index 3c770d5..00de9a1 100644
--- a/riscv/insns/srl32_u.h
+++ b/riscv/insns/srl32_u.h
@@ -1,7 +1,7 @@
require_rv64;
P_X_ULOOP(32, 5, {
if (sa > 0) {
- pd = ((ps1 >> (sa - 1)) + 1) >> 1;
+ pd = (((uint64_t)(ps1 >> (sa - 1))) + 1) >> 1;
} else {
pd = ps1;
}
diff --git a/riscv/insns/srli32_u.h b/riscv/insns/srli32_u.h
index 8aa9c1b..61ddd97 100644
--- a/riscv/insns/srli32_u.h
+++ b/riscv/insns/srli32_u.h
@@ -1,7 +1,7 @@
require_rv64;
P_I_ULOOP(32, 5, {
if (imm5u > 0) {
- pd = ((ps1 >> (imm5u - 1)) + 1) >> 1;
+ pd = (((uint64_t)(ps1 >> (imm5u - 1))) + 1) >> 1;
} else {
pd = ps1;
}