diff options
Diffstat (limited to 'riscv/insns/shfli.h')
-rw-r--r-- | riscv/insns/shfli.h | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/riscv/insns/shfli.h b/riscv/insns/shfli.h index 964638e..59fbcff 100644 --- a/riscv/insns/shfli.h +++ b/riscv/insns/shfli.h @@ -1,7 +1,7 @@ require_extension('B'); require(SHAMT < (xlen/2)); reg_t x = RS1; -int shamt = SHAMT & (xlen-1); +int shamt = SHAMT & ((xlen-1) >> 1); if (shamt & 16) x = (x & 0xFFFF00000000FFFFLL) | ((x & 0x0000FFFF00000000LL) >> 16) | ((x & 0x00000000FFFF0000LL) << 16); if (shamt & 8) x = (x & 0xFF0000FFFF0000FFLL) | ((x & 0x00FF000000FF0000LL) >> 8) | ((x & 0x0000FF000000FF00LL) << 8); if (shamt & 4) x = (x & 0xF00FF00FF00FF00FLL) | ((x & 0x0F000F000F000F00LL) >> 4) | ((x & 0x00F000F000F000F0LL) << 4); |