Skip to content

Commit db9cdb3

Browse files
hekotasvkeerthy
authored andcommitted
[HLSL] Move DXILResourceImplicitBinding pass closer to DXIL Resource Analysis (#140981)
Moving `DXILResourceImplicitBinding` pass and the associated `DXILResourceBindingAnalysis` lower in the llc pipeline to just before the DXIL Resource Analysis, which is where its results are first needed, and adjusting the set of analyses it preserves. The reason for this change is that I will soon be adding `DXILResourceBindingAnalysis` dependency to `DXILPostOptimizationValidation` pass and bringing this closer to where it is needed avoid unnecessary churn to preserved analysis setting in preceding passes.
1 parent df91a02 commit db9cdb3

File tree

4 files changed

+17
-7
lines changed

4 files changed

+17
-7
lines changed

llvm/lib/Target/DirectX/DXILResourceImplicitBinding.cpp

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -136,10 +136,17 @@ PreservedAnalyses DXILResourceImplicitBinding::run(Module &M,
136136

137137
DXILResourceBindingInfo &DRBI = AM.getResult<DXILResourceBindingAnalysis>(M);
138138
DXILResourceTypeMap &DRTM = AM.getResult<DXILResourceTypeAnalysis>(M);
139-
if (DRBI.hasImplicitBinding())
140-
if (assignBindings(M, DRBI, DRTM))
141-
return PreservedAnalyses::none();
142-
return PreservedAnalyses::all();
139+
140+
if (!DRBI.hasImplicitBinding())
141+
return PreservedAnalyses::all();
142+
143+
if (!assignBindings(M, DRBI, DRTM))
144+
return PreservedAnalyses::all();
145+
146+
PreservedAnalyses PA;
147+
PA.preserve<DXILResourceBindingAnalysis>();
148+
PA.preserve<DXILResourceTypeAnalysis>();
149+
return PA;
143150
}
144151

145152
namespace {
@@ -163,6 +170,8 @@ class DXILResourceImplicitBindingLegacy : public ModulePass {
163170
void getAnalysisUsage(llvm::AnalysisUsage &AU) const override {
164171
AU.addRequired<DXILResourceTypeWrapperPass>();
165172
AU.addRequired<DXILResourceBindingWrapperPass>();
173+
AU.addPreserved<DXILResourceTypeWrapperPass>();
174+
AU.addPreserved<DXILResourceBindingWrapperPass>();
166175
}
167176
};
168177

llvm/lib/Target/DirectX/DXILTranslateMetadata.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -409,6 +409,7 @@ class DXILTranslateMetadataLegacy : public ModulePass {
409409
AU.addPreserved<DXILResourceWrapperPass>();
410410
AU.addPreserved<DXILMetadataAnalysisWrapperPass>();
411411
AU.addPreserved<ShaderFlagsAnalysisWrapper>();
412+
AU.addPreserved<DXILResourceBindingWrapperPass>();
412413
}
413414

414415
bool runOnModule(Module &M) override {

llvm/lib/Target/DirectX/DirectXTargetMachine.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,6 @@ class DirectXPassConfig : public TargetPassConfig {
103103
FunctionPass *createTargetRegisterAllocator(bool) override { return nullptr; }
104104
void addCodeGenPrepare() override {
105105
addPass(createDXILFinalizeLinkageLegacyPass());
106-
addPass(createDXILResourceImplicitBindingLegacyPass());
107106
addPass(createDXILResourceAccessLegacyPass());
108107
addPass(createDXILIntrinsicExpansionLegacyPass());
109108
addPass(createDXILCBufferAccessLegacyPass());
@@ -114,6 +113,7 @@ class DirectXPassConfig : public TargetPassConfig {
114113
addPass(createScalarizerPass(DxilScalarOptions));
115114
addPass(createDXILForwardHandleAccessesLegacyPass());
116115
addPass(createDXILLegalizeLegacyPass());
116+
addPass(createDXILResourceImplicitBindingLegacyPass());
117117
addPass(createDXILTranslateMetadataLegacyPass());
118118
addPass(createDXILPostOptimizationValidationLegacyPass());
119119
addPass(createDXILOpLoweringLegacyPass());

llvm/test/CodeGen/DirectX/llc-pipeline.ll

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,6 @@
1414

1515
; CHECK-NEXT: ModulePass Manager
1616
; CHECK-NEXT: DXIL Finalize Linkage
17-
; CHECK-NEXT: DXIL Resource Binding Analysis
18-
; CHECK-NEXT: DXIL Resource Implicit Binding
1917
; CHECK-NEXT: FunctionPass Manager
2018
; CHECK-NEXT: DXIL Resource Access
2119
; CHECK-NEXT: DXIL Intrinsic Expansion
@@ -27,6 +25,8 @@
2725
; CHECK-NEXT: Scalarize vector operations
2826
; CHECK-NEXT: DXIL Forward Handle Accesses
2927
; CHECK-NEXT: DXIL Legalizer
28+
; CHECK-NEXT: DXIL Resource Binding Analysis
29+
; CHECK-NEXT: DXIL Resource Implicit Binding
3030
; CHECK-NEXT: DXIL Resources Analysis
3131
; CHECK-NEXT: DXIL Module Metadata analysis
3232
; CHECK-NEXT: DXIL Shader Flag Analysis

0 commit comments

Comments
 (0)