LLVM: llvm::AtomicInfo Class Reference (original) (raw)

#include "[llvm/Frontend/Atomic/Atomic.h](Frontend%5F2Atomic%5F2Atomic%5F8h%5Fsource.html)"

Public Member Functions
AtomicInfo (IRBuilderBase *Builder, Type *Ty, uint64_t AtomicSizeInBits, uint64_t ValueSizeInBits, Align AtomicAlign, Align ValueAlign, bool UseLibcall, IRBuilderBase::InsertPoint AllocaIP)
virtual ~AtomicInfo ()=default
Align getAtomicAlignment () const
uint64_t getAtomicSizeInBits () const
uint64_t getValueSizeInBits () const
bool shouldUseLibcall () const
Type * getAtomicTy () const
virtual Value * getAtomicPointer () const =0
virtual void decorateWithTBAA (Instruction *I)=0
virtual AllocaInst * CreateAlloca (Type *Ty, const Twine &Name) const =0
bool hasPadding () const
LLVMContext & getLLVMContext () const
LLVM_ABI bool shouldCastToInt (Type *ValTy, bool CmpXchg)
LLVM_ABI Value * EmitAtomicLoadOp (AtomicOrdering AO, bool IsVolatile, bool CmpXchg=false)
LLVM_ABI CallInst * EmitAtomicLibcall (StringRef fnName, Type *ResultType, ArrayRef< Value * > Args)
Value * getAtomicSizeValue () const
LLVM_ABI std::pair< Value *, Value * > EmitAtomicCompareExchangeLibcall (Value *ExpectedVal, Value *DesiredVal, AtomicOrdering Success, AtomicOrdering Failure)
Value * castToAtomicIntPointer (Value *addr) const
Value * getAtomicAddressAsAtomicIntPointer () const
LLVM_ABI std::pair< Value *, Value * > EmitAtomicCompareExchangeOp (Value *ExpectedVal, Value *DesiredVal, AtomicOrdering Success, AtomicOrdering Failure, bool IsVolatile=false, bool IsWeak=false)
LLVM_ABI std::pair< Value *, Value * > EmitAtomicCompareExchange (Value *ExpectedVal, Value *DesiredVal, AtomicOrdering Success, AtomicOrdering Failure, bool IsVolatile, bool IsWeak)
LLVM_ABI std::pair< LoadInst *, AllocaInst * > EmitAtomicLoadLibcall (AtomicOrdering AO)
LLVM_ABI void EmitAtomicStoreLibcall (AtomicOrdering AO, Value *Source)
Protected Attributes
IRBuilderBase * Builder
Type * Ty
uint64_t AtomicSizeInBits
uint64_t ValueSizeInBits
Align AtomicAlign
Align ValueAlign
bool UseLibcall
IRBuilderBase::InsertPoint AllocaIP

Definition at line 17 of file Atomic.h.

~AtomicInfo()

virtual llvm::AtomicInfo::~AtomicInfo ( ) virtualdefault

castToAtomicIntPointer()

Value * llvm::AtomicInfo::castToAtomicIntPointer ( Value * addr) const inline

CreateAlloca()

decorateWithTBAA()

virtual void llvm::AtomicInfo::decorateWithTBAA ( Instruction * I) pure virtual

EmitAtomicCompareExchange()

EmitAtomicCompareExchangeLibcall()

EmitAtomicCompareExchangeOp()

EmitAtomicLibcall()

EmitAtomicLoadLibcall()

Definition at line 107 of file Atomic.cpp.

References AllocaIP, Builder, Call, CreateAlloca(), DL, llvm::FunctionType::get(), getAtomicPointer(), getAtomicSizeInBits(), llvm::Type::getInt32Ty(), llvm::Type::getIntNTy(), getLLVMContext(), getName(), llvm::PointerType::getUnqual(), llvm::Type::getVoidTy(), llvm::SmallVectorTemplateBase< T, bool >::push_back(), llvm::AllocaInst::setAlignment(), llvm::toCABI(), and Ty.

EmitAtomicLoadOp()

EmitAtomicStoreLibcall()

Definition at line 148 of file Atomic.cpp.

References AllocaIP, Builder, Call, DL, llvm::FunctionType::get(), getAtomicPointer(), llvm::Type::getInt32Ty(), getLLVMContext(), llvm::PointerType::getUnqual(), llvm::Type::getVoidTy(), llvm::SmallVectorTemplateBase< T, bool >::push_back(), and llvm::toCABI().

getAtomicAddressAsAtomicIntPointer()

Value * llvm::AtomicInfo::getAtomicAddressAsAtomicIntPointer ( ) const inline

getAtomicAlignment()

Align llvm::AtomicInfo::getAtomicAlignment ( ) const inline

getAtomicPointer()

virtual Value * llvm::AtomicInfo::getAtomicPointer ( ) const pure virtual

getAtomicSizeInBits()

uint64_t llvm::AtomicInfo::getAtomicSizeInBits ( ) const inline

getAtomicSizeValue()

Value * llvm::AtomicInfo::getAtomicSizeValue ( ) const inline

getAtomicTy()

Type * llvm::AtomicInfo::getAtomicTy ( ) const inline

getLLVMContext()

LLVMContext & llvm::AtomicInfo::getLLVMContext ( ) const inline

getValueSizeInBits()

uint64_t llvm::AtomicInfo::getValueSizeInBits ( ) const inline

hasPadding()

bool llvm::AtomicInfo::hasPadding ( ) const inline

shouldCastToInt()

bool AtomicInfo::shouldCastToInt ( Type * ValTy,
bool CmpXchg )

shouldUseLibcall()

bool llvm::AtomicInfo::shouldUseLibcall ( ) const inline

AllocaIP

AtomicAlign

Align llvm::AtomicInfo::AtomicAlign protected

AtomicSizeInBits

uint64_t llvm::AtomicInfo::AtomicSizeInBits protected

Builder

Ty

Type* llvm::AtomicInfo::Ty protected

UseLibcall

bool llvm::AtomicInfo::UseLibcall protected

ValueAlign

Align llvm::AtomicInfo::ValueAlign protected

ValueSizeInBits

uint64_t llvm::AtomicInfo::ValueSizeInBits protected

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