[PATCH v2 1/1] RISC-V: Add `OP_V' to .insn named opcodes
Nelson Chu
nelson.chu@sifive.com
Fri Jul 29 01:51:57 GMT 2022
On Thu, Jul 28, 2022 at 9:29 PM Kito Cheng <kito.cheng@gmail.com> wrote:
>
> LGTM
Thanks for helping reviewing.
> On Thu, Jul 28, 2022 at 9:03 PM Tsukasa OI via Binutils
> <binutils@sourceware.org> wrote:
> >
> > This commit adds `OP_V' (OP-V: vector instruction opcode for now
> > ratified `V' extension) to .insn opcode name list. Although vector
> > instruction encoding is not implemented in `.insn' directive, it will
> > help future implementation of custom vector `.insn'.
Yes, the original discussion was raised by Jim, and here is the link,
https://github.com/riscv/riscv-v-spec/issues/93
As mentioned in the link, we also have similar supports in the riscv github,
https://github.com/riscv-collab/riscv-binutils-gdb/pull/184/files
Using r type here makes sense, since we don't have any instruction
format names for rvv. However, maybe it is worth adding Vd/Vs/Vt
registers for r type when v is enabled, just like what we did for fpr
registers. But I think it is minor, and we can add it in the future
if needed, so this patch is committed by passing the regressions.
Thanks
Nelson
> > gas/ChangeLog:
> >
> > * config/tc-riscv.c (opcode_name_list): Add `OP_V'.
> > * testsuite/gas/riscv/insn.s: Add testcase.
> > * testsuite/gas/riscv/insn.d: Likewise.
> > * testsuite/gas/riscv/insn-dwarf.d: Reflect insn.s update.
> > ---
> > gas/config/tc-riscv.c | 2 +-
> > gas/testsuite/gas/riscv/insn-dwarf.d | 17 +++++++++--------
> > gas/testsuite/gas/riscv/insn.d | 3 ++-
> > gas/testsuite/gas/riscv/insn.s | 2 ++
> > 4 files changed, 14 insertions(+), 10 deletions(-)
> >
> > diff --git a/gas/config/tc-riscv.c b/gas/config/tc-riscv.c
> > index 291d07f6d8f..ecdffbef589 100644
> > --- a/gas/config/tc-riscv.c
> > +++ b/gas/config/tc-riscv.c
> > @@ -749,7 +749,7 @@ static const struct opcode_name_t opcode_name_list[] =
> > {"NMADD", 0x4f},
> > {"NMSUB", 0x4b},
> > {"OP_FP", 0x53},
> > - /*reserved 0x57. */
> > + {"OP_V", 0x57},
> > {"CUSTOM_2", 0x5b},
> > /* 48b 0x5f. */
> >
> > diff --git a/gas/testsuite/gas/riscv/insn-dwarf.d b/gas/testsuite/gas/riscv/insn-dwarf.d
> > index 72d54d47acf..a975b1464c0 100644
> > --- a/gas/testsuite/gas/riscv/insn-dwarf.d
> > +++ b/gas/testsuite/gas/riscv/insn-dwarf.d
> > @@ -60,12 +60,13 @@ insn.s +53 +0x9a.*
> > insn.s +54 +0x9e.*
> > insn.s +55 +0xa2.*
> > insn.s +57 +0xa6.*
> > -insn.s +58 +0xa8.*
> > -insn.s +59 +0xac.*
> > -insn.s +60 +0xb2.*
> > -insn.s +61 +0xba.*
> > -insn.s +62 +0xbc.*
> > -insn.s +63 +0xc0.*
> > -insn.s +64 +0xc6.*
> > -insn.s +- +0xce
> > +insn.s +59 +0xaa.*
> > +insn.s +60 +0xac.*
> > +insn.s +61 +0xb0.*
> > +insn.s +62 +0xb6.*
> > +insn.s +63 +0xbe.*
> > +insn.s +64 +0xc0.*
> > +insn.s +65 +0xc4.*
> > +insn.s +66 +0xca.*
> > +insn.s +- +0xd2
> > #pass
> > diff --git a/gas/testsuite/gas/riscv/insn.d b/gas/testsuite/gas/riscv/insn.d
> > index b5780f42861..d177f313d23 100644
> > --- a/gas/testsuite/gas/riscv/insn.d
> > +++ b/gas/testsuite/gas/riscv/insn.d
> > @@ -1,4 +1,4 @@
> > -#as: -march=rv32ifc
> > +#as: -march=rv32ifdcv
Just a minor thing that we don't need to add d-ext here.
> > #objdump: -dr
> >
> > .*:[ ]+file format .*
> > @@ -69,6 +69,7 @@ Disassembly of section .text:
> > [^:]+:[ ]+00c58533[ ]+add[ ]+a0,a1,a2
> > [^:]+:[ ]+00c58533[ ]+add[ ]+a0,a1,a2
> > [^:]+:[ ]+00c58533[ ]+add[ ]+a0,a1,a2
> > +[^:]+:[ ]+022180d7[ ]+vadd\.vv[ ]+v1,v2,v3
> > [^:]+:[ ]+0001[ ]+nop
> > [^:]+:[ ]+00000013[ ]+nop
> > [^:]+:[ ]+001f 0000 0000[ ].*
> > diff --git a/gas/testsuite/gas/riscv/insn.s b/gas/testsuite/gas/riscv/insn.s
> > index ec41acb30bd..993615eb747 100644
> > --- a/gas/testsuite/gas/riscv/insn.s
> > +++ b/gas/testsuite/gas/riscv/insn.s
> > @@ -54,6 +54,8 @@ target:
> > .insn r 0x33, 0, 0, a0, fa1, fa2
> > .insn r 0x33, 0, 0, fa0, fa1, fa2
> >
> > + .insn r OP_V, 0, 1, x1, x3, x2
> > +
> > .insn 0x0001
> > .insn 0x00000013
> > .insn 0x0000001f
> > --
> > 2.34.1
> >
More information about the Binutils
mailing list