1 //===- polly/ScheduleOptimizer.h - The Schedule Optimizer -------*- C++ -*-===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8 
9 #ifndef POLLY_SCHEDULEOPTIMIZER_H
10 #define POLLY_SCHEDULEOPTIMIZER_H
11 
12 #include "polly/ScopPass.h"
13 
14 namespace llvm {
15 class Pass;
16 class PassRegistry;
17 } // namespace llvm
18 
19 namespace polly {
20 llvm::Pass *createIslScheduleOptimizerWrapperPass();
21 llvm::Pass *createIslScheduleOptimizerPrinterLegacyPass(llvm::raw_ostream &OS);
22 
23 struct IslScheduleOptimizerPass final
24     : llvm::PassInfoMixin<IslScheduleOptimizerPass> {
IslScheduleOptimizerPassfinal25   IslScheduleOptimizerPass() {}
26 
27   llvm::PreservedAnalyses run(Scop &S, ScopAnalysisManager &SAM,
28                               ScopStandardAnalysisResults &SAR, SPMUpdater &U);
29 };
30 
31 struct IslScheduleOptimizerPrinterPass final
32     : llvm::PassInfoMixin<IslScheduleOptimizerPrinterPass> {
IslScheduleOptimizerPrinterPassfinal33   IslScheduleOptimizerPrinterPass(raw_ostream &OS) : OS(OS) {}
34 
35   PreservedAnalyses run(Scop &S, ScopAnalysisManager &,
36                         ScopStandardAnalysisResults &SAR, SPMUpdater &);
37 
38 private:
39   llvm::raw_ostream &OS;
40 };
41 } // namespace polly
42 
43 namespace llvm {
44 void initializeIslScheduleOptimizerWrapperPassPass(llvm::PassRegistry &);
45 void initializeIslScheduleOptimizerPrinterLegacyPassPass(llvm::PassRegistry &);
46 } // namespace llvm
47 
48 #endif // POLLY_SCHEDULEOPTIMIZER_H
49