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