[llvm] [llvm][OpenMP][NFC] Cleanup AtomicInfo (PR #119199)
Nikita Popov via llvm-commits
llvm-commits at lists.llvm.org
Mon Dec 9 03:27:45 PST 2024
================
@@ -62,90 +63,28 @@ template <typename IRBuilderTy> struct AtomicInfo {
LLVMContext &getLLVMContext() const { return Builder->getContext(); }
- static bool shouldCastToInt(llvm::Type *ValTy, bool CmpXchg) {
- if (ValTy->isFloatingPointTy())
- return ValTy->isX86_FP80Ty() || CmpXchg;
- return !ValTy->isIntegerTy() && !ValTy->isPointerTy();
- }
+ bool shouldCastToInt(Type *ValTy, bool CmpXchg);
- llvm::Value *EmitAtomicLoadOp(llvm::AtomicOrdering AO, bool IsVolatile,
- bool CmpXchg = false) {
- Value *Ptr = getAtomicPointer();
- Type *AtomicTy = Ty;
- if (shouldCastToInt(Ty, CmpXchg))
- AtomicTy = llvm::IntegerType::get(getLLVMContext(), AtomicSizeInBits);
- LoadInst *Load =
- Builder->CreateAlignedLoad(AtomicTy, Ptr, AtomicAlign, "atomic-load");
- Load->setAtomic(AO);
- if (IsVolatile)
- Load->setVolatile(true);
- decorateWithTBAA(Load);
- return Load;
- }
+ Value *EmitAtomicLoadOp(AtomicOrdering AO, bool IsVolatile,
+ bool CmpXchg = false);
- static CallInst *EmitAtomicLibcall(IRBuilderTy *Builder, StringRef fnName,
- Type *ResultType, ArrayRef<Value *> Args) {
- LLVMContext &ctx = Builder->getContext();
- SmallVector<Type *, 6> ArgTys;
- for (Value *Arg : Args)
- ArgTys.push_back(Arg->getType());
- FunctionType *FnType = FunctionType::get(ResultType, ArgTys, false);
- Module *M = Builder->GetInsertBlock()->getModule();
-
- // TODO: Use llvm::TargetLowering for Libcall ABI
- llvm::AttrBuilder fnAttrBuilder(ctx);
- fnAttrBuilder.addAttribute(llvm::Attribute::NoUnwind);
- fnAttrBuilder.addAttribute(llvm::Attribute::WillReturn);
- llvm::AttributeList fnAttrs = llvm::AttributeList::get(
- ctx, llvm::AttributeList::FunctionIndex, fnAttrBuilder);
- FunctionCallee LibcallFn = M->getOrInsertFunction(fnName, FnType, fnAttrs);
- CallInst *Call = Builder->CreateCall(LibcallFn, Args);
- return Call;
- }
+ CallInst *EmitAtomicLibcall(IRBuilderBase *Builder, StringRef fnName,
----------------
nikic wrote:
Does this need the Builder argument if it's already part of the class?
https://github.com/llvm/llvm-project/pull/119199
More information about the llvm-commits
mailing list