Lines Matching refs:AtomicRMWInst
59 bool tryExpandAtomicRMW(AtomicRMWInst *AI);
68 AtomicRMWInst *I,
80 bool isIdempotentRMW(AtomicRMWInst *AI);
81 bool simplifyIdempotentRMW(AtomicRMWInst *AI);
90 void expandAtomicRMWToLibcall(AtomicRMWInst *I);
94 llvm::expandAtomicRMWToCmpXchg(AtomicRMWInst *AI,
120 unsigned getAtomicOpSize(AtomicRMWInst *RMWI) { in getAtomicOpSize()
149 unsigned getAtomicOpAlign(AtomicRMWInst *RMWI) { in getAtomicOpAlign()
194 auto RMWI = dyn_cast<AtomicRMWInst>(I); in runOnFunction()
468 AtomicRMWInst *AI = in expandAtomicStore()
469 Builder.CreateAtomicRMW(AtomicRMWInst::Xchg, SI->getPointerOperand(), in expandAtomicStore()
490 static Value *performAtomicOp(AtomicRMWInst::BinOp Op, IRBuilder<> &Builder, in performAtomicOp()
494 case AtomicRMWInst::Xchg: in performAtomicOp()
496 case AtomicRMWInst::Add: in performAtomicOp()
498 case AtomicRMWInst::Sub: in performAtomicOp()
500 case AtomicRMWInst::And: in performAtomicOp()
502 case AtomicRMWInst::Nand: in performAtomicOp()
504 case AtomicRMWInst::Or: in performAtomicOp()
506 case AtomicRMWInst::Xor: in performAtomicOp()
508 case AtomicRMWInst::Max: in performAtomicOp()
511 case AtomicRMWInst::Min: in performAtomicOp()
514 case AtomicRMWInst::UMax: in performAtomicOp()
517 case AtomicRMWInst::UMin: in performAtomicOp()
525 bool AtomicExpand::tryExpandAtomicRMW(AtomicRMWInst *AI) { in tryExpandAtomicRMW()
640 static Value *performMaskedAtomicOp(AtomicRMWInst::BinOp Op, in performMaskedAtomicOp()
645 case AtomicRMWInst::Xchg: { in performMaskedAtomicOp()
650 case AtomicRMWInst::Or: in performMaskedAtomicOp()
651 case AtomicRMWInst::Xor: in performMaskedAtomicOp()
655 case AtomicRMWInst::Add: in performMaskedAtomicOp()
656 case AtomicRMWInst::Sub: in performMaskedAtomicOp()
657 case AtomicRMWInst::And: in performMaskedAtomicOp()
658 case AtomicRMWInst::Nand: { in performMaskedAtomicOp()
666 case AtomicRMWInst::Max: in performMaskedAtomicOp()
667 case AtomicRMWInst::Min: in performMaskedAtomicOp()
668 case AtomicRMWInst::UMax: in performMaskedAtomicOp()
669 case AtomicRMWInst::UMin: { in performMaskedAtomicOp()
695 AtomicRMWInst *AI, TargetLoweringBase::AtomicExpansionKind ExpansionKind) { in expandPartwordAtomicRMW()
1183 bool AtomicExpand::isIdempotentRMW(AtomicRMWInst* RMWI) { in isIdempotentRMW()
1188 AtomicRMWInst::BinOp Op = RMWI->getOperation(); in isIdempotentRMW()
1190 case AtomicRMWInst::Add: in isIdempotentRMW()
1191 case AtomicRMWInst::Sub: in isIdempotentRMW()
1192 case AtomicRMWInst::Or: in isIdempotentRMW()
1193 case AtomicRMWInst::Xor: in isIdempotentRMW()
1195 case AtomicRMWInst::And: in isIdempotentRMW()
1203 bool AtomicExpand::simplifyIdempotentRMW(AtomicRMWInst* RMWI) { in simplifyIdempotentRMW()
1275 bool llvm::expandAtomicRMWToCmpXchg(AtomicRMWInst *AI, in expandAtomicRMWToCmpXchg()
1355 static ArrayRef<RTLIB::Libcall> GetRMWLibcall(AtomicRMWInst::BinOp Op) { in GetRMWLibcall()
1386 case AtomicRMWInst::BAD_BINOP: in GetRMWLibcall()
1388 case AtomicRMWInst::Xchg: in GetRMWLibcall()
1390 case AtomicRMWInst::Add: in GetRMWLibcall()
1392 case AtomicRMWInst::Sub: in GetRMWLibcall()
1394 case AtomicRMWInst::And: in GetRMWLibcall()
1396 case AtomicRMWInst::Or: in GetRMWLibcall()
1398 case AtomicRMWInst::Xor: in GetRMWLibcall()
1400 case AtomicRMWInst::Nand: in GetRMWLibcall()
1402 case AtomicRMWInst::Max: in GetRMWLibcall()
1403 case AtomicRMWInst::Min: in GetRMWLibcall()
1404 case AtomicRMWInst::UMax: in GetRMWLibcall()
1405 case AtomicRMWInst::UMin: in GetRMWLibcall()
1412 void AtomicExpand::expandAtomicRMWToLibcall(AtomicRMWInst *I) { in expandAtomicRMWToLibcall()