LLVM 20.0.0git
Public Member Functions | List of all members
llvm::OpenMPIRBuilder::AtomicInfo Class Reference

#include "llvm/Frontend/OpenMP/OMPIRBuilder.h"

Inheritance diagram for llvm::OpenMPIRBuilder::AtomicInfo:
Inheritance graph
[legend]

Public Member Functions

 AtomicInfo (IRBuilder<> *Builder, llvm::Type *Ty, uint64_t AtomicSizeInBits, uint64_t ValueSizeInBits, llvm::Align AtomicAlign, llvm::Align ValueAlign, bool UseLibcall, llvm::Value *AtomicVar)
 
llvm::ValuegetAtomicPointer () const override
 
void decorateWithTBAA (llvm::Instruction *I) override
 
llvm::AllocaInstCreateAlloca (llvm::Type *Ty, const llvm::Twine &Name) const override
 
- Public Member Functions inherited from llvm::AtomicInfo< IRBuilder<> >
 AtomicInfo (IRBuilder<> *Builder, Type *Ty, uint64_t AtomicSizeInBits, uint64_t ValueSizeInBits, llvm::Align AtomicAlign, llvm::Align ValueAlign, bool UseLibcall)
 
virtual ~AtomicInfo ()=default
 
llvm::Align getAtomicAlignment () const
 
uint64_t getAtomicSizeInBits () const
 
uint64_t getValueSizeInBits () const
 
bool shouldUseLibcall () const
 
llvm::TypegetAtomicTy () const
 
virtual llvm::ValuegetAtomicPointer () const=0
 
virtual void decorateWithTBAA (Instruction *I)=0
 
virtual llvm::AllocaInstCreateAlloca (llvm::Type *Ty, const llvm::Twine &Name) const=0
 
bool hasPadding () const
 
LLVMContextgetLLVMContext () const
 
llvm::ValueEmitAtomicLoadOp (llvm::AtomicOrdering AO, bool IsVolatile, bool CmpXchg=false)
 
llvm::ValuegetAtomicSizeValue () const
 
std::pair< llvm::Value *, llvm::Value * > EmitAtomicCompareExchangeLibcall (llvm::Value *ExpectedVal, llvm::Value *DesiredVal, llvm::AtomicOrdering Success, llvm::AtomicOrdering Failure)
 
ValuecastToAtomicIntPointer (Value *addr) const
 
ValuegetAtomicAddressAsAtomicIntPointer () const
 
std::pair< llvm::Value *, llvm::Value * > EmitAtomicCompareExchangeOp (llvm::Value *ExpectedVal, llvm::Value *DesiredVal, llvm::AtomicOrdering Success, llvm::AtomicOrdering Failure, bool IsVolatile=false, bool IsWeak=false)
 
std::pair< llvm::Value *, llvm::Value * > EmitAtomicCompareExchange (llvm::Value *ExpectedVal, llvm::Value *DesiredVal, llvm::AtomicOrdering Success, llvm::AtomicOrdering Failure, bool IsVolatile, bool IsWeak)
 
std::pair< llvm::LoadInst *, llvm::AllocaInst * > EmitAtomicLoadLibcall (llvm::AtomicOrdering AO)
 

Additional Inherited Members

- Static Public Member Functions inherited from llvm::AtomicInfo< IRBuilder<> >
static bool shouldCastToInt (llvm::Type *ValTy, bool CmpXchg)
 
static CallInstEmitAtomicLibcall (IRBuilder<> *Builder, StringRef fnName, Type *ResultType, ArrayRef< Value * > Args)
 
- Public Attributes inherited from llvm::AtomicInfo< IRBuilder<> >
IRBuilder<> * Builder
 
TypeTy
 
uint64_t AtomicSizeInBits
 
uint64_t ValueSizeInBits
 
llvm::Align AtomicAlign
 
llvm::Align ValueAlign
 
bool UseLibcall
 

Detailed Description

Definition at line 483 of file OMPIRBuilder.h.

Constructor & Destructor Documentation

◆ AtomicInfo()

llvm::OpenMPIRBuilder::AtomicInfo::AtomicInfo ( IRBuilder<> *  Builder,
llvm::Type Ty,
uint64_t  AtomicSizeInBits,
uint64_t  ValueSizeInBits,
llvm::Align  AtomicAlign,
llvm::Align  ValueAlign,
bool  UseLibcall,
llvm::Value AtomicVar 
)
inline

Definition at line 487 of file OMPIRBuilder.h.

Member Function Documentation

◆ CreateAlloca()

llvm::AllocaInst * llvm::OpenMPIRBuilder::AtomicInfo::CreateAlloca ( llvm::Type Ty,
const llvm::Twine Name 
) const
inlineoverridevirtual

◆ decorateWithTBAA()

void llvm::OpenMPIRBuilder::AtomicInfo::decorateWithTBAA ( llvm::Instruction I)
inlineoverridevirtual

Implements llvm::AtomicInfo< IRBuilder<> >.

Definition at line 496 of file OMPIRBuilder.h.

◆ getAtomicPointer()

llvm::Value * llvm::OpenMPIRBuilder::AtomicInfo::getAtomicPointer ( ) const
inlineoverridevirtual

Implements llvm::AtomicInfo< IRBuilder<> >.

Definition at line 495 of file OMPIRBuilder.h.


The documentation for this class was generated from the following file: