Lines Matching refs:AtomicRMWInst
80 bool tryExpandAtomicRMW(AtomicRMWInst *AI);
89 AtomicRMWInst *I,
101 bool isIdempotentRMW(AtomicRMWInst *RMWI);
102 bool simplifyIdempotentRMW(AtomicRMWInst *RMWI);
111 void expandAtomicRMWToLibcall(AtomicRMWInst *I);
115 llvm::expandAtomicRMWToCmpXchg(AtomicRMWInst *AI,
141 static unsigned getAtomicOpSize(AtomicRMWInst *RMWI) {
170 static unsigned getAtomicOpAlign(AtomicRMWInst *RMWI) {
218 auto RMWI = dyn_cast<AtomicRMWInst>(I);
478 AtomicRMWInst *AI =
479 Builder.CreateAtomicRMW(AtomicRMWInst::Xchg, SI->getPointerOperand(),
500 static Value *performAtomicOp(AtomicRMWInst::BinOp Op, IRBuilder<> &Builder,
504 case AtomicRMWInst::Xchg:
506 case AtomicRMWInst::Add:
508 case AtomicRMWInst::Sub:
510 case AtomicRMWInst::And:
512 case AtomicRMWInst::Nand:
514 case AtomicRMWInst::Or:
516 case AtomicRMWInst::Xor:
518 case AtomicRMWInst::Max:
521 case AtomicRMWInst::Min:
524 case AtomicRMWInst::UMax:
527 case AtomicRMWInst::UMin:
535 bool AtomicExpand::tryExpandAtomicRMW(AtomicRMWInst *AI) {
650 static Value *performMaskedAtomicOp(AtomicRMWInst::BinOp Op,
655 case AtomicRMWInst::Xchg: {
660 case AtomicRMWInst::Or:
661 case AtomicRMWInst::Xor:
665 case AtomicRMWInst::Add:
666 case AtomicRMWInst::Sub:
667 case AtomicRMWInst::And:
668 case AtomicRMWInst::Nand: {
676 case AtomicRMWInst::Max:
677 case AtomicRMWInst::Min:
678 case AtomicRMWInst::UMax:
679 case AtomicRMWInst::UMin: {
705 AtomicRMWInst *AI, TargetLoweringBase::AtomicExpansionKind ExpansionKind) {
1187 bool AtomicExpand::isIdempotentRMW(AtomicRMWInst* RMWI) {
1192 AtomicRMWInst::BinOp Op = RMWI->getOperation();
1194 case AtomicRMWInst::Add:
1195 case AtomicRMWInst::Sub:
1196 case AtomicRMWInst::Or:
1197 case AtomicRMWInst::Xor:
1199 case AtomicRMWInst::And:
1207 bool AtomicExpand::simplifyIdempotentRMW(AtomicRMWInst* RMWI) {
1279 bool llvm::expandAtomicRMWToCmpXchg(AtomicRMWInst *AI,
1359 static ArrayRef<RTLIB::Libcall> GetRMWLibcall(AtomicRMWInst::BinOp Op) {
1390 case AtomicRMWInst::BAD_BINOP:
1392 case AtomicRMWInst::Xchg:
1394 case AtomicRMWInst::Add:
1396 case AtomicRMWInst::Sub:
1398 case AtomicRMWInst::And:
1400 case AtomicRMWInst::Or:
1402 case AtomicRMWInst::Xor:
1404 case AtomicRMWInst::Nand:
1406 case AtomicRMWInst::Max:
1407 case AtomicRMWInst::Min:
1408 case AtomicRMWInst::UMax:
1409 case AtomicRMWInst::UMin:
1416 void AtomicExpand::expandAtomicRMWToLibcall(AtomicRMWInst *I) {