Lines Matching refs:AtomicRMWInst

51     bool tryExpandAtomicRMW(AtomicRMWInst *AI);
52 bool expandAtomicRMWToLLSC(AtomicRMWInst *AI);
53 bool expandAtomicRMWToCmpXchg(AtomicRMWInst *AI);
55 bool isIdempotentRMW(AtomicRMWInst *AI);
56 bool simplifyIdempotentRMW(AtomicRMWInst *AI);
88 auto RMWI = dyn_cast<AtomicRMWInst>(I); in runOnFunction()
220 AtomicRMWInst *AI = in expandAtomicStore()
221 Builder.CreateAtomicRMW(AtomicRMWInst::Xchg, SI->getPointerOperand(), in expandAtomicStore()
229 bool AtomicExpand::tryExpandAtomicRMW(AtomicRMWInst *AI) { in tryExpandAtomicRMW()
250 static Value *performAtomicOp(AtomicRMWInst::BinOp Op, IRBuilder<> &Builder, in performAtomicOp()
254 case AtomicRMWInst::Xchg: in performAtomicOp()
256 case AtomicRMWInst::Add: in performAtomicOp()
258 case AtomicRMWInst::Sub: in performAtomicOp()
260 case AtomicRMWInst::And: in performAtomicOp()
262 case AtomicRMWInst::Nand: in performAtomicOp()
264 case AtomicRMWInst::Or: in performAtomicOp()
266 case AtomicRMWInst::Xor: in performAtomicOp()
268 case AtomicRMWInst::Max: in performAtomicOp()
271 case AtomicRMWInst::Min: in performAtomicOp()
274 case AtomicRMWInst::UMax: in performAtomicOp()
277 case AtomicRMWInst::UMin: in performAtomicOp()
285 bool AtomicExpand::expandAtomicRMWToLLSC(AtomicRMWInst *AI) { in expandAtomicRMWToLLSC()
340 bool AtomicExpand::expandAtomicRMWToCmpXchg(AtomicRMWInst *AI) { in expandAtomicRMWToCmpXchg()
537 bool AtomicExpand::isIdempotentRMW(AtomicRMWInst* RMWI) { in isIdempotentRMW()
542 AtomicRMWInst::BinOp Op = RMWI->getOperation(); in isIdempotentRMW()
544 case AtomicRMWInst::Add: in isIdempotentRMW()
545 case AtomicRMWInst::Sub: in isIdempotentRMW()
546 case AtomicRMWInst::Or: in isIdempotentRMW()
547 case AtomicRMWInst::Xor: in isIdempotentRMW()
549 case AtomicRMWInst::And: in isIdempotentRMW()
557 bool AtomicExpand::simplifyIdempotentRMW(AtomicRMWInst* RMWI) { in simplifyIdempotentRMW()