21 using Base = CodeGenPassBuilder;
23 VETargetMachine &
getTM()
const {
return static_cast<VETargetMachine &
>(TM); }
26 explicit VECodeGenPassBuilder(VETargetMachine &TM,
27 const CGPassBuilderOption &Opts,
28 PassInstrumentationCallbacks *
PIC)
29 : CodeGenPassBuilder(TM, Opts,
PIC) {}
31 void addIRPasses(PassManagerWrapper &PMW)
override;
32 Error addInstSelector(PassManagerWrapper &PMW)
override;
33 void addPreEmitPass(PassManagerWrapper &PMW)
override;
34 void addAsmPrinterBegin(PassManagerWrapper &PMW)
override;
35 void addAsmPrinter(PassManagerWrapper &PMW)
override;
36 void addAsmPrinterEnd(PassManagerWrapper &PMW)
override;
40 addFunctionPass(AtomicExpandPass(
getTM()), PMW);
42 Base::addIRPasses(PMW);
45Error VECodeGenPassBuilder::addInstSelector(PassManagerWrapper &PMW) {
46 addMachineFunctionPass(VEDAGToDAGISelPass(
getTM()), PMW);
50void VECodeGenPassBuilder::addPreEmitPass(PassManagerWrapper &PMW) {
52 addMachineFunctionPass(VELVLGenPass(), PMW);
55void VECodeGenPassBuilder::addAsmPrinterBegin(PassManagerWrapper &PMW) {
56 addModulePass(VEAsmPrinterBeginPass(), PMW,
true);
59void VECodeGenPassBuilder::addAsmPrinter(PassManagerWrapper &PMW) {
60 addMachineFunctionPass(VEAsmPrinterPass(), PMW);
63void VECodeGenPassBuilder::addAsmPrinterEnd(PassManagerWrapper &PMW) {
64 addModulePass(VEAsmPrinterEndPass(), PMW,
true);
70#define GET_PASS_REGISTRY "VEPassRegistry.def"
79 auto CGPB = VECodeGenPassBuilder(*
this, Opt,
PIC);
80 return CGPB.buildPipeline(MPM,
MAM, Out, DwoOut, FileType, Ctx);
Interfaces for producing common pass manager configurations.
ModuleAnalysisManager MAM
PassBuilder PB(Mod->getContext(), Machine, PassOpts->PTO, std::nullopt, &PIC)
PassInstrumentationCallbacks PIC
const GCNTargetMachine & getTM(const GCNSubtarget *STI)
This class provides access to building LLVM's passes.
Lightweight error class with error context and mandatory checking.
static ErrorSuccess success()
Create a success value.
Context object for machine code objects.
This class provides access to building LLVM's passes.
This class manages callbacks registration, as well as provides a way for PassInstrumentation to pass ...
void registerPassBuilderCallbacks(PassBuilder &PB) override
Allow the target to modify the pass pipeline.
Error buildCodeGenPipeline(ModulePassManager &MPM, ModuleAnalysisManager &MAM, raw_pwrite_stream &Out, raw_pwrite_stream *DwoOut, CodeGenFileType FileType, const CGPassBuilderOption &Opt, MCContext &Ctx, PassInstrumentationCallbacks *PIC) override
An abstract base class for streams implementations that also support a pwrite operation.
Interfaces for registering analysis passes, producing common pass manager configurations,...
This is an optimization pass for GlobalISel generic memory operations.
CodeGenFileType
These enums are meant to be passed into addPassesToEmitFile to indicate what type of file to emit,...
PassManager< Module > ModulePassManager
Convenience typedef for a pass manager over modules.
AnalysisManager< Module > ModuleAnalysisManager
Convenience typedef for the Module analysis manager.