[Arm][AArch64] Add support for v8.9-A/v9.4-A base extensions
authorLucas Prates <lucas.prates@arm.com>
Mon, 5 Dec 2022 13:26:21 +0000 (13:26 +0000)
committerLucas Prates <lucas.prates@arm.com>
Thu, 8 Dec 2022 10:15:29 +0000 (10:15 +0000)
commit2050e7ebe18cc4cf906d9b54d17ee885cd868327
tree07103b0ad64289a1a2ec3eb9cc75ff4e0b9e6815
parent8a900f2438b4a167b98404565ad4da2645cc9330
[Arm][AArch64] Add support for v8.9-A/v9.4-A base extensions

This implements the base extensions that are part of the v8.9-A and
v9.4-A architecture versions, including:

* The Clear BHB Instruction (FEAT_CLRBHB)
* The Speculation Restriction Instruction (FEAT_SPECRES2)
* The SLC target for the PRFM instruction
* New system registers:
  * ID_AA64PFR2_EL1
  * ID_AA64MMFR3_EL1
  * HFGITR2_EL2
  * SCTLR2_EL3

More information on the new extensions can be found on:

* https://community.arm.com/arm-community-blogs/b/architectures-and-processors-blog/posts/arm-a-profile-architecture-2022
* https://developer.arm.com/downloads/-/exploration-tools

Contributors: Sam Elliott, Tomas Matheson and Son Tuan Vu.

Reviewed By: lenary

Differential Revision: https://reviews.llvm.org/D139424
29 files changed:
llvm/include/llvm/Support/AArch64TargetParser.def
llvm/include/llvm/Support/AArch64TargetParser.h
llvm/lib/Target/AArch64/AArch64.td
llvm/lib/Target/AArch64/AArch64InstrInfo.td
llvm/lib/Target/AArch64/AArch64SystemOperands.td
llvm/lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp
llvm/lib/Target/AArch64/MCTargetDesc/AArch64InstPrinter.cpp
llvm/lib/Target/ARM/ARM.td
llvm/lib/Target/ARM/ARMInstrInfo.td
llvm/lib/Target/ARM/ARMInstrThumb2.td
llvm/lib/Target/ARM/ARMPredicates.td
llvm/test/MC/AArch64/arm64-system-encoding.s
llvm/test/MC/AArch64/armv8.6a-fgt.s
llvm/test/MC/AArch64/armv8.9a-clrbhb.s [new file with mode: 0644]
llvm/test/MC/AArch64/armv8.9a-prfm-slc.s [new file with mode: 0644]
llvm/test/MC/AArch64/armv8.9a-specres2-error.s [new file with mode: 0644]
llvm/test/MC/AArch64/armv8.9a-specres2.s [new file with mode: 0644]
llvm/test/MC/AArch64/basic-a64-diagnostics.s
llvm/test/MC/AArch64/basic-a64-instructions.s
llvm/test/MC/ARM/armv8.9a-clrbhb.s [new file with mode: 0644]
llvm/test/MC/Disassembler/AArch64/armv8.6a-fgt.txt
llvm/test/MC/Disassembler/AArch64/armv8.9a-clrbhb.txt [new file with mode: 0644]
llvm/test/MC/Disassembler/AArch64/armv8.9a-prfm-slc.txt [new file with mode: 0644]
llvm/test/MC/Disassembler/AArch64/armv8.9a-specres2.txt [new file with mode: 0644]
llvm/test/MC/Disassembler/AArch64/basic-a64-instructions.txt
llvm/test/MC/Disassembler/AArch64/mattr-all.txt
llvm/test/MC/Disassembler/ARM/armv8.9a-clrbhb-arm.txt [new file with mode: 0644]
llvm/test/MC/Disassembler/ARM/armv8.9a-clrbhb-thumb.txt [new file with mode: 0644]
llvm/unittests/Support/TargetParserTest.cpp