diff options
author | marcfedorow <mark.fedorov@cloudbear.ru> | 2021-07-08 23:09:06 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-07-08 13:09:06 -0700 |
commit | 21f4b59d3ae16ebf14752c2dfd580646f7612152 (patch) | |
tree | 17860bc1e1865ed71e34717e8049fea475cac147 /riscv/insns | |
parent | db6f5795270c922d52041fd016261982687dd145 (diff) | |
download | spike-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.h | 2 | ||||
-rw-r--r-- | riscv/insns/srai32_u.h | 2 | ||||
-rw-r--r-- | riscv/insns/srl32_u.h | 2 | ||||
-rw-r--r-- | riscv/insns/srli32_u.h | 2 |
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; } |