1 //===------ ManualOptimizer.h ---------------------------------------------===//
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 // Handle pragma/metadata-directed transformations.
10 //
11 //===----------------------------------------------------------------------===//
12 
13 #ifndef POLLY_MANUALOPTIMIZER_H
14 #define POLLY_MANUALOPTIMIZER_H
15 
16 #include "isl/isl-noexceptions.h"
17 
18 namespace llvm {
19 class OptimizationRemarkEmitter;
20 }
21 
22 namespace polly {
23 class Scop;
24 class Dependences;
25 
26 /// Apply loop-transformation metadata.
27 ///
28 /// The loop metadata are taken from mark-nodes in @sched. These nodes have been
29 /// added by ScopBuilder when creating a schedule for a loop with an attach
30 /// LoopID.
31 ///
32 /// @param S     The SCoP for @p Sched.
33 /// @param Sched The input schedule to apply the directives on.
34 ///
35 /// @return The transformed schedule with all mark-nodes with loop
36 ///         transformations applied. Returns NULL in case of an error or @p
37 ///         Sched itself if no transformation has been applied.
38 isl::schedule applyManualTransformations(Scop *S, isl::schedule Sched,
39                                          const Dependences &D,
40                                          llvm::OptimizationRemarkEmitter *ORE);
41 } // namespace polly
42 
43 #endif /* POLLY_MANUALOPTIMIZER_H */
44