Home
last modified time | relevance | path

Searched refs:AtomicRMWInst (Results 1 – 25 of 122) sorted by relevance

12345

/freebsd/contrib/llvm-project/llvm/lib/Transforms/InstCombine/
H A DInstCombineAtomicRMW.cpp24 bool isIdempotentRMW(AtomicRMWInst& RMWI) { in isIdempotentRMW()
27 case AtomicRMWInst::FAdd: // -0.0 in isIdempotentRMW()
29 case AtomicRMWInst::FSub: // +0.0 in isIdempotentRMW()
40 case AtomicRMWInst::Add: in isIdempotentRMW()
41 case AtomicRMWInst::Sub: in isIdempotentRMW()
42 case AtomicRMWInst::Or: in isIdempotentRMW()
43 case AtomicRMWInst::Xor: in isIdempotentRMW()
45 case AtomicRMWInst::And: in isIdempotentRMW()
47 case AtomicRMWInst::Min: in isIdempotentRMW()
49 case AtomicRMWInst::Max: in isIdempotentRMW()
[all …]
/freebsd/contrib/llvm-project/llvm/lib/Target/AMDGPU/
H A DAMDGPUAtomicOptimizer.cpp45 AtomicRMWInst::BinOp Op;
78 Value *buildReduction(IRBuilder<> &B, AtomicRMWInst::BinOp Op, Value *V,
80 Value *buildScan(IRBuilder<> &B, AtomicRMWInst::BinOp Op, Value *V,
85 buildScanIteratively(IRBuilder<> &B, AtomicRMWInst::BinOp Op,
89 void optimizeAtomic(Instruction &I, AtomicRMWInst::BinOp Op, unsigned ValIdx,
104 void visitAtomicRMWInst(AtomicRMWInst &I);
182 void AMDGPUAtomicOptimizerImpl::visitAtomicRMWInst(AtomicRMWInst &I) { in visitAtomicRMWInst()
192 AtomicRMWInst::BinOp Op = I.getOperation(); in visitAtomicRMWInst()
197 case AtomicRMWInst::Add: in visitAtomicRMWInst()
198 case AtomicRMWInst::Sub: in visitAtomicRMWInst()
[all …]
H A DAMDGPULowerBufferFatPointers.cpp1360 PtrParts visitAtomicRMWInst(AtomicRMWInst &AI);
1706 else if (auto *RMW = dyn_cast<AtomicRMWInst>(I)) { in handleMemoryInst()
1708 case AtomicRMWInst::Xchg: in handleMemoryInst()
1711 case AtomicRMWInst::Add: in handleMemoryInst()
1714 case AtomicRMWInst::Sub: in handleMemoryInst()
1717 case AtomicRMWInst::And: in handleMemoryInst()
1720 case AtomicRMWInst::Or: in handleMemoryInst()
1723 case AtomicRMWInst::Xor: in handleMemoryInst()
1726 case AtomicRMWInst::Max: in handleMemoryInst()
1729 case AtomicRMWInst::Min: in handleMemoryInst()
[all …]
/freebsd/contrib/llvm-project/llvm/lib/Transforms/Utils/
H A DLowerAtomic.cpp52 Value *llvm::buildAtomicRMWValue(AtomicRMWInst::BinOp Op, in buildAtomicRMWValue()
57 case AtomicRMWInst::Xchg: in buildAtomicRMWValue()
59 case AtomicRMWInst::Add: in buildAtomicRMWValue()
61 case AtomicRMWInst::Sub: in buildAtomicRMWValue()
63 case AtomicRMWInst::And: in buildAtomicRMWValue()
65 case AtomicRMWInst::Nand: in buildAtomicRMWValue()
67 case AtomicRMWInst::Or: in buildAtomicRMWValue()
69 case AtomicRMWInst::Xor: in buildAtomicRMWValue()
71 case AtomicRMWInst::Max: in buildAtomicRMWValue()
74 case AtomicRMWInst::Min: in buildAtomicRMWValue()
[all …]
/freebsd/contrib/llvm-project/llvm/lib/CodeGen/
H A DAtomicExpandPass.cpp88 bool tryExpandAtomicRMW(AtomicRMWInst *AI);
89 AtomicRMWInst *convertAtomicXchgToIntegerType(AtomicRMWInst *RMWI);
99 AtomicRMWInst *I, TargetLoweringBase::AtomicExpansionKind ExpansionKind);
100 AtomicRMWInst *widenPartwordAtomicRMW(AtomicRMWInst *AI);
102 void expandAtomicRMWToMaskedIntrinsic(AtomicRMWInst *AI);
114 bool isIdempotentRMW(AtomicRMWInst *RMWI);
115 bool simplifyIdempotentRMW(AtomicRMWInst *RMWI);
124 void expandAtomicRMWToLibcall(AtomicRMWInst *I);
128 llvm::expandAtomicRMWToCmpXchg(AtomicRMWInst *AI,
196 static unsigned getAtomicOpSize(AtomicRMWInst *RMWI) { in getAtomicOpSize()
[all …]
/freebsd/contrib/llvm-project/llvm/lib/Target/LoongArch/
H A DLoongArchExpandAtomicPseudoInsts.cpp49 MachineBasicBlock::iterator MBBI, AtomicRMWInst::BinOp,
54 AtomicRMWInst::BinOp, bool IsMasked, int Width,
93 return expandAtomicBinOp(MBB, MBBI, AtomicRMWInst::Xchg, true, 32, in expandMI()
96 return expandAtomicBinOp(MBB, MBBI, AtomicRMWInst::Xchg, false, 32, in expandMI()
99 return expandAtomicBinOp(MBB, MBBI, AtomicRMWInst::Add, true, 32, NextMBBI); in expandMI()
101 return expandAtomicBinOp(MBB, MBBI, AtomicRMWInst::Sub, true, 32, NextMBBI); in expandMI()
103 return expandAtomicBinOp(MBB, MBBI, AtomicRMWInst::Nand, false, 32, in expandMI()
106 return expandAtomicBinOp(MBB, MBBI, AtomicRMWInst::Nand, false, 64, in expandMI()
109 return expandAtomicBinOp(MBB, MBBI, AtomicRMWInst::Nand, true, 32, in expandMI()
112 return expandAtomicBinOp(MBB, MBBI, AtomicRMWInst::Add, false, 32, in expandMI()
[all …]
/freebsd/contrib/llvm-project/llvm/lib/Target/RISCV/
H A DRISCVExpandAtomicPseudoInsts.cpp50 MachineBasicBlock::iterator MBBI, AtomicRMWInst::BinOp,
55 AtomicRMWInst::BinOp, bool IsMasked, int Width,
113 return expandAtomicBinOp(MBB, MBBI, AtomicRMWInst::Nand, false, 32, in expandMI()
116 return expandAtomicBinOp(MBB, MBBI, AtomicRMWInst::Nand, false, 64, in expandMI()
119 return expandAtomicBinOp(MBB, MBBI, AtomicRMWInst::Xchg, true, 32, in expandMI()
122 return expandAtomicBinOp(MBB, MBBI, AtomicRMWInst::Add, true, 32, NextMBBI); in expandMI()
124 return expandAtomicBinOp(MBB, MBBI, AtomicRMWInst::Sub, true, 32, NextMBBI); in expandMI()
126 return expandAtomicBinOp(MBB, MBBI, AtomicRMWInst::Nand, true, 32, in expandMI()
129 return expandAtomicMinMaxOp(MBB, MBBI, AtomicRMWInst::Max, true, 32, in expandMI()
132 return expandAtomicMinMaxOp(MBB, MBBI, AtomicRMWInst::Min, true, 32, in expandMI()
[all …]
/freebsd/contrib/llvm-project/llvm/lib/Target/NVPTX/
H A DNVPTXAtomicLower.cpp45 SmallVector<AtomicRMWInst *> LocalMemoryAtomics; in runOnFunction()
47 if (AtomicRMWInst *RMWI = dyn_cast<AtomicRMWInst>(&I)) in runOnFunction()
52 for (AtomicRMWInst *RMWI : LocalMemoryAtomics) in runOnFunction()
/freebsd/contrib/llvm-project/llvm/include/llvm/CodeGen/
H A DAtomicExpandUtils.h18 class AtomicRMWInst; variable
61 bool expandAtomicRMWToCmpXchg(AtomicRMWInst *AI, CreateCmpXchgInstFun CreateCmpXchg);
/freebsd/contrib/llvm-project/llvm/include/llvm/Transforms/Utils/
H A DLowerAtomic.h35 bool lowerAtomicRMWInst(AtomicRMWInst *RMWI);
39 Value *buildAtomicRMWValue(AtomicRMWInst::BinOp Op, IRBuilderBase &Builder,
/freebsd/contrib/llvm-project/llvm/lib/Transforms/Instrumentation/
H A DThreadSanitizer.cpp163 FunctionCallee TsanAtomicRMW[AtomicRMWInst::LAST_BINOP + 1]
284 for (unsigned Op = AtomicRMWInst::FIRST_BINOP; in initialize()
285 Op <= AtomicRMWInst::LAST_BINOP; ++Op) { in initialize()
288 if (Op == AtomicRMWInst::Xchg) in initialize()
290 else if (Op == AtomicRMWInst::Add) in initialize()
292 else if (Op == AtomicRMWInst::Sub) in initialize()
294 else if (Op == AtomicRMWInst::And) in initialize()
296 else if (Op == AtomicRMWInst::Or) in initialize()
298 else if (Op == AtomicRMWInst::Xor) in initialize()
300 else if (Op == AtomicRMWInst::Nand) in initialize()
[all …]
/freebsd/contrib/llvm-project/llvm/lib/IR/
H A DCore.cpp2121 if (AtomicRMWInst *RMWI = dyn_cast<AtomicRMWInst>(P)) in LLVMGetAlignment()
2143 else if (AtomicRMWInst *RMWI = dyn_cast<AtomicRMWInst>(P)) in LLVMSetAlignment()
3952 static AtomicRMWInst::BinOp mapFromLLVMRMWBinOp(LLVMAtomicRMWBinOp BinOp) { in mapFromLLVMRMWBinOp()
3954 case LLVMAtomicRMWBinOpXchg: return AtomicRMWInst::Xchg; in mapFromLLVMRMWBinOp()
3955 case LLVMAtomicRMWBinOpAdd: return AtomicRMWInst::Add; in mapFromLLVMRMWBinOp()
3956 case LLVMAtomicRMWBinOpSub: return AtomicRMWInst::Sub; in mapFromLLVMRMWBinOp()
3957 case LLVMAtomicRMWBinOpAnd: return AtomicRMWInst::And; in mapFromLLVMRMWBinOp()
3958 case LLVMAtomicRMWBinOpNand: return AtomicRMWInst::Nand; in mapFromLLVMRMWBinOp()
3959 case LLVMAtomicRMWBinOpOr: return AtomicRMWInst::Or; in mapFromLLVMRMWBinOp()
3960 case LLVMAtomicRMWBinOpXor: return AtomicRMWInst::Xor; in mapFromLLVMRMWBinOp()
[all …]
H A DInstructions.cpp1429 void AtomicRMWInst::Init(BinOp Operation, Value *Ptr, Value *Val, in Init()
1450 AtomicRMWInst::AtomicRMWInst(BinOp Operation, Value *Ptr, Value *Val, in AtomicRMWInst() function in AtomicRMWInst
1457 StringRef AtomicRMWInst::getOperationName(BinOp Op) { in getOperationName()
1459 case AtomicRMWInst::Xchg: in getOperationName()
1461 case AtomicRMWInst::Add: in getOperationName()
1463 case AtomicRMWInst::Sub: in getOperationName()
1465 case AtomicRMWInst::And: in getOperationName()
1467 case AtomicRMWInst::Nand: in getOperationName()
1469 case AtomicRMWInst::Or: in getOperationName()
1471 case AtomicRMWInst::Xor: in getOperationName()
[all …]
H A DInstruction.cpp912 if (const AtomicRMWInst *RMWI = dyn_cast<AtomicRMWInst>(I1)) in hasSameSpecialState()
913 return RMWI->getOperation() == cast<AtomicRMWInst>(I2)->getOperation() && in hasSameSpecialState()
914 RMWI->isVolatile() == cast<AtomicRMWInst>(I2)->isVolatile() && in hasSameSpecialState()
915 RMWI->getOrdering() == cast<AtomicRMWInst>(I2)->getOrdering() && in hasSameSpecialState()
916 RMWI->getSyncScopeID() == cast<AtomicRMWInst>(I2)->getSyncScopeID(); in hasSameSpecialState()
1088 return cast<AtomicRMWInst>(this)->isVolatile(); in isVolatile()
/freebsd/contrib/llvm-project/llvm/lib/Transforms/Scalar/
H A DLowerAtomicPass.cpp46 else if (AtomicRMWInst *RMWI = dyn_cast<AtomicRMWInst>(&Inst)) in runOnBasicBlock()
/freebsd/contrib/llvm-project/llvm/lib/SandboxIR/
H A DInstruction.cpp1258 void AtomicRMWInst::setAlignment(Align Align) { in setAlignment()
1260 .emplaceIfTracking<GenericSetter<&AtomicRMWInst::getAlign, in setAlignment()
1261 &AtomicRMWInst::setAlignment>>(this); in setAlignment()
1262 cast<llvm::AtomicRMWInst>(Val)->setAlignment(Align); in setAlignment()
1265 void AtomicRMWInst::setVolatile(bool V) { in setVolatile()
1267 .emplaceIfTracking<GenericSetter<&AtomicRMWInst::isVolatile, in setVolatile()
1268 &AtomicRMWInst::setVolatile>>(this); in setVolatile()
1269 cast<llvm::AtomicRMWInst>(Val)->setVolatile(V); in setVolatile()
1272 void AtomicRMWInst::setOrdering(AtomicOrdering Ordering) { in setOrdering()
1274 .emplaceIfTracking<GenericSetter<&AtomicRMWInst::getOrdering, in setOrdering()
[all …]
H A DContext.cpp237 auto *LLVMAtomicRMW = cast<llvm::AtomicRMWInst>(LLVMV); in getOrCreateValueInternal()
238 It->second = std::unique_ptr<AtomicRMWInst>( in getOrCreateValueInternal()
239 new AtomicRMWInst(LLVMAtomicRMW, *this)); in getOrCreateValueInternal()
598 AtomicRMWInst *Context::createAtomicRMWInst(llvm::AtomicRMWInst *I) { in createAtomicRMWInst()
599 auto NewPtr = std::unique_ptr<AtomicRMWInst>(new AtomicRMWInst(I, *this)); in createAtomicRMWInst()
600 return cast<AtomicRMWInst>(registerValue(std::move(NewPtr))); in createAtomicRMWInst()
/freebsd/contrib/llvm-project/clang/lib/CodeGen/
H A DCGAtomic.cpp532 llvm::AtomicRMWInst::BinOp Op = llvm::AtomicRMWInst::Add; in EmitAtomicOp()
623 Op = llvm::AtomicRMWInst::Xchg; in EmitAtomicOp()
636 Op = E->getValueType()->isFloatingType() ? llvm::AtomicRMWInst::FAdd in EmitAtomicOp()
637 : llvm::AtomicRMWInst::Add; in EmitAtomicOp()
650 Op = E->getValueType()->isFloatingType() ? llvm::AtomicRMWInst::FSub in EmitAtomicOp()
651 : llvm::AtomicRMWInst::Sub; in EmitAtomicOp()
664 ? llvm::AtomicRMWInst::FMin in EmitAtomicOp()
666 ? llvm::AtomicRMWInst::Min in EmitAtomicOp()
667 : llvm::AtomicRMWInst::UMin); in EmitAtomicOp()
680 ? llvm::AtomicRMWInst::FMax in EmitAtomicOp()
[all …]
H A DCGBuiltin.cpp294 CodeGenFunction &CGF, llvm::AtomicRMWInst::BinOp Kind, const CallExpr *E, in MakeBinaryAtomicValue()
337 llvm::AtomicRMWInst::BinOp Kind, in EmitBinaryAtomic()
346 llvm::AtomicRMWInst::BinOp Kind, in EmitBinaryAtomicPost()
545 AtomicRMWInst::Add, DestAddr, ConstantInt::get(IntTy, 1), Ordering); in EmitAtomicIncrementValue()
557 AtomicRMWInst::Sub, DestAddr, ConstantInt::get(IntTy, 1), Ordering); in EmitAtomicDecrementValue()
1736 llvm::AtomicRMWInst::BinOp RMWOp = llvm::AtomicRMWInst::Or; in EmitBitTestIntrinsic()
1739 RMWOp = llvm::AtomicRMWInst::And; in EmitBitTestIntrinsic()
1874 return MakeBinaryAtomicValue(*this, AtomicRMWInst::And, E); in EmitMSVCBuiltinExpr()
1876 return MakeBinaryAtomicValue(*this, AtomicRMWInst::Xchg, E); in EmitMSVCBuiltinExpr()
1878 return MakeBinaryAtomicValue(*this, AtomicRMWInst::Add, E); in EmitMSVCBuiltinExpr()
[all …]
/freebsd/contrib/llvm-project/clang/lib/CodeGen/TargetBuiltins/
H A DNVPTX.cpp420 return MakeBinaryAtomicValue(*this, llvm::AtomicRMWInst::Add, E); in EmitNVPTXBuiltinExpr()
425 return MakeBinaryAtomicValue(*this, llvm::AtomicRMWInst::Sub, E); in EmitNVPTXBuiltinExpr()
430 return MakeBinaryAtomicValue(*this, llvm::AtomicRMWInst::And, E); in EmitNVPTXBuiltinExpr()
435 return MakeBinaryAtomicValue(*this, llvm::AtomicRMWInst::Or, E); in EmitNVPTXBuiltinExpr()
440 return MakeBinaryAtomicValue(*this, llvm::AtomicRMWInst::Xor, E); in EmitNVPTXBuiltinExpr()
445 return MakeBinaryAtomicValue(*this, llvm::AtomicRMWInst::Xchg, E); in EmitNVPTXBuiltinExpr()
450 return MakeBinaryAtomicValue(*this, llvm::AtomicRMWInst::Max, E); in EmitNVPTXBuiltinExpr()
455 return MakeBinaryAtomicValue(*this, llvm::AtomicRMWInst::UMax, E); in EmitNVPTXBuiltinExpr()
460 return MakeBinaryAtomicValue(*this, llvm::AtomicRMWInst::Min, E); in EmitNVPTXBuiltinExpr()
465 return MakeBinaryAtomicValue(*this, llvm::AtomicRMWInst::UMin, E); in EmitNVPTXBuiltinExpr()
[all …]
/freebsd/contrib/llvm-project/llvm/include/llvm/SandboxIR/
H A DInstruction.h89 friend class AtomicRMWInst; // For getTopmostLLVMInstruction(). variable
2061 class AtomicRMWInst : public SingleLLVMInstructionImpl<llvm::AtomicRMWInst> {
2062 AtomicRMWInst(llvm::AtomicRMWInst *Atomic, Context &Ctx) in AtomicRMWInst() function
2069 using BinOp = llvm::AtomicRMWInst::BinOp;
2071 return cast<llvm::AtomicRMWInst>(Val)->getOperation(); in getOperation()
2074 return llvm::AtomicRMWInst::getOperationName(Op); in getOperationName()
2077 return llvm::AtomicRMWInst::isFPOperation(Op); in isFPOperation()
2080 cast<llvm::AtomicRMWInst>(Val)->setOperation(Op); in setOperation()
2082 Align getAlign() const { return cast<llvm::AtomicRMWInst>(Val)->getAlign(); } in getAlign()
2085 return cast<llvm::AtomicRMWInst>(Val)->isVolatile(); in isVolatile()
[all …]
H A DContext.h219 LLVM_ABI AtomicRMWInst *createAtomicRMWInst(llvm::AtomicRMWInst *I);
220 friend AtomicRMWInst; // For createAtomicRMWInst()
/freebsd/contrib/llvm-project/llvm/lib/Frontend/OpenMP/
H A DOMPIRBuilder.cpp8965 Value *Expr, AtomicOrdering AO, AtomicRMWInst::BinOp RMWOp, in createAtomicUpdate()
8979 assert((RMWOp != AtomicRMWInst::Max) && (RMWOp != AtomicRMWInst::Min) && in createAtomicUpdate()
8980 (RMWOp != AtomicRMWInst::UMax) && (RMWOp != AtomicRMWInst::UMin) && in createAtomicUpdate()
8995 AtomicRMWInst::BinOp RMWOp) { in emitRMWOpAsInstruction()
8997 case AtomicRMWInst::Add: in emitRMWOpAsInstruction()
8999 case AtomicRMWInst::Sub: in emitRMWOpAsInstruction()
9001 case AtomicRMWInst::And: in emitRMWOpAsInstruction()
9003 case AtomicRMWInst::Nand: in emitRMWOpAsInstruction()
9005 case AtomicRMWInst::Or: in emitRMWOpAsInstruction()
9007 case AtomicRMWInst::Xor: in emitRMWOpAsInstruction()
[all …]
/freebsd/contrib/llvm-project/llvm/lib/Target/DirectX/DXILWriter/
H A DDXILBitcodeWriter.cpp165 static unsigned getEncodedRMWOperation(AtomicRMWInst::BinOp Op);
551 unsigned DXILBitcodeWriter::getEncodedRMWOperation(AtomicRMWInst::BinOp Op) { in getEncodedRMWOperation()
555 case AtomicRMWInst::Xchg: in getEncodedRMWOperation()
557 case AtomicRMWInst::Add: in getEncodedRMWOperation()
559 case AtomicRMWInst::Sub: in getEncodedRMWOperation()
561 case AtomicRMWInst::And: in getEncodedRMWOperation()
563 case AtomicRMWInst::Nand: in getEncodedRMWOperation()
565 case AtomicRMWInst::Or: in getEncodedRMWOperation()
567 case AtomicRMWInst::Xor: in getEncodedRMWOperation()
569 case AtomicRMWInst::Max: in getEncodedRMWOperation()
[all …]
/freebsd/contrib/llvm-project/llvm/lib/CodeGen/GlobalISel/
H A DIRTranslator.cpp278 if (const AtomicRMWInst *AI = dyn_cast<AtomicRMWInst>(&I)) in getMemOpAlign()
3383 const AtomicRMWInst &I = cast<AtomicRMWInst>(U); in translateAtomicRMW()
3394 case AtomicRMWInst::Xchg: in translateAtomicRMW()
3397 case AtomicRMWInst::Add: in translateAtomicRMW()
3400 case AtomicRMWInst::Sub: in translateAtomicRMW()
3403 case AtomicRMWInst::And: in translateAtomicRMW()
3406 case AtomicRMWInst::Nand: in translateAtomicRMW()
3409 case AtomicRMWInst::Or: in translateAtomicRMW()
3412 case AtomicRMWInst::Xor: in translateAtomicRMW()
3415 case AtomicRMWInst::Max: in translateAtomicRMW()
[all …]

12345