[AArch64] Codegen for FEAT_LRCPC3
authorTomas Matheson <tomas.matheson@arm.com>
Wed, 25 Jan 2023 12:03:47 +0000 (12:03 +0000)
committerTomas Matheson <tomas.matheson@arm.com>
Wed, 25 Jan 2023 12:27:23 +0000 (12:27 +0000)
commit7c84f94eb9f9c39229ca26d21d3bcb0b35efdc71
treee89bec00a16629eb389e2a49597bccbeff1242c5
parent5b16cd97b8e1c273c662aa379bcbce4d9f2e488d
[AArch64] Codegen for FEAT_LRCPC3

Implements support for the following 128-bit atomic operations with +rcpc3:
 - 128-bit store-release -> STILP
 - 128-bit load-acquire -> LDIAPP

D126250 and D137590 added support for emitting LDAPR (Load-Acquire RCPc) rather
than LDAP (Load-Acquire) when +rcpc is available. This patch allows emitting
the 128-bit RCPc instructions added in FEAT_LRCPC3 (LDIAPP/STILP). The
implementation is different from LDAPR, because there are no non-RCPc
equivalents for these new instructions.

Support for the offset variants will be added in D141431.

Reviewed By: lenary

Differential Revision: https://reviews.llvm.org/D141429
15 files changed:
llvm/lib/Target/AArch64/AArch64ISelLowering.cpp
llvm/lib/Target/AArch64/AArch64ISelLowering.h
llvm/lib/Target/AArch64/AArch64InstrInfo.td
llvm/lib/Target/AArch64/GISel/AArch64LegalizerInfo.cpp
llvm/test/CodeGen/AArch64/Atomics/aarch64-atomic-load-rcpc3.ll
llvm/test/CodeGen/AArch64/Atomics/aarch64-atomic-store-rcpc3.ll
llvm/test/CodeGen/AArch64/Atomics/aarch64-atomicrmw-rcpc3.ll
llvm/test/CodeGen/AArch64/Atomics/aarch64-cmpxchg-rcpc3.ll
llvm/test/CodeGen/AArch64/Atomics/aarch64-fence.ll
llvm/test/CodeGen/AArch64/Atomics/aarch64_be-atomic-load-rcpc3.ll
llvm/test/CodeGen/AArch64/Atomics/aarch64_be-atomic-store-rcpc3.ll
llvm/test/CodeGen/AArch64/Atomics/aarch64_be-atomicrmw-rcpc3.ll
llvm/test/CodeGen/AArch64/Atomics/aarch64_be-cmpxchg-rcpc3.ll
llvm/test/CodeGen/AArch64/Atomics/aarch64_be-fence.ll
llvm/test/CodeGen/AArch64/Atomics/generate-tests.py