|
LLVM 23.0.0git
|
#include "DXILResourceAccess.h"#include "DirectX.h"#include "llvm/ADT/SetVector.h"#include "llvm/Analysis/DXILResource.h"#include "llvm/Frontend/HLSL/HLSLResource.h"#include "llvm/IR/BasicBlock.h"#include "llvm/IR/DiagnosticInfo.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/LLVMContext.h"#include "llvm/IR/User.h"#include "llvm/InitializePasses.h"#include "llvm/Support/FormatVariadic.h"#include "llvm/Transforms/Utils/ValueMapper.h"Go to the source code of this file.
Macros | |
| #define | DEBUG_TYPE "dxil-resource-access" |
Variables | |
| static const std::array< Intrinsic::ID, 2 > | HandleIntrins |
| DEBUG_TYPE | |
| DXIL Resource | Access |
| DXIL Resource | false |
| #define DEBUG_TYPE "dxil-resource-access" |
Definition at line 29 of file DXILResourceAccess.cpp.
|
static |
Definition at line 458 of file DXILResourceAccess.cpp.
References llvm::dyn_cast(), llvm::SmallVectorTemplateCommon< T, typename >::empty(), HandleIntrins, II, llvm::is_contained(), llvm::SmallVectorImpl< T >::pop_back_val(), llvm::SmallVectorTemplateBase< T, bool >::push_back(), Select, and X.
Referenced by legalizeResourceHandles().
|
static |
Definition at line 306 of file DXILResourceAccess.cpp.
References assert(), llvm::cast(), llvm::hlsl::CBufferRowSizeInBytes, DL, llvm::dyn_cast(), E(), llvm::formatv(), llvm::PoisonValue::get(), llvm::Instruction::getDataLayout(), llvm::Value::getName(), llvm::LoadInst::getPointerOperand(), llvm::Value::getType(), llvm::APInt::getZExtValue(), llvm::ConstantInt::getZExtValue(), I, II, llvm::isa(), llvm::SmallVectorTemplateBase< T, bool >::push_back(), llvm::Value::replaceAllUsesWith(), llvm::SmallVectorTemplateCommon< T, typename >::size(), traverseGEPOffsets(), llvm::APInt::udiv(), and llvm::APInt::udivrem().
Referenced by createLoadIntrinsic().
|
static |
Definition at line 411 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::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().
|
static |
Definition at line 237 of file DXILResourceAccess.cpp.
References assert(), DL, llvm::dyn_cast(), llvm::PoisonValue::get(), llvm::StructType::get(), llvm::Instruction::getDataLayout(), llvm::Type::getInt1Ty(), llvm::LoadInst::getPointerOperand(), llvm::Value::getType(), II, llvm::Type::isAggregateType(), llvm::dxil::ResourceTypeInfo::isStruct(), llvm::Offset, llvm::Value::replaceAllUsesWith(), and traverseGEPOffsets().
Referenced by createLoadIntrinsic().
|
static |
Definition at line 145 of file DXILResourceAccess.cpp.
References assert(), DL, llvm::dyn_cast(), llvm::PoisonValue::get(), II, llvm::dxil::ResourceTypeInfo::isStruct(), llvm::Offset, and traverseGEPOffsets().
Referenced by createStoreIntrinsic().
|
static |
Definition at line 175 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::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 207 of file DXILResourceAccess.cpp.
References DL, llvm::dyn_cast(), llvm::PoisonValue::get(), llvm::StructType::get(), llvm::Instruction::getDataLayout(), llvm::dxil::ResourceTypeInfo::getHandleTy(), llvm::Type::getInt1Ty(), llvm::LoadInst::getPointerOperand(), llvm::Type::getScalarType(), llvm::Value::getType(), llvm::TargetExtType::getTypeParameter(), II, llvm::isa(), llvm::Offset, llvm::Value::replaceAllUsesWith(), and traverseGEPOffsets().
Referenced by createLoadIntrinsic().
|
static |
Definition at line 110 of file DXILResourceAccess.cpp.
References assert(), DL, llvm::StructType::get(), llvm::dxil::ResourceTypeInfo::getHandleTy(), llvm::Type::getInt1Ty(), llvm::Type::getScalarType(), llvm::TargetExtType::getTypeParameter(), II, llvm_unreachable, llvm::Offset, and traverseGEPOffsets().
Referenced by createStoreIntrinsic().
|
static |
Definition at line 33 of file DXILResourceAccess.cpp.
References llvm::DS_Note, and I.
Referenced by legalizeResourceHandles().
|
static |
Definition at line 521 of file DXILResourceAccess.cpp.
References llvm::PHINode::addIncoming(), assert(), llvm::PHINode::Create(), llvm::dyn_cast(), getAccessIndices(), HandleIntrins, I, II, llvm::SetVector< T, Vector, Set, N >::insert(), llvm::is_contained(), llvm_unreachable, and Select.
Referenced by getAccessIndices(), and replaceHandleWithIndices().
|
static |
Definition at line 488 of file DXILResourceAccess.cpp.
References assert(), llvm::cast(), llvm::CallBase::getArgOperand(), llvm::IntrinsicInst::getIntrinsicID(), llvm::Value::getType(), HandleIntrins, llvm::is_contained(), and Size.
Referenced by legalizeResourceHandles().
|
static |
Definition at line 444 of file DXILResourceAccess.cpp.
References llvm::dyn_cast().
Referenced by legalizeResourceHandles().
| INITIALIZE_PASS_BEGIN | ( | DXILResourceAccessLegacy | , |
| DEBUG_TYPE | , | ||
| "DXIL Resource Access" | , | ||
| false | , | ||
| false | ) |
References DEBUG_TYPE, and INITIALIZE_PASS_DEPENDENCY.
|
static |
Definition at line 625 of file DXILResourceAccess.cpp.
References B(), collectUsedHandles(), diagnoseNonUniqueResourceAccess(), F, getHandleIntrinsicBinding(), getStoreLoadPointerOperand(), I, llvm::make_early_inc_range(), replaceHandleWithIndices(), llvm::reverse(), and llvm::SmallVectorTemplateCommon< T, typename >::size().
Referenced by llvm::DXILResourceAccess::run().
|
static |
Definition at line 662 of file DXILResourceAccess.cpp.
References assert(), llvm::SmallVectorTemplateCommon< T, typename >::back(), createLoadIntrinsic(), createStoreIntrinsic(), llvm::Dead, llvm::dyn_cast(), llvm::SmallVectorTemplateCommon< T, typename >::empty(), GEP, II, llvm_unreachable, llvm::SmallVectorTemplateBase< T, bool >::pop_back(), llvm::SmallVectorTemplateBase< T, bool >::push_back(), and llvm::reverse().
Referenced by transformResourcePointers().
|
static |
Definition at line 596 of file DXILResourceAccess.cpp.
References assert(), llvm::cast(), llvm::Instruction::clone(), getAccessIndices(), llvm::Value::getType(), llvm::SetVector< T, Vector, Set, N >::insert(), llvm::Value::replaceAllUsesWith(), and llvm::CallBase::setArgOperand().
Referenced by legalizeResourceHandles().
|
static |
Definition at line 695 of file DXILResourceAccess.cpp.
References llvm::cast(), llvm::dyn_cast(), llvm::SmallVectorImpl< T >::emplace_back(), llvm::SmallVectorTemplateCommon< T, typename >::empty(), F, I, II, llvm::make_early_inc_range(), and replaceAccess().
Referenced by llvm::DXILResourceAccess::run().
|
static |
Definition at line 53 of file DXILResourceAccess.cpp.
References assert(), llvm::cast(), DL, llvm::dyn_cast(), GEP, II, llvm_unreachable, and llvm::Offset.
Referenced by createCBufferLoad(), createRawLoad(), createRawStore(), createTypedBufferLoad(), and createTypedBufferStore().
| DXIL Resource Access |
Definition at line 755 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(), llvm::logicalview::LVElement::setAccessibilityCode(), llvm::logicalview::LVElement::setAccessibilityCode(), llvm::codeview::StaticDataMemberRecord::StaticDataMemberRecord(), and llvm::codeview::VirtualBaseClassRecord::VirtualBaseClassRecord().
| DEBUG_TYPE |
Definition at line 754 of file DXILResourceAccess.cpp.
| DXIL Resource false |
Definition at line 755 of file DXILResourceAccess.cpp.
|
static |
Definition at line 453 of file DXILResourceAccess.cpp.
Referenced by collectUsedHandles(), getAccessIndices(), and getHandleIntrinsicBinding().