diff --git a/riscv/insns/sra32_u.h b/riscv/insns/sra32_u.h index c0ce87f7..ac9f9e56 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 5c7b06cd..5c4330d7 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 3c770d58..00de9a18 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 8aa9c1bb..61ddd977 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; }