Skip to content

Commit 96a6d67

Browse files
igorban-inteligcbot
authored andcommitted
Rewrite CMABI to new pass manager
.
1 parent ec4f8fc commit 96a6d67

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

49 files changed

+515
-230
lines changed

IGC/VectorCompiler/include/GenXPassRegistry.def

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,10 @@ SPDX-License-Identifier: MIT
1212
#define MODULE_PASS(NAME, CREATE_PASS)
1313
#endif
1414

15-
MODULE_PASS("GenXPacketize", GenXPacketizePass())
15+
MODULE_PASS("CMABI", CMABIPass())
1616
MODULE_PASS("CMImpParam", CMImpParamPass())
1717
MODULE_PASS("CMKernelArgOffset", CMKernelArgOffsetPass())
18+
MODULE_PASS("GenXPacketize", GenXPacketizePass())
1819
MODULE_PASS("GenXBIFFlagCtrlResolution", GenXBIFFlagCtrlResolutionPass())
1920
MODULE_PASS("GenXBTIAssignment", GenXBTIAssignmentPass())
2021
MODULE_PASS("GenXImportOCLBiF", GenXImportOCLBiFPass())
@@ -24,7 +25,6 @@ MODULE_PASS("GenXPrintfPhiClonning", GenXPrintfPhiClonningPass())
2425
MODULE_PASS("GenXPrintfResolution", GenXPrintfResolutionPass())
2526
MODULE_PASS("GenXTrampolineInsertion", GenXTrampolineInsertionPass())
2627
MODULE_PASS("GenXTranslateSPIRVBuiltins", GenXTranslateSPIRVBuiltinsPass())
27-
MODULE_PASS("CMABI", CMABIPass())
2828
MODULE_PASS("GenXCloneIndirectFunctions", GenXCloneIndirectFunctionsPass())
2929

3030
#undef MODULE_PASS

IGC/VectorCompiler/include/vc/GenXOpts/CMABIAnalysis.h

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,24 @@ SPDX-License-Identifier: MIT
1010

1111
// void initializeCMABIAnalysis(PassRegistry &);
1212

13-
struct CMABIAnalysisPass : public llvm::PassInfoMixin<CMABIAnalysisPass> {
14-
llvm::PreservedAnalyses run(llvm::Module &M, llvm::ModuleAnalysisManager &AM);
13+
class LocalizationInfo;
14+
15+
struct CMABIAnalysisPassResult {
16+
llvm::SmallPtrSet<llvm::Function *, 8> Kernels;
17+
llvm::SmallDenseMap<llvm::Function *, LocalizationInfo *> GlobalInfo;
18+
19+
// TODO: Fill invalidator
20+
template <class IR, class Analysis, class Invalidator>
21+
bool invalidate(IR &, Analysis &, Invalidator &) {
22+
return true;
23+
}
1524
};
1625

26+
#if LLVM_VERSION_MAJOR >= 16
27+
struct CMABIAnalysisPass : public llvm::AnalysisInfoMixin<CMABIAnalysisPass> {
28+
using Result = CMABIAnalysisPassResult;
29+
Result run(llvm::Module &M, llvm::ModuleAnalysisManager &AM);
30+
static llvm::AnalysisKey Key;
31+
};
32+
#endif
1733
#endif // GENX_OPTS_CMABIANALYSIS

IGC/VectorCompiler/include/vc/GenXOpts/GenXOptsLegacyPM.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ Pass *createCMKernelArgOffsetPass(unsigned GrfByteSize, bool UseBindlessImages);
3838
//
3939
// CMABI - Fix ABI issues for the genx backend.
4040
//
41-
Pass *createCMABIPass();
41+
Pass *createCMABILegacyPass();
4242

4343
//===----------------------------------------------------------------------===//
4444
//
@@ -55,7 +55,7 @@ ModulePass *createGenXPacketizePass();
5555
void initializeGenXPacketizePass(PassRegistry &);
5656

5757
void initializeGenXSimplifyPass(PassRegistry &);
58-
void initializeCMABIPass(PassRegistry &);
58+
void initializeCMABILegacyPass(PassRegistry &);
5959
void initializeCMImpParamPass(PassRegistry &);
6060
void initializeCMKernelArgOffsetPass(PassRegistry &);
6161

IGC/VectorCompiler/include/vc/GenXOpts/GenXOptsNewPM.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,11 @@ SPDX-License-Identifier: MIT
1515
#ifndef VC_GENXOPTS_GENXOPTSNEWPM_H
1616
#define VC_GENXOPTS_GENXOPTSNEWPM_H
1717

18+
#include "llvm/Analysis/CGSCCPassManager.h"
1819
#include "llvm/IR/PassManager.h"
1920

2021
namespace llvm {
22+
2123
class FunctionPass;
2224
class ModulePass;
2325
class Pass;

IGC/VectorCompiler/include/vc/Utils/GenX/TransformArgCopy.h

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ SPDX-License-Identifier: MIT
1515
#include <llvm/ADT/SetVector.h>
1616
#include <llvm/ADT/SmallVector.h>
1717
#include <llvm/Analysis/CallGraph.h>
18+
#include <llvm/Analysis/CallGraphSCCPass.h>
19+
#include <llvm/Analysis/LazyCallGraph.h>
1820
#include <llvm/IR/Argument.h>
1921
#include <llvm/IR/Attributes.h>
2022
#include <llvm/IR/Function.h>
@@ -192,6 +194,25 @@ class FuncUsersUpdater {
192194
llvm::CallInst *updateFuncDirectUser(llvm::CallInst &OrigCall);
193195
};
194196

197+
class FuncUsersUpdaterNewPM {
198+
llvm::Function &OrigFunc;
199+
llvm::Function &NewFunc;
200+
const TransformedFuncInfo &NewFuncInfo;
201+
llvm::LazyCallGraph &CG;
202+
203+
public:
204+
FuncUsersUpdaterNewPM(llvm::Function &OrigFuncIn, llvm::Function &NewFuncIn,
205+
const TransformedFuncInfo &NewFuncInfoIn,
206+
llvm::LazyCallGraph &CGIn)
207+
: OrigFunc{OrigFuncIn}, NewFunc{NewFuncIn},
208+
NewFuncInfo{NewFuncInfoIn}, CG{CGIn} {}
209+
210+
void run();
211+
212+
private:
213+
llvm::CallInst *updateFuncDirectUser(llvm::CallInst &OrigCall);
214+
};
215+
195216
class FuncBodyTransfer {
196217
llvm::Function &OrigFunc;
197218
llvm::Function &NewFunc;

IGC/VectorCompiler/lib/GenXCodeGen/GenXTargetMachine.cpp

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,11 @@ void initializeGenXPasses(PassRegistry &registry) {
175175
initializeGenXImportOCLBiFPass(registry);
176176
initializeGenXBIFFlagCtrlResolutionPass(registry);
177177
initializeGenXSimplifyPass(registry);
178+
#if LLVM_VERSION_MAJOR < 16
179+
initializeCMABILegacyPass(registry);
180+
#else
178181
initializeCMABIPass(registry);
182+
#endif
179183
initializeCMLowerVLoadVStorePass(registry);
180184
initializeGenXLowerJmpTableSwitchPass(registry);
181185
initializeGenXGlobalValueLoweringPass(registry);
@@ -990,7 +994,7 @@ void GenXTargetMachine::adjustPassManager(PassManagerBuilder &PMBuilder) {
990994

991995
// CM ABI.
992996
auto AddCMABI = [](const PassManagerBuilder &Builder, PassManagerBase &PM) {
993-
PM.add(createCMABIPass());
997+
PM.add(createCMABILegacyPass());
994998
};
995999
PMBuilder.addExtension(PassManagerBuilder::EP_ModuleOptimizerEarly, AddCMABI);
9961000
PMBuilder.addExtension(PassManagerBuilder::EP_EnabledOnOptLevel0, AddCMABI);

0 commit comments

Comments
 (0)