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