RISC-V: Add support for XCVmem extension in CV32E40P
commit29de80758f0c0a0df4f9da51c10d7b3109a664a4
authorMary Bennett <mary.bennett682@gmail.com>
Thu, 30 May 2024 15:06:59 +0000 (30 16:06 +0100)
committerNelson Chu <nelson@rivosinc.com>
Wed, 5 Jun 2024 10:09:27 +0000 (5 18:09 +0800)
treeef648b2068a3fb7dcc2700c60917708ad6013e19
parentb0f266f38b49c516ab0f95c638720073899446cc
RISC-V: Add support for XCVmem extension in CV32E40P

Spec: https://docs.openhwgroup.org/projects/cv32e40p-user-manual/en/latest/instruction_set_extensions.html

Contributors:
  Mary Bennett <mary.bennett682@gmail.com>
  Nandni Jamnadas <nandni.jamnadas@embecosm.com>
  Pietra Ferreira <pietra.ferreira@embecosm.com>
  Charlie Keaney
  Jessica Mills
  Craig Blackmore <craig.blackmore@embecosm.com>
  Simon Cook <simon.cook@embecosm.com>
  Jeremy Bennett <jeremy.bennett@embecosm.com>
  Helene Chelin <helene.chelin@embecosm.com>

bfd/ChangeLog:

* elfxx-riscv.c (riscv_multi_subset_supports): Add `xcvmem`
instruction class.
(riscv_multi_subset_supports_ext): Likewise.

gas/ChangeLog:
* doc/c-riscv.texi: Note XCVmem as an additional ISA extension
for CORE-V.
* testsuite/gas/riscv/cv-mem-fail-march.d: New test.
* testsuite/gas/riscv/cv-mem-fail-march.l: New test.
* testsuite/gas/riscv/cv-mem-fail-march.s: New test.
* testsuite/gas/riscv/cv-mem-fail-operand-01.d: New test.
* testsuite/gas/riscv/cv-mem-fail-operand-01.l: New test.
* testsuite/gas/riscv/cv-mem-fail-operand-01.s: New test.
* testsuite/gas/riscv/cv-mem-fail-operand-02.d: New test.
* testsuite/gas/riscv/cv-mem-fail-operand-02.l: New test.
* testsuite/gas/riscv/cv-mem-fail-operand-02.s: New test.
* testsuite/gas/riscv/cv-mem-fail-operand-03.d: New test.
* testsuite/gas/riscv/cv-mem-fail-operand-03.l: New test.
* testsuite/gas/riscv/cv-mem-fail-operand-03.s: New test.
* testsuite/gas/riscv/cv-mem-fail-operand-04.d: New test.
* testsuite/gas/riscv/cv-mem-fail-operand-04.l: New test.
* testsuite/gas/riscv/cv-mem-fail-operand-04.s: New test.
* testsuite/gas/riscv/cv-mem-fail-operand-05.d: New test.
* testsuite/gas/riscv/cv-mem-fail-operand-05.l: New test.
* testsuite/gas/riscv/cv-mem-fail-operand-05.s: New test.
* testsuite/gas/riscv/cv-mem-lbpost.d: New test.
* testsuite/gas/riscv/cv-mem-lbpost.s: New test.
* testsuite/gas/riscv/cv-mem-lbrr.d: New test.
* testsuite/gas/riscv/cv-mem-lbrr.s: New test.
* testsuite/gas/riscv/cv-mem-lbrrpost.d: New test.
* testsuite/gas/riscv/cv-mem-lbrrpost.s: New test.
* testsuite/gas/riscv/cv-mem-lbupost.d: New test.
* testsuite/gas/riscv/cv-mem-lbupost.s: New test.
* testsuite/gas/riscv/cv-mem-lburr.d: New test.
* testsuite/gas/riscv/cv-mem-lburr.s: New test.
* testsuite/gas/riscv/cv-mem-lburrpost.d: New test.
* testsuite/gas/riscv/cv-mem-lburrpost.s: New test.
* testsuite/gas/riscv/cv-mem-lhpost.d: New test.
* testsuite/gas/riscv/cv-mem-lhpost.s: New test.
* testsuite/gas/riscv/cv-mem-lhrr.d: New test.
* testsuite/gas/riscv/cv-mem-lhrr.s: New test.
* testsuite/gas/riscv/cv-mem-lhrrpost.d: New test.
* testsuite/gas/riscv/cv-mem-lhrrpost.s: New test.
* testsuite/gas/riscv/cv-mem-lhupost.d: New test.
* testsuite/gas/riscv/cv-mem-lhupost.s: New test.
* testsuite/gas/riscv/cv-mem-lhurr.d: New test.
* testsuite/gas/riscv/cv-mem-lhurr.s: New test.
* testsuite/gas/riscv/cv-mem-lhurrpost.d: New test.
* testsuite/gas/riscv/cv-mem-lhurrpost.s: New test.
* testsuite/gas/riscv/cv-mem-lwpost.d: New test.
* testsuite/gas/riscv/cv-mem-lwpost.s: New test.
* testsuite/gas/riscv/cv-mem-lwrr.d: New test.
* testsuite/gas/riscv/cv-mem-lwrr.s: New test.
* testsuite/gas/riscv/cv-mem-lwrrpost.d: New test.
* testsuite/gas/riscv/cv-mem-lwrrpost.s: New test.
* testsuite/gas/riscv/cv-mem-sbpost.d: New test.
* testsuite/gas/riscv/cv-mem-sbpost.s: New test.
* testsuite/gas/riscv/cv-mem-sbrr.d: New test.
* testsuite/gas/riscv/cv-mem-sbrr.s: New test.
* testsuite/gas/riscv/cv-mem-sbrrpost.d: New test.
* testsuite/gas/riscv/cv-mem-sbrrpost.s: New test.
* testsuite/gas/riscv/cv-mem-shpost.d: New test.
* testsuite/gas/riscv/cv-mem-shpost.s: New test.
* testsuite/gas/riscv/cv-mem-shrr.d: New test.
* testsuite/gas/riscv/cv-mem-shrr.s: New test.
* testsuite/gas/riscv/cv-mem-shrrpost.d: New test.
* testsuite/gas/riscv/cv-mem-shrrpost.s: New test.
* testsuite/gas/riscv/cv-mem-swpost.d: New test.
* testsuite/gas/riscv/cv-mem-swpost.s: New test.
* testsuite/gas/riscv/cv-mem-swrr.d: New test.
* testsuite/gas/riscv/cv-mem-swrr.s: New test.
* testsuite/gas/riscv/cv-mem-swrrpost.d: New test.
* testsuite/gas/riscv/cv-mem-swrrpost.s: New test.
* testsuite/gas/riscv/march-help.l: Add xcvmem string.

include/ChangeLog:

* opcode/riscv-opc.h: Add corresponding MATCH and MASK macros
for XCVmem.
* opcode/riscv.h: Add corresponding EXTRACT and ENCODE macros
for XCVmem.
(enum riscv_insn_class): Add the XCVmem instruction class.

opcodes/ChangeLog:

* riscv-opc.c: Add XCVmem instructions.
72 files changed:
bfd/elfxx-riscv.c
gas/doc/c-riscv.texi
gas/testsuite/gas/riscv/cv-mem-fail-march.d [new file with mode: 0644]
gas/testsuite/gas/riscv/cv-mem-fail-march.l [new file with mode: 0644]
gas/testsuite/gas/riscv/cv-mem-fail-march.s [new file with mode: 0644]
gas/testsuite/gas/riscv/cv-mem-fail-operand-01.d [new file with mode: 0644]
gas/testsuite/gas/riscv/cv-mem-fail-operand-01.l [new file with mode: 0644]
gas/testsuite/gas/riscv/cv-mem-fail-operand-01.s [new file with mode: 0644]
gas/testsuite/gas/riscv/cv-mem-fail-operand-02.d [new file with mode: 0644]
gas/testsuite/gas/riscv/cv-mem-fail-operand-02.l [new file with mode: 0644]
gas/testsuite/gas/riscv/cv-mem-fail-operand-02.s [new file with mode: 0644]
gas/testsuite/gas/riscv/cv-mem-fail-operand-03.d [new file with mode: 0644]
gas/testsuite/gas/riscv/cv-mem-fail-operand-03.l [new file with mode: 0644]
gas/testsuite/gas/riscv/cv-mem-fail-operand-03.s [new file with mode: 0644]
gas/testsuite/gas/riscv/cv-mem-fail-operand-04.d [new file with mode: 0644]
gas/testsuite/gas/riscv/cv-mem-fail-operand-04.l [new file with mode: 0644]
gas/testsuite/gas/riscv/cv-mem-fail-operand-04.s [new file with mode: 0644]
gas/testsuite/gas/riscv/cv-mem-fail-operand-05.d [new file with mode: 0644]
gas/testsuite/gas/riscv/cv-mem-fail-operand-05.l [new file with mode: 0644]
gas/testsuite/gas/riscv/cv-mem-fail-operand-05.s [new file with mode: 0644]
gas/testsuite/gas/riscv/cv-mem-lbpost.d [new file with mode: 0644]
gas/testsuite/gas/riscv/cv-mem-lbpost.s [new file with mode: 0644]
gas/testsuite/gas/riscv/cv-mem-lbrr.d [new file with mode: 0644]
gas/testsuite/gas/riscv/cv-mem-lbrr.s [new file with mode: 0644]
gas/testsuite/gas/riscv/cv-mem-lbrrpost.d [new file with mode: 0644]
gas/testsuite/gas/riscv/cv-mem-lbrrpost.s [new file with mode: 0644]
gas/testsuite/gas/riscv/cv-mem-lbupost.d [new file with mode: 0644]
gas/testsuite/gas/riscv/cv-mem-lbupost.s [new file with mode: 0644]
gas/testsuite/gas/riscv/cv-mem-lburr.d [new file with mode: 0644]
gas/testsuite/gas/riscv/cv-mem-lburr.s [new file with mode: 0644]
gas/testsuite/gas/riscv/cv-mem-lburrpost.d [new file with mode: 0644]
gas/testsuite/gas/riscv/cv-mem-lburrpost.s [new file with mode: 0644]
gas/testsuite/gas/riscv/cv-mem-lhpost.d [new file with mode: 0644]
gas/testsuite/gas/riscv/cv-mem-lhpost.s [new file with mode: 0644]
gas/testsuite/gas/riscv/cv-mem-lhrr.d [new file with mode: 0644]
gas/testsuite/gas/riscv/cv-mem-lhrr.s [new file with mode: 0644]
gas/testsuite/gas/riscv/cv-mem-lhrrpost.d [new file with mode: 0644]
gas/testsuite/gas/riscv/cv-mem-lhrrpost.s [new file with mode: 0644]
gas/testsuite/gas/riscv/cv-mem-lhupost.d [new file with mode: 0644]
gas/testsuite/gas/riscv/cv-mem-lhupost.s [new file with mode: 0644]
gas/testsuite/gas/riscv/cv-mem-lhurr.d [new file with mode: 0644]
gas/testsuite/gas/riscv/cv-mem-lhurr.s [new file with mode: 0644]
gas/testsuite/gas/riscv/cv-mem-lhurrpost.d [new file with mode: 0644]
gas/testsuite/gas/riscv/cv-mem-lhurrpost.s [new file with mode: 0644]
gas/testsuite/gas/riscv/cv-mem-lwpost.d [new file with mode: 0644]
gas/testsuite/gas/riscv/cv-mem-lwpost.s [new file with mode: 0644]
gas/testsuite/gas/riscv/cv-mem-lwrr.d [new file with mode: 0644]
gas/testsuite/gas/riscv/cv-mem-lwrr.s [new file with mode: 0644]
gas/testsuite/gas/riscv/cv-mem-lwrrpost.d [new file with mode: 0644]
gas/testsuite/gas/riscv/cv-mem-lwrrpost.s [new file with mode: 0644]
gas/testsuite/gas/riscv/cv-mem-sbpost.d [new file with mode: 0644]
gas/testsuite/gas/riscv/cv-mem-sbpost.s [new file with mode: 0644]
gas/testsuite/gas/riscv/cv-mem-sbrr.d [new file with mode: 0644]
gas/testsuite/gas/riscv/cv-mem-sbrr.s [new file with mode: 0644]
gas/testsuite/gas/riscv/cv-mem-sbrrpost.d [new file with mode: 0644]
gas/testsuite/gas/riscv/cv-mem-sbrrpost.s [new file with mode: 0644]
gas/testsuite/gas/riscv/cv-mem-shpost.d [new file with mode: 0644]
gas/testsuite/gas/riscv/cv-mem-shpost.s [new file with mode: 0644]
gas/testsuite/gas/riscv/cv-mem-shrr.d [new file with mode: 0644]
gas/testsuite/gas/riscv/cv-mem-shrr.s [new file with mode: 0644]
gas/testsuite/gas/riscv/cv-mem-shrrpost.d [new file with mode: 0644]
gas/testsuite/gas/riscv/cv-mem-shrrpost.s [new file with mode: 0644]
gas/testsuite/gas/riscv/cv-mem-swpost.d [new file with mode: 0644]
gas/testsuite/gas/riscv/cv-mem-swpost.s [new file with mode: 0644]
gas/testsuite/gas/riscv/cv-mem-swrr.d [new file with mode: 0644]
gas/testsuite/gas/riscv/cv-mem-swrr.s [new file with mode: 0644]
gas/testsuite/gas/riscv/cv-mem-swrrpost.d [new file with mode: 0644]
gas/testsuite/gas/riscv/cv-mem-swrrpost.s [new file with mode: 0644]
gas/testsuite/gas/riscv/march-help.l
include/opcode/riscv-opc.h
include/opcode/riscv.h
opcodes/riscv-opc.c