LLVM 20.0.0git
Public Member Functions | Static Public Member Functions | Public Attributes | List of all members
llvm::AtomicInfo< IRBuilderTy > Struct Template Referenceabstract

#include "llvm/Frontend/Atomic/Atomic.h"

Inheritance diagram for llvm::AtomicInfo< IRBuilderTy >:
Inheritance graph
[legend]

Public Member Functions

 AtomicInfo (IRBuilderTy *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)
 

Static Public Member Functions

static bool shouldCastToInt (llvm::Type *ValTy, bool CmpXchg)
 
static CallInstEmitAtomicLibcall (IRBuilderTy *Builder, StringRef fnName, Type *ResultType, ArrayRef< Value * > Args)
 

Public Attributes

IRBuilderTy * Builder
 
TypeTy
 
uint64_t AtomicSizeInBits
 
uint64_t ValueSizeInBits
 
llvm::Align AtomicAlign
 
llvm::Align ValueAlign
 
bool UseLibcall
 

Detailed Description

template<typename IRBuilderTy>
struct llvm::AtomicInfo< IRBuilderTy >

Definition at line 23 of file Atomic.h.

Constructor & Destructor Documentation

◆ AtomicInfo()

template<typename IRBuilderTy >
llvm::AtomicInfo< IRBuilderTy >::AtomicInfo ( IRBuilderTy *  Builder,
Type Ty,
uint64_t  AtomicSizeInBits,
uint64_t  ValueSizeInBits,
llvm::Align  AtomicAlign,
llvm::Align  ValueAlign,
bool  UseLibcall 
)
inline

Definition at line 34 of file Atomic.h.

◆ ~AtomicInfo()

template<typename IRBuilderTy >
virtual llvm::AtomicInfo< IRBuilderTy >::~AtomicInfo ( )
virtualdefault

Member Function Documentation

◆ castToAtomicIntPointer()

template<typename IRBuilderTy >
Value * llvm::AtomicInfo< IRBuilderTy >::castToAtomicIntPointer ( Value addr) const
inline

◆ CreateAlloca()

template<typename IRBuilderTy >
virtual llvm::AllocaInst * llvm::AtomicInfo< IRBuilderTy >::CreateAlloca ( llvm::Type Ty,
const llvm::Twine Name 
) const
pure virtual

◆ decorateWithTBAA()

template<typename IRBuilderTy >
virtual void llvm::AtomicInfo< IRBuilderTy >::decorateWithTBAA ( Instruction I)
pure virtual

◆ EmitAtomicCompareExchange()

template<typename IRBuilderTy >
std::pair< llvm::Value *, llvm::Value * > llvm::AtomicInfo< IRBuilderTy >::EmitAtomicCompareExchange ( llvm::Value ExpectedVal,
llvm::Value DesiredVal,
llvm::AtomicOrdering  Success,
llvm::AtomicOrdering  Failure,
bool  IsVolatile,
bool  IsWeak 
)
inline

◆ EmitAtomicCompareExchangeLibcall()

template<typename IRBuilderTy >
std::pair< llvm::Value *, llvm::Value * > llvm::AtomicInfo< IRBuilderTy >::EmitAtomicCompareExchangeLibcall ( llvm::Value ExpectedVal,
llvm::Value DesiredVal,
llvm::AtomicOrdering  Success,
llvm::AtomicOrdering  Failure 
)
inline

◆ EmitAtomicCompareExchangeOp()

template<typename IRBuilderTy >
std::pair< llvm::Value *, llvm::Value * > llvm::AtomicInfo< IRBuilderTy >::EmitAtomicCompareExchangeOp ( llvm::Value ExpectedVal,
llvm::Value DesiredVal,
llvm::AtomicOrdering  Success,
llvm::AtomicOrdering  Failure,
bool  IsVolatile = false,
bool  IsWeak = false 
)
inline

◆ EmitAtomicLibcall()

template<typename IRBuilderTy >
static CallInst * llvm::AtomicInfo< IRBuilderTy >::EmitAtomicLibcall ( IRBuilderTy *  Builder,
StringRef  fnName,
Type ResultType,
ArrayRef< Value * >  Args 
)
inlinestatic

◆ EmitAtomicLoadLibcall()

template<typename IRBuilderTy >
std::pair< llvm::LoadInst *, llvm::AllocaInst * > llvm::AtomicInfo< IRBuilderTy >::EmitAtomicLoadLibcall ( llvm::AtomicOrdering  AO)
inline

◆ EmitAtomicLoadOp()

template<typename IRBuilderTy >
llvm::Value * llvm::AtomicInfo< IRBuilderTy >::EmitAtomicLoadOp ( llvm::AtomicOrdering  AO,
bool  IsVolatile,
bool  CmpXchg = false 
)
inline

◆ getAtomicAddressAsAtomicIntPointer()

template<typename IRBuilderTy >
Value * llvm::AtomicInfo< IRBuilderTy >::getAtomicAddressAsAtomicIntPointer ( ) const
inline

◆ getAtomicAlignment()

template<typename IRBuilderTy >
llvm::Align llvm::AtomicInfo< IRBuilderTy >::getAtomicAlignment ( ) const
inline

◆ getAtomicPointer()

template<typename IRBuilderTy >
virtual llvm::Value * llvm::AtomicInfo< IRBuilderTy >::getAtomicPointer ( ) const
pure virtual

◆ getAtomicSizeInBits()

template<typename IRBuilderTy >
uint64_t llvm::AtomicInfo< IRBuilderTy >::getAtomicSizeInBits ( ) const
inline

◆ getAtomicSizeValue()

template<typename IRBuilderTy >
llvm::Value * llvm::AtomicInfo< IRBuilderTy >::getAtomicSizeValue ( ) const
inline

◆ getAtomicTy()

template<typename IRBuilderTy >
llvm::Type * llvm::AtomicInfo< IRBuilderTy >::getAtomicTy ( ) const
inline

Definition at line 47 of file Atomic.h.

References llvm::AtomicInfo< IRBuilderTy >::Ty.

◆ getLLVMContext()

template<typename IRBuilderTy >
LLVMContext & llvm::AtomicInfo< IRBuilderTy >::getLLVMContext ( ) const
inline

◆ getValueSizeInBits()

template<typename IRBuilderTy >
uint64_t llvm::AtomicInfo< IRBuilderTy >::getValueSizeInBits ( ) const
inline

Definition at line 45 of file Atomic.h.

References llvm::AtomicInfo< IRBuilderTy >::ValueSizeInBits.

◆ hasPadding()

template<typename IRBuilderTy >
bool llvm::AtomicInfo< IRBuilderTy >::hasPadding ( ) const
inline

◆ shouldCastToInt()

template<typename IRBuilderTy >
static bool llvm::AtomicInfo< IRBuilderTy >::shouldCastToInt ( llvm::Type ValTy,
bool  CmpXchg 
)
inlinestatic

◆ shouldUseLibcall()

template<typename IRBuilderTy >
bool llvm::AtomicInfo< IRBuilderTy >::shouldUseLibcall ( ) const
inline

Member Data Documentation

◆ AtomicAlign

template<typename IRBuilderTy >
llvm::Align llvm::AtomicInfo< IRBuilderTy >::AtomicAlign

◆ AtomicSizeInBits

template<typename IRBuilderTy >
uint64_t llvm::AtomicInfo< IRBuilderTy >::AtomicSizeInBits

◆ Builder

template<typename IRBuilderTy >
IRBuilderTy* llvm::AtomicInfo< IRBuilderTy >::Builder

◆ Ty

template<typename IRBuilderTy >
Type* llvm::AtomicInfo< IRBuilderTy >::Ty

◆ UseLibcall

template<typename IRBuilderTy >
bool llvm::AtomicInfo< IRBuilderTy >::UseLibcall

Definition at line 31 of file Atomic.h.

Referenced by llvm::AtomicInfo< IRBuilderTy >::shouldUseLibcall().

◆ ValueAlign

template<typename IRBuilderTy >
llvm::Align llvm::AtomicInfo< IRBuilderTy >::ValueAlign

Definition at line 30 of file Atomic.h.

◆ ValueSizeInBits

template<typename IRBuilderTy >
uint64_t llvm::AtomicInfo< IRBuilderTy >::ValueSizeInBits

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