LLVM 22.0.0git
|
#include "DXILResourceAccess.h"
#include "DirectX.h"
#include "llvm/ADT/SetVector.h"
#include "llvm/Analysis/DXILResource.h"
#include "llvm/IR/BasicBlock.h"
#include "llvm/IR/Dominators.h"
#include "llvm/IR/IRBuilder.h"
#include "llvm/IR/Instruction.h"
#include "llvm/IR/Instructions.h"
#include "llvm/IR/IntrinsicInst.h"
#include "llvm/IR/Intrinsics.h"
#include "llvm/IR/IntrinsicsDirectX.h"
#include "llvm/IR/User.h"
#include "llvm/InitializePasses.h"
#include "llvm/Transforms/Utils/ValueMapper.h"
Go to the source code of this file.
Macros | |
#define | DEBUG_TYPE "dxil-resource-access" |
Variables | |
DEBUG_TYPE | |
DXIL Resource | Access |
DXIL Resource | false |
#define DEBUG_TYPE "dxil-resource-access" |
Definition at line 25 of file DXILResourceAccess.cpp.
|
static |
Definition at line 29 of file DXILResourceAccess.cpp.
References assert(), llvm::cast(), DL, GEP, llvm::dxil::ResourceTypeInfo::getHandleTy(), llvm::Type::getInt32Ty(), llvm::Type::getScalarType(), llvm::TargetExtType::getTypeParameter(), llvm::dxil::ResourceTypeInfo::isTyped(), llvm::Offset, Scaled, and llvm::APInt::udiv().
Referenced by replaceAccess().
|
static |
Definition at line 206 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().
|
static |
Definition at line 174 of file DXILResourceAccess.cpp.
References llvm::dxil::CBuffer, 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::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().
|
static |
Definition at line 160 of file DXILResourceAccess.cpp.
References llvm::StructType::get(), llvm::Type::getInt1Ty(), llvm::Value::getType(), II, llvm::Offset, and llvm::Value::replaceAllUsesWith().
Referenced by createLoadIntrinsic().
|
static |
Definition at line 91 of file DXILResourceAccess.cpp.
References II, and llvm::Offset.
Referenced by createStoreIntrinsic().
|
static |
Definition at line 104 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().
|
static |
Definition at line 136 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().
|
static |
Definition at line 59 of file DXILResourceAccess.cpp.
References assert(), llvm::StructType::get(), llvm::dxil::ResourceTypeInfo::getHandleTy(), llvm::Type::getInt1Ty(), llvm::Type::getScalarType(), llvm::TargetExtType::getTypeParameter(), II, llvm_unreachable, llvm::Offset, and Struct.
Referenced by createStoreIntrinsic().
INITIALIZE_PASS_BEGIN | ( | DXILResourceAccessLegacy | , |
DEBUG_TYPE | , | ||
"DXIL Resource Access" | , | ||
false | , | ||
false | ) |
References DEBUG_TYPE, and INITIALIZE_PASS_DEPENDENCY.
|
static |
Definition at line 254 of file DXILResourceAccess.cpp.
References llvm::BasicBlock::back(), llvm::dyn_cast(), I, llvm::RemapInstruction(), llvm::RF_IgnoreMissingLocals, and llvm::RF_NoModuleLevelChanges.
Referenced by phiNodeReplacement().
|
static |
Definition at line 276 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().
|
static |
Definition at line 312 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().
|
static |
Definition at line 353 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().
DXIL Resource Access |
Definition at line 424 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 |
Definition at line 423 of file DXILResourceAccess.cpp.
DXIL Resource false |
Definition at line 424 of file DXILResourceAccess.cpp.