Lines Matching refs:RMWI
120 unsigned getAtomicOpSize(AtomicRMWInst *RMWI) { in getAtomicOpSize() argument
121 const DataLayout &DL = RMWI->getModule()->getDataLayout(); in getAtomicOpSize()
122 return DL.getTypeStoreSize(RMWI->getValOperand()->getType()); in getAtomicOpSize()
149 unsigned getAtomicOpAlign(AtomicRMWInst *RMWI) { in getAtomicOpAlign() argument
153 const DataLayout &DL = RMWI->getModule()->getDataLayout(); in getAtomicOpAlign()
154 return DL.getTypeStoreSize(RMWI->getValOperand()->getType()); in getAtomicOpAlign()
194 auto RMWI = dyn_cast<AtomicRMWInst>(I); in runOnFunction() local
196 assert((LI || SI || RMWI || CASI) && "Unknown atomic instruction"); in runOnFunction()
211 } else if (RMWI) { in runOnFunction()
212 if (!atomicSizeSupported(TLI, RMWI)) { in runOnFunction()
213 expandAtomicRMWToLibcall(RMWI); in runOnFunction()
238 } else if (RMWI && (isReleaseOrStronger(RMWI->getOrdering()) || in runOnFunction()
239 isAcquireOrStronger(RMWI->getOrdering()))) { in runOnFunction()
240 FenceOrdering = RMWI->getOrdering(); in runOnFunction()
241 RMWI->setOrdering(AtomicOrdering::Monotonic); in runOnFunction()
283 } else if (RMWI) { in runOnFunction()
289 if (isIdempotentRMW(RMWI) && simplifyIdempotentRMW(RMWI)) { in runOnFunction()
292 MadeChange |= tryExpandAtomicRMW(RMWI); in runOnFunction()
1183 bool AtomicExpand::isIdempotentRMW(AtomicRMWInst* RMWI) { in isIdempotentRMW() argument
1184 auto C = dyn_cast<ConstantInt>(RMWI->getValOperand()); in isIdempotentRMW()
1188 AtomicRMWInst::BinOp Op = RMWI->getOperation(); in isIdempotentRMW()
1203 bool AtomicExpand::simplifyIdempotentRMW(AtomicRMWInst* RMWI) { in simplifyIdempotentRMW() argument
1204 if (auto ResultingLoad = TLI->lowerIdempotentRMWIntoFencedLoad(RMWI)) { in simplifyIdempotentRMW()