1 //===- polly/CodeGeneration.h - The Polly code generator --------*- 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_CODEGENERATION_H
10 #define POLLY_CODEGENERATION_H
11 
12 #include "polly/CodeGen/IRBuilder.h"
13 #include "polly/ScopPass.h"
14 #include "llvm/IR/PassManager.h"
15 
16 namespace polly {
17 
18 enum VectorizerChoice {
19   VECTORIZER_NONE,
20   VECTORIZER_STRIPMINE,
21   VECTORIZER_POLLY,
22 };
23 extern VectorizerChoice PollyVectorizerChoice;
24 
25 /// Mark a basic block unreachable.
26 ///
27 /// Marks the basic block @p Block unreachable by equipping it with an
28 /// UnreachableInst.
29 void markBlockUnreachable(BasicBlock &Block, PollyIRBuilder &Builder);
30 
31 struct CodeGenerationPass : public PassInfoMixin<CodeGenerationPass> {
32   PreservedAnalyses run(Scop &S, ScopAnalysisManager &SAM,
33                         ScopStandardAnalysisResults &AR, SPMUpdater &U);
34 };
35 
36 extern bool PerfMonitoring;
37 } // namespace polly
38 
39 #endif // POLLY_CODEGENERATION_H
40