[llvm] [RISCV][ISEL] Lowering to load-acquire/store-release for RISCV Zalasr (PR #82914)
Craig Topper via llvm-commits
llvm-commits at lists.llvm.org
Sun Dec 15 00:23:12 PST 2024
================
@@ -21926,6 +21926,35 @@ unsigned RISCVTargetLowering::getCustomCtpopCost(EVT VT,
return isCtpopFast(VT) ? 0 : 1;
}
+bool RISCVTargetLowering::shouldInsertFencesForAtomic(
+ const Instruction *I) const {
+ if (Subtarget.hasStdExtZalasr()) {
+ if (Subtarget.hasStdExtZtso()) {
+ // Zalasr + TSO means that atomic_load_acquire and atomic_store_release
+ // should be lowered to plain load/store. The easiest way to do this is
+ // to say we should insert fences for them, and the fence insertion code
+ // will just not insert any fences
+ auto LI = dyn_cast<LoadInst>(I);
+ auto SI = dyn_cast<StoreInst>(I);
+ if ((LI &&
+ (LI->getOrdering() == AtomicOrdering::SequentiallyConsistent)) ||
+ (SI &&
+ (SI->getOrdering() == AtomicOrdering::SequentiallyConsistent))) {
+ // Here, this is a load or store which is seq_cst, and needs a .aq or
+ // .rl therefore we shouldn't try to insert fences
----------------
topperc wrote:
Extra space
https://github.com/llvm/llvm-project/pull/82914
More information about the llvm-commits
mailing list