[PATCH] D106234: [PowerPC] Fallback to base's implementation of shouldExpandAtomicCmpXchgInIR and shouldExpandAtomicCmpXchgInIR
Kai Luo via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Mon Jul 19 23:23:29 PDT 2021
lkail added inline comments.
================
Comment at: llvm/lib/Target/PowerPC/PPCISelLowering.cpp:17501
return AtomicExpansionKind::MaskedIntrinsic;
- return AtomicExpansionKind::None;
+ return TargetLowering::shouldExpandAtomicRMWInIR(AI);
}
----------------
lkail wrote:
> jsji wrote:
> > With this change, we pretty much fall back on base implementation for *ALL* other types , except for 128 bits. That means quite some change to existing expansion? If so, I think we should at least add tests for all other types and bits to double confirm.
> Before https://reviews.llvm.org/rGb9c3941cd61de1e1b9e4f3311ddfa92394475f4b which override `shouldExpandAtomicRMWInIR`, calling `shouldExpandAtomicRMWInIR` will falls into `TargetLoweringBase`'s
> ```
> /// Returns how the IR-level AtomicExpand pass should expand the given
> /// AtomicRMW, if at all. Default is to never expand.
> virtual AtomicExpansionKind shouldExpandAtomicRMWInIR(AtomicRMWInst *RMW) const {
> return RMW->isFloatingPointOperation() ?
> AtomicExpansionKind::CmpXChg : AtomicExpansionKind::None;
> }
> ```
> After override and this patch, I think all other types remain what they are before https://reviews.llvm.org/rGb9c3941cd61de1e1b9e4f3311ddfa92394475f4b.
And indeed, we're lacking tests while performing `AtomicExpand`, like atomic float operations. I'll add some tests involving `AtomicExpand` as regression tests.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D106234/new/
https://reviews.llvm.org/D106234
More information about the llvm-commits
mailing list