[PATCH] D58242: Teach instcombine about remaining idemptotent atomicrmw types
Quentin Colombet via Phabricator via llvm-commits
llvm-commits at lists.llvm.org
Thu Feb 14 10:29:12 PST 2019
qcolombet added inline comments.
================
Comment at: lib/Transforms/InstCombine/InstCombineAtomicRMW.cpp:53
+Instruction *InstCombiner::visitAtomicRMWInst(AtomicRMWInst &RMWI) {
+ if (!isIdempotentRMW(RMWI))
+ return nullptr;
----------------
spatel wrote:
> qcolombet wrote:
> > IIRC to be pedantic idempotent is when something doesn't change when multiplied by itself, hence this name could be misleading (though I could remember wrong :P).
> Idempotent is (copied from Instruction.h):
> /// Idempotent operators satisfy: x op x === x
> ///
> /// In LLVM, the And and Or operators are idempotent.
>
> We have similar logic/switch for binop instructions. See:
> ConstantExpr::getBinOpIdentity()
> (not sure if there's a way to share code between this and that)
Thanks for the reference Sanjay.
Technically, this does not match what we are doing here: `x op cst === x` where cst may be different than x, but I guess this is a wildly spread language abuse that people just get it.
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D58242/new/
https://reviews.llvm.org/D58242
More information about the llvm-commits
mailing list