bug-binutils
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Bug gas/27436] New: RISC-V inconsistent handling of rv32 shift with cou


From: wilson at gcc dot gnu.org
Subject: [Bug gas/27436] New: RISC-V inconsistent handling of rv32 shift with count > 32
Date: Thu, 18 Feb 2021 20:31:00 +0000

https://sourceware.org/bugzilla/show_bug.cgi?id=27436

            Bug ID: 27436
           Summary: RISC-V inconsistent handling of rv32 shift with count
                    > 32
           Product: binutils
           Version: unspecified
            Status: NEW
          Severity: normal
          Priority: P2
         Component: gas
          Assignee: unassigned at sourceware dot org
          Reporter: wilson at gcc dot gnu.org
  Target Milestone: ---

rohan:2255$ cat tmp.s
slli a0,a0,63
rohan:2256$ riscv32-unknown-elf-as -march=rv64g tmp.s
rohan:2257$ riscv32-unknown-elf-as -march=rv64gc tmp.s
rohan:2258$ riscv32-unknown-elf-as -march=rv32g tmp.s
tmp.s: Assembler messages:
tmp.s:1: Error: Improper shift amount (63)
rohan:2259$ riscv32-unknown-elf-as -march=rv32gc tmp.s
rohan:2260$ riscv32-unknown-elf-objdump -dr -Mno-aliases a.out

a.out:     file format elf32-littleriscv


Disassembly of section .text:

00000000 <.text>:
   0: 157e                 c.slli a0,0x3f
rohan:2261$

An rv32 compressed shift with count greater than 32 is specified as NSE
(non-standard extension).  So it isn't a valid shift, but rather an encoding
that can be used by any vendor for a non-standard extension.  We allow hints to
be used for extensions, but those are encoded as nops.  This is not a nop.  I
think we should disallow this, and force someone who wants to use this encoding
for a NSE to either use .insn or use a local binutils patch.

If we disallow it, the fix is to make C> work the same as >, i.e. use xlen
instead of 64 when testing whether the shift count is valid.

-- 
You are receiving this mail because:
You are on the CC list for the bug.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]