]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - contrib/llvm/include/llvm/Transforms/Scalar/Scalarizer.h
Merge llvm, clang, compiler-rt, libc++, libunwind, lld, lldb and openmp
[FreeBSD/FreeBSD.git] / contrib / llvm / include / llvm / Transforms / Scalar / Scalarizer.h
1 //===- Scalarizer.h --- Scalarize vector operations -----------------------===//
2 //
3 //                     The LLVM Compiler Infrastructure
4 //
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
7 //
8 //===----------------------------------------------------------------------===//
9 //
10 /// \file
11 /// This pass converts vector operations into scalar operations, in order
12 /// to expose optimization opportunities on the individual scalar operations.
13 /// It is mainly intended for targets that do not have vector units, but it
14 /// may also be useful for revectorizing code to different vector widths.
15 //
16 //===----------------------------------------------------------------------===//
17
18 #ifndef LLVM_TRANSFORMS_SCALAR_SCALARIZER_H
19 #define LLVM_TRANSFORMS_SCALAR_SCALARIZER_H
20
21 #include "llvm/IR/PassManager.h"
22
23 namespace llvm {
24
25 class ScalarizerPass : public PassInfoMixin<ScalarizerPass> {
26 public:
27   PreservedAnalyses run(Function &F, FunctionAnalysisManager &AM);
28 };
29
30 /// Create a legacy pass manager instance of the Scalarizer pass
31 FunctionPass *createScalarizerPass();
32
33 }
34
35 #endif /* LLVM_TRANSFORMS_SCALAR_SCALARIZER_H */