Re: [PATCH v6 1/2] RISC-V: Add SpacemiT vendor extension xsmtvdot

Mark Wielaard <[email protected]>
Newsgroups gmane.comp.gnu.binutils
Message-ID <[email protected]>
Hi,

On Mon, Jun 22, 2026 at 04:48:35PM +0000, Jeffrey Law via Binutils wrote:
> On 5/25/2026 2:20 AM, Mark Zhuang wrote:
> > From: Mark Zhuang <[email protected]>
> >
> > SpacemiT defines Intrinsic Matrix Extension (IME) specification [1].
> > SpacemiT X60 implements version 1.0 of the SpacemiT Vector Dot Product
> > Extension (XsmtVdot v1.0) [2], a subset of the full IME specification.
> >
> > [1] https://github.com/spacemit-com/riscv-ime-extension-spec/releases/download/v1.0/spacemit-ime-asciidoc.pdf
> > [2] https://github.com/spacemit-com/docs-ai/blob/main/en/architecture/ime_extension.md
> > ---
> >   bfd/elfxx-riscv.c                         |  7 ++
> >   gas/NEWS                                  |  3 +
> >   gas/config/tc-riscv.c                     | 81 +++++++++++++++++++++++
> >   gas/doc/c-riscv.texi                      |  8 +++
> >   gas/testsuite/gas/riscv/march-help.l      |  1 +
> >   gas/testsuite/gas/riscv/x-smt-vdot-fail.d |  3 +
> >   gas/testsuite/gas/riscv/x-smt-vdot-fail.l | 73 ++++++++++++++++++++
> >   gas/testsuite/gas/riscv/x-smt-vdot-fail.s | 50 ++++++++++++++
> >   gas/testsuite/gas/riscv/x-smt-vdot.d      | 41 ++++++++++++
> >   gas/testsuite/gas/riscv/x-smt-vdot.s      | 33 +++++++++
> >   include/opcode/riscv-opc.h                | 38 +++++++++++
> >   include/opcode/riscv.h                    |  9 +++
> >   opcodes/riscv-dis.c                       | 33 +++++++++
> >   opcodes/riscv-opc.c                       | 23 +++++++
> >   14 files changed, 403 insertions(+)
> >   create mode 100644 gas/testsuite/gas/riscv/x-smt-vdot-fail.d
> >   create mode 100644 gas/testsuite/gas/riscv/x-smt-vdot-fail.l
> >   create mode 100644 gas/testsuite/gas/riscv/x-smt-vdot-fail.s
> >   create mode 100644 gas/testsuite/gas/riscv/x-smt-vdot.d
> >   create mode 100644 gas/testsuite/gas/riscv/x-smt-vdot.s
> THanks.  I've pushed this to the trunk.

This does break the build with older gcc versions (8.5.0):

../../binutils-gdb/opcodes/riscv-dis.c: In function ‘print_insn_args’:
../../binutils-gdb/opcodes/riscv-dis.c:927:9: error: a label can only be part of a statement and a declaration is not a statement
         unsigned vd = EXTRACT_OPERAND (SPACEMIT_IME_VD, l) * 2;
         ^~~~~~~~
../../binutils-gdb/opcodes/riscv-dis.c:932:9: error: a label can only be part of a statement and a declaration is not a statement
         unsigned vs = EXTRACT_OPERAND (SPACEMIT_IME_VS1, l) * 2;
         ^~~~~~~~

It wants a block after a case label when declaring new variables.

See also
https://builder.sourceware.org/buildbot/#/builders/290/builds/6952/steps/4/logs/stdio

Cheers,

Mark
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.