[RISCV] Add vendor-defined XTheadMemIdx (Indexed Memory Operations) extension
authorManolis Tsamis <manolis.tsamis@vrull.eu>
Thu, 23 Feb 2023 23:04:08 +0000 (00:04 +0100)
committerPhilipp Tomsich <philipp.tomsich@vrull.eu>
Thu, 23 Feb 2023 23:17:58 +0000 (00:17 +0100)
commitf6262201d8fd52260c205f7426cb22b18ee06ac7
treee7e44ad7f78ce61aca7b9d439e409af85fa28b49
parent91610433907ebc335576f0da286f0c8a7793e3a9
[RISCV] Add vendor-defined XTheadMemIdx (Indexed Memory Operations) extension

The vendor-defined XTHeadMemIdx (no comparable standard extension exists
at the time of writing) extension adds indexed load/store instructions
as well as load/store and update register instructions.

It is supported by the C9xx cores (e.g., found in the wild in the
Allwinner D1) by Alibaba T-Head.

The current (as of this commit) public documentation for this
extension is available at:
  https://github.com/T-head-Semi/thead-extension-spec/releases/download/2.2.2/xthead-2023-01-30-2.2.2.pdf

Support for these instructions has already landed in GNU Binutils:
  https://sourceware.org/git/?p=binutils-gdb.git;a=commit;h=27cfd142d0a7e378d19aa9a1278e2137f849b71b

Depends on D144002

Reviewed By: craig.topper

Differential Revision: https://reviews.llvm.org/D144249
16 files changed:
llvm/docs/RISCVUsage.rst
llvm/docs/ReleaseNotes.rst
llvm/lib/Support/RISCVISAInfo.cpp
llvm/lib/Target/RISCV/Disassembler/RISCVDisassembler.cpp
llvm/lib/Target/RISCV/RISCVFeatures.td
llvm/lib/Target/RISCV/RISCVISelDAGToDAG.cpp
llvm/lib/Target/RISCV/RISCVISelDAGToDAG.h
llvm/lib/Target/RISCV/RISCVISelLowering.cpp
llvm/lib/Target/RISCV/RISCVISelLowering.h
llvm/lib/Target/RISCV/RISCVInstrInfoXTHead.td
llvm/test/CodeGen/RISCV/attributes.ll
llvm/test/CodeGen/RISCV/xtheadmemidx.ll [new file with mode: 0644]
llvm/test/MC/RISCV/rv32xtheadmemidx-invalid.s [new file with mode: 0644]
llvm/test/MC/RISCV/rv32xtheadmemidx-valid.s [new file with mode: 0644]
llvm/test/MC/RISCV/rv64xtheadmemidx-invalid.s [new file with mode: 0644]
llvm/test/MC/RISCV/rv64xtheadmemidx-valid.s [new file with mode: 0644]