diff options
author | Helena Kotas <hekotas@microsoft.com> | 2025-05-12 23:00:00 -0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-05-12 23:00:00 -0700 |
commit | 03934d0a213e479622c7875a2a59ae64b4f2213f (patch) | |
tree | e23f40a4117e2fb7dfed15031858b3bc3fdbf8b7 /llvm/lib/Target/DirectX/DirectXTargetMachine.cpp | |
parent | 383a825d6d7f98452e6be11aa96678617bc83b82 (diff) | |
download | llvm-03934d0a213e479622c7875a2a59ae64b4f2213f.zip llvm-03934d0a213e479622c7875a2a59ae64b4f2213f.tar.gz llvm-03934d0a213e479622c7875a2a59ae64b4f2213f.tar.bz2 |
[DirectX] Implement DXILResourceImplicitBinding pass (#138043)
The `DXILResourceImplicitBinding` pass uses the results of
`DXILResourceBindingAnalysis` to assigns register slots to resources
that do not have explicit binding. It replaces all
`llvm.dx.resource.handlefromimplicitbinding` calls with
`llvm.dx.resource.handlefrombinding` using the newly assigned binding.
If a binding cannot be found for a resource, the pass will raise a
diagnostic error. Currently this diagnostic message does not include the
resource name, which will be addressed in a separate task (#137868).
Part 2/2 of #136786
Closes #136786
Diffstat (limited to 'llvm/lib/Target/DirectX/DirectXTargetMachine.cpp')
-rw-r--r-- | llvm/lib/Target/DirectX/DirectXTargetMachine.cpp | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/llvm/lib/Target/DirectX/DirectXTargetMachine.cpp b/llvm/lib/Target/DirectX/DirectXTargetMachine.cpp index 19cfa89..0d2730f 100644 --- a/llvm/lib/Target/DirectX/DirectXTargetMachine.cpp +++ b/llvm/lib/Target/DirectX/DirectXTargetMachine.cpp @@ -22,6 +22,7 @@ #include "DXILPostOptimizationValidation.h" #include "DXILPrettyPrinter.h" #include "DXILResourceAccess.h" +#include "DXILResourceImplicitBinding.h" #include "DXILRootSignature.h" #include "DXILShaderFlags.h" #include "DXILTranslateMetadata.h" @@ -63,6 +64,7 @@ extern "C" LLVM_EXTERNAL_VISIBILITY void LLVMInitializeDirectXTarget() { initializeDXContainerGlobalsPass(*PR); initializeDXILOpLoweringLegacyPass(*PR); initializeDXILResourceAccessLegacyPass(*PR); + initializeDXILResourceImplicitBindingLegacyPass(*PR); initializeDXILTranslateMetadataLegacyPass(*PR); initializeDXILPostOptimizationValidationLegacyPass(*PR); initializeShaderFlagsAnalysisWrapperPass(*PR); @@ -101,6 +103,7 @@ public: FunctionPass *createTargetRegisterAllocator(bool) override { return nullptr; } void addCodeGenPrepare() override { addPass(createDXILFinalizeLinkageLegacyPass()); + addPass(createDXILResourceImplicitBindingLegacyPass()); addPass(createDXILIntrinsicExpansionLegacyPass()); addPass(createDXILCBufferAccessLegacyPass()); addPass(createDXILDataScalarizationLegacyPass()); |