LLVM: lib/Target/DirectX/DXILResourceAccess.cpp File Reference (original) (raw)

Go to the source code of this file.

Macros
#define DEBUG_TYPE "dxil-resource-access"
Functions
static Value * calculateGEPOffset (GetElementPtrInst *GEP, Value *PrevOffset, dxil::ResourceTypeInfo &RTI)
static void createTypedBufferStore (IntrinsicInst *II, StoreInst *SI, Value *Offset, dxil::ResourceTypeInfo &RTI)
static void createRawStore (IntrinsicInst *II, StoreInst *SI, Value *Offset)
static void createStoreIntrinsic (IntrinsicInst *II, StoreInst *SI, Value *Offset, dxil::ResourceTypeInfo &RTI)
static void createTypedBufferLoad (IntrinsicInst *II, LoadInst *LI, Value *Offset, dxil::ResourceTypeInfo &RTI)
static void createRawLoad (IntrinsicInst *II, LoadInst *LI, Value *Offset)
static void createCBufferLoad (IntrinsicInst *II, LoadInst *LI, Value *Offset, dxil::ResourceTypeInfo &RTI)
static void createLoadIntrinsic (IntrinsicInst *II, LoadInst *LI, Value *Offset, dxil::ResourceTypeInfo &RTI)
static SmallVector< Instruction * > collectBlockUseDef (Instruction *Start)
static void phiNodeRemapHelper (PHINode *Phi, BasicBlock *BB, IRBuilder<> &Builder, SmallVector< Instruction * > &UsesInBlock)
static void phiNodeReplacement (IntrinsicInst *II, SmallVectorImpl< Instruction * > &PrevBBDeadInsts, SetVector< BasicBlock * > &DeadBB)
static void replaceAccess (IntrinsicInst *II, dxil::ResourceTypeInfo &RTI)
static bool transformResourcePointers (Function &F, DXILResourceTypeMap &DRTM)
INITIALIZE_PASS_BEGIN (DXILResourceAccessLegacy, DEBUG_TYPE, "DXIL Resource Access", false, false) INITIALIZE_PASS_END(DXILResourceAccessLegacy
Variables
DEBUG_TYPE
DXIL Resource Access
DXIL Resource false

DEBUG_TYPE

#define DEBUG_TYPE "dxil-resource-access"

calculateGEPOffset()

Definition at line 31 of file DXILResourceAccess.cpp.

References assert(), llvm::cast(), DL, GEP, llvm::dxil::ResourceTypeInfo::getHandleTy(), llvm::Type::getScalarType(), llvm::TargetExtType::getTypeParameter(), llvm::dxil::ResourceTypeInfo::isTyped(), llvm_unreachable, llvm::Offset, Scaled, and llvm::APInt::udiv().

Referenced by replaceAccess().

collectBlockUseDef()

Definition at line 342 of file DXILResourceAccess.cpp.

References A(), B(), llvm::dyn_cast(), llvm::SmallVectorTemplateCommon< T, typename >::empty(), I, llvm::SmallPtrSetImpl< PtrType >::insert(), llvm::DenseMapBase< DerivedT, KeyT, ValueT, KeyInfoT, BucketT >::lookup(), llvm::SmallVectorImpl< T >::pop_back_val(), llvm::SmallVectorTemplateBase< T, bool >::push_back(), and llvm::sort().

Referenced by phiNodeReplacement().

createCBufferLoad()

Definition at line 225 of file DXILResourceAccess.cpp.

References assert(), llvm::hlsl::CBufferRowSizeInBytes, DL, llvm::dyn_cast(), llvm::dyn_cast_if_present(), E(), llvm::formatv(), llvm::PoisonValue::get(), llvm::Instruction::getDataLayout(), llvm::Value::getName(), llvm::Value::getType(), llvm::ConstantInt::getZExtValue(), I, II, llvm::isa(), llvm::Offset, llvm::SmallVectorTemplateBase< T, bool >::push_back(), llvm::Value::replaceAllUsesWith(), and llvm::SmallVectorTemplateCommon< T, typename >::size().

Referenced by createLoadIntrinsic().

createLoadIntrinsic()

Definition at line 309 of file DXILResourceAccess.cpp.

References llvm::dxil::CBuffer, createCBufferLoad(), createRawLoad(), createTypedBufferLoad(), llvm::dxil::FeedbackTexture2D, llvm::dxil::FeedbackTexture2DArray, llvm::dxil::ResourceTypeInfo::getResourceKind(), II, llvm::dxil::Invalid, llvm_unreachable, llvm::dxil::NumEntries, llvm::Offset, llvm::dxil::RawBuffer, llvm::reportFatalUsageError(), llvm::dxil::RTAccelerationStructure, llvm::dxil::Sampler, llvm::dxil::StructuredBuffer, llvm::dxil::TBuffer, llvm::dxil::Texture1D, llvm::dxil::Texture1DArray, llvm::dxil::Texture2D, llvm::dxil::Texture2DArray, llvm::dxil::Texture2DMS, llvm::dxil::Texture2DMSArray, llvm::dxil::Texture3D, llvm::dxil::TextureCube, llvm::dxil::TextureCubeArray, and llvm::dxil::TypedBuffer.

Referenced by llvm::ARMTargetLowering::lowerInterleavedLoad(), and replaceAccess().

createRawLoad()

createRawStore()

createStoreIntrinsic()

Definition at line 118 of file DXILResourceAccess.cpp.

References llvm::dxil::CBuffer, createRawStore(), createTypedBufferStore(), llvm::dxil::FeedbackTexture2D, llvm::dxil::FeedbackTexture2DArray, llvm::dxil::ResourceTypeInfo::getResourceKind(), II, llvm::dxil::Invalid, llvm_unreachable, llvm::dxil::NumEntries, llvm::Offset, llvm::dxil::RawBuffer, llvm::reportFatalUsageError(), llvm::dxil::RTAccelerationStructure, llvm::dxil::Sampler, llvm::dxil::StructuredBuffer, llvm::dxil::TBuffer, llvm::dxil::Texture1D, llvm::dxil::Texture1DArray, llvm::dxil::Texture2D, llvm::dxil::Texture2DArray, llvm::dxil::Texture2DMS, llvm::dxil::Texture2DMSArray, llvm::dxil::Texture3D, llvm::dxil::TextureCube, llvm::dxil::TextureCubeArray, and llvm::dxil::TypedBuffer.

Referenced by llvm::ARMTargetLowering::lowerInterleavedStore(), and replaceAccess().

createTypedBufferLoad()

Definition at line 150 of file DXILResourceAccess.cpp.

References llvm::dyn_cast(), llvm::PoisonValue::get(), llvm::StructType::get(), llvm::dxil::ResourceTypeInfo::getHandleTy(), llvm::Type::getInt1Ty(), llvm::Value::getType(), llvm::TargetExtType::getTypeParameter(), II, llvm::isa(), llvm::Offset, and llvm::Value::replaceAllUsesWith().

Referenced by createLoadIntrinsic().

createTypedBufferStore()

INITIALIZE_PASS_BEGIN()

INITIALIZE_PASS_BEGIN ( DXILResourceAccessLegacy ,
DEBUG_TYPE ,
"DXIL Resource Access" ,
false ,
false )

phiNodeRemapHelper()

phiNodeReplacement()

Definition at line 412 of file DXILResourceAccess.cpp.

References llvm::SmallVectorTemplateCommon< T, typename >::back(), llvm::SmallVectorImpl< T >::clear(), collectBlockUseDef(), llvm::dyn_cast(), E(), I, II, llvm::SetVector< T, Vector, Set, N >::insert(), llvm::isa(), phiNodeRemapHelper(), llvm::SmallVectorTemplateBase< T, bool >::push_back(), and llvm::reverse().

Referenced by transformResourcePointers().

replaceAccess()

Definition at line 448 of file DXILResourceAccess.cpp.

References Access, assert(), llvm::SmallVectorTemplateCommon< T, typename >::back(), calculateGEPOffset(), createLoadIntrinsic(), createStoreIntrinsic(), llvm::dyn_cast(), llvm::SmallVectorTemplateCommon< T, typename >::empty(), GEP, II, llvm_unreachable, llvm::Offset, llvm::SmallVectorTemplateBase< T, bool >::pop_back(), llvm::SmallVectorTemplateBase< T, bool >::push_back(), and llvm::reverse().

Referenced by transformResourcePointers().

transformResourcePointers()

Definition at line 489 of file DXILResourceAccess.cpp.

References llvm::cast(), llvm::SetVector< T, Vector, Set, N >::clear(), llvm::SmallVectorImpl< T >::clear(), llvm::dyn_cast(), llvm::SmallVectorImpl< T >::emplace_back(), llvm::SmallVectorTemplateCommon< T, typename >::empty(), F, I, II, llvm::make_early_inc_range(), phiNodeReplacement(), and replaceAccess().

Referenced by llvm::DXILResourceAccess::run().

Access

Definition at line 560 of file DXILResourceAccess.cpp.

Referenced by llvm::dwarf::AccessibilityString(), llvm::logicalview::LVElement::accessibilityString(), llvm::codeview::BaseClassRecord::BaseClassRecord(), llvm::codeview::DataMemberRecord::DataMemberRecord(), llvm::codeview::EnumeratorRecord::EnumeratorRecord(), llvm::AA::PointerInfo::State::forallInterferingAccesses(), foreachMemoryAccess(), llvm::logicalview::LVElement::getAccessibilityCode(), getFD(), llvm::MemoryDepChecker::getInstructionsForAccess(), isAllocSiteRemovable(), mayLoopAccessLocation(), mayLoopAccessLocation(), llvm::codeview::MemberAttributes::MemberAttributes(), llvm::codeview::MemberAttributes::MemberAttributes(), llvm::codeview::OneMethodRecord::OneMethodRecord(), llvm::sys::fs::openFile(), llvm::sys::fs::openNativeFile(), llvm::pdb::operator<<(), llvm::logicalview::LVLogicalVisitor::printMemberAttributes(), llvm::raw_fd_ostream::raw_fd_ostream(), llvm::raw_fd_ostream::raw_fd_ostream(), replaceAccess(), llvm::logicalview::LVElement::setAccessibilityCode(), llvm::logicalview::LVElement::setAccessibilityCode(), llvm::codeview::StaticDataMemberRecord::StaticDataMemberRecord(), and llvm::codeview::VirtualBaseClassRecord::VirtualBaseClassRecord().

DEBUG_TYPE

false