Skip to content

Commit bc0650b

Browse files
committed
[HLSL] Moving DXILResourceImplicitBinding pass right before DXIL Resource Analysis
Moving DXILResourceImplicitBinding pass and the associated DXILResourceBindingAnalysis lower in the llc pipeline to just before DXIL Resource Analysis, which is where its results are first needed. 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. (cherry picked from commit a922b55)
1 parent 8a431c8 commit bc0650b

File tree

4 files changed

+14
-6
lines changed

4 files changed

+14
-6
lines changed

llvm/lib/Target/DirectX/DXILResourceImplicitBinding.cpp

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -136,9 +136,14 @@ 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();
139+
if (DRBI.hasImplicitBinding()) {
140+
if (assignBindings(M, DRBI, DRTM)) {
141+
PreservedAnalyses PA;
142+
PA.preserve<DXILResourceBindingAnalysis>();
143+
PA.preserve<DXILResourceTypeAnalysis>();
144+
return PA;
145+
}
146+
}
142147
return PreservedAnalyses::all();
143148
}
144149

@@ -163,6 +168,8 @@ class DXILResourceImplicitBindingLegacy : public ModulePass {
163168
void getAnalysisUsage(llvm::AnalysisUsage &AU) const override {
164169
AU.addRequired<DXILResourceTypeWrapperPass>();
165170
AU.addRequired<DXILResourceBindingWrapperPass>();
171+
AU.addPreserved<DXILResourceTypeWrapperPass>();
172+
AU.addPreserved<DXILResourceBindingWrapperPass>();
166173
}
167174
};
168175

llvm/lib/Target/DirectX/DXILTranslateMetadata.cpp

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

413414
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)