[RISCV] Add vendor-defined XTheadMemPair (two-GPR Memory Operations) extension
authorManolis Tsamis <manolis.tsamis@vrull.eu>
Mon, 13 Feb 2023 13:07:45 +0000 (14:07 +0100)
committerPhilipp Tomsich <philipp.tomsich@vrull.eu>
Fri, 17 Feb 2023 18:45:22 +0000 (19:45 +0100)
commitd2918544a7fc4b5443879fe12f32a712e6dfe325
tree72e5c6e819ed970bb2517b788634733b5c4f2ae0
parent21a543656cf4840023078359a6c7e0db7d5391b2
[RISCV] Add vendor-defined XTheadMemPair (two-GPR Memory Operations) extension

The vendor-defined XTHeadMemPair (no comparable standard extension exists
at the time of writing) extension adds two-GPR load/store pair 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=6e17ae625570ff8f3c12c8765b8d45d4db8694bd

Depends on D143847

Differential Revision: https://reviews.llvm.org/D144002
15 files changed:
llvm/docs/RISCVUsage.rst
llvm/docs/ReleaseNotes.rst
llvm/lib/Support/RISCVISAInfo.cpp
llvm/lib/Target/RISCV/AsmParser/RISCVAsmParser.cpp
llvm/lib/Target/RISCV/Disassembler/RISCVDisassembler.cpp
llvm/lib/Target/RISCV/RISCVFeatures.td
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/xtheadmempair.ll [new file with mode: 0644]
llvm/test/MC/RISCV/rv32xtheadmempair-invalid.s [new file with mode: 0644]
llvm/test/MC/RISCV/rv32xtheadmempair-valid.s [new file with mode: 0644]
llvm/test/MC/RISCV/rv64xtheadmempair-invalid.s [new file with mode: 0644]
llvm/test/MC/RISCV/rv64xtheadmempair-valid.s [new file with mode: 0644]