[PATCH] D142166: [X86] Make `shouldExpandLogicAtomicRMWInIR` able to match both operands.
Phoebe Wang via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Thu Jan 19 23:42:00 PST 2023
pengfei accepted this revision.
pengfei added a comment.
This revision is now accepted and ready to land.
LGTM with some nits.
================
Comment at: llvm/lib/Target/X86/X86ISelLowering.cpp:31534-31536
+ // This is a redundant AND, it should get cleaned up elsewhere.
+ if (AI == I->getOperand(OtherIdx))
+ return AtomicExpansionKind::CmpXChg;
----------------
Do you have a test for it? I suspect it's dead code. Maybe just use assert?
================
Comment at: llvm/lib/Target/X86/X86ISelLowering.cpp:31540-31541
if (BitChange.second == ConstantBit || BitChange.second == NotConstantBit) {
auto *C1 = dyn_cast<ConstantInt>(AI->getValOperand());
assert(C1 != nullptr);
+ auto *C2 = dyn_cast<ConstantInt>(I->getOperand(OtherIdx));
----------------
This can trun into `auto *C1 = cast<ConstantInt>(AI->getValOperand());`.
================
Comment at: llvm/lib/Target/X86/X86ISelLowering.cpp:31610-31612
+ auto *C =
+ dyn_cast<ConstantInt>(I->getOperand(I->getOperand(0) == AI ? 1 : 0));
assert(C != nullptr);
----------------
ditto.
Repository:
rG LLVM Github Monorepo
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D142166/new/
https://reviews.llvm.org/D142166
More information about the llvm-commits
mailing list