LLVM 23.0.0git
DXILResourceAccess.cpp File Reference

Go to the source code of this file.

Macros

#define DEBUG_TYPE   "dxil-resource-access"

Functions

static void diagnoseNonUniqueResourceAccess (Instruction *I, ArrayRef< IntrinsicInst * > Handles)
static ValuetraverseGEPOffsets (const DataLayout &DL, IRBuilder<> &Builder, Value *Ptr, uint64_t AccessSize)
static void createTypedBufferStore (IntrinsicInst *II, StoreInst *SI, dxil::ResourceTypeInfo &RTI)
static void createRawStore (IntrinsicInst *II, StoreInst *SI, dxil::ResourceTypeInfo &RTI)
static void createStoreIntrinsic (IntrinsicInst *II, StoreInst *SI, dxil::ResourceTypeInfo &RTI)
static void createTypedBufferLoad (IntrinsicInst *II, LoadInst *LI, dxil::ResourceTypeInfo &RTI)
static void createRawLoad (IntrinsicInst *II, LoadInst *LI, dxil::ResourceTypeInfo &RTI)
static void createCBufferLoad (IntrinsicInst *II, LoadInst *LI, dxil::ResourceTypeInfo &RTI)
static void createLoadIntrinsic (IntrinsicInst *II, LoadInst *LI, dxil::ResourceTypeInfo &RTI)
static InstructiongetStoreLoadPointerOperand (Instruction *AI)
static SmallVector< IntrinsicInst * > collectUsedHandles (Value *Ptr)
static hlsl::Binding getHandleIntrinsicBinding (IntrinsicInst *Handle, DXILResourceTypeMap &DRTM)
static AccessIndices getAccessIndices (Instruction *I, SmallSetVector< Instruction *, 16 > &DeadInsts)
static void replaceHandleWithIndices (Instruction *Ptr, IntrinsicInst *OldHandle, SmallSetVector< Instruction *, 16 > &DeadInsts)
static bool legalizeResourceHandles (Function &F, DXILResourceTypeMap &DRTM)
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

static const std::array< Intrinsic::ID, 2 > HandleIntrins
 DEBUG_TYPE
DXIL Resource Access
DXIL Resource false

Macro Definition Documentation

◆ DEBUG_TYPE

#define DEBUG_TYPE   "dxil-resource-access"

Definition at line 29 of file DXILResourceAccess.cpp.

Function Documentation

◆ collectUsedHandles()

◆ createCBufferLoad()

◆ createLoadIntrinsic()

◆ createRawLoad()

◆ createRawStore()

◆ createStoreIntrinsic()

◆ createTypedBufferLoad()

◆ createTypedBufferStore()

◆ diagnoseNonUniqueResourceAccess()

void diagnoseNonUniqueResourceAccess ( Instruction * I,
ArrayRef< IntrinsicInst * > Handles )
static

Definition at line 33 of file DXILResourceAccess.cpp.

References llvm::DS_Note, and I.

Referenced by legalizeResourceHandles().

◆ getAccessIndices()

◆ getHandleIntrinsicBinding()

◆ getStoreLoadPointerOperand()

Instruction * getStoreLoadPointerOperand ( Instruction * AI)
static

Definition at line 444 of file DXILResourceAccess.cpp.

References llvm::dyn_cast().

Referenced by legalizeResourceHandles().

◆ INITIALIZE_PASS_BEGIN()

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

◆ legalizeResourceHandles()

◆ replaceAccess()

◆ replaceHandleWithIndices()

◆ transformResourcePointers()

◆ traverseGEPOffsets()

Value * traverseGEPOffsets ( const DataLayout & DL,
IRBuilder<> & Builder,
Value * Ptr,
uint64_t AccessSize )
static

Variable Documentation

◆ Access

◆ DEBUG_TYPE

DEBUG_TYPE

Definition at line 754 of file DXILResourceAccess.cpp.

◆ false

DXIL Resource false

Definition at line 755 of file DXILResourceAccess.cpp.

◆ HandleIntrins

const std::array<Intrinsic::ID, 2> HandleIntrins
static
Initial value:
= {
Intrinsic::dx_resource_handlefrombinding,
Intrinsic::dx_resource_handlefromimplicitbinding,
}

Definition at line 453 of file DXILResourceAccess.cpp.

Referenced by collectUsedHandles(), getAccessIndices(), and getHandleIntrinsicBinding().