My Project
ConvertStandardToLLVMPass.h
Go to the documentation of this file.
1 //===- ConvertStandardToLLVMPass.h - Pass entrypoint ------------*- C++ -*-===//
2 //
3 // Part of the MLIR 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 MLIR_CONVERSION_STANDARDTOLLVM_CONVERTSTANDARDTOLLVMPASS_H_
10 #define MLIR_CONVERSION_STANDARDTOLLVM_CONVERTSTANDARDTOLLVMPASS_H_
11 
12 #include "llvm/ADT/STLExtras.h"
13 #include <memory>
14 #include <vector>
15 
16 namespace llvm {
17 class Module;
18 } // namespace llvm
19 
20 namespace mlir {
21 class DialectConversion;
22 class FuncOp;
23 class LLVMTypeConverter;
24 struct LogicalResult;
25 class MLIRContext;
26 class ModuleOp;
27 template <typename T> class OpPassBase;
28 class RewritePattern;
29 class Type;
30 
31 // Owning list of rewriting patterns.
32 class OwningRewritePatternList;
33 
38  std::function<void(LLVMTypeConverter &, OwningRewritePatternList &)>;
39 
44  std::function<std::unique_ptr<LLVMTypeConverter>(MLIRContext *)>;
45 
50  LLVMTypeConverter &converter, OwningRewritePatternList &patterns);
51 
55  LLVMTypeConverter &converter, OwningRewritePatternList &patterns);
56 
59  OwningRewritePatternList &patterns);
60 
65 std::unique_ptr<OpPassBase<ModuleOp>>
66 createLowerToLLVMPass(bool useAlloca = false);
67 
74 std::unique_ptr<OpPassBase<ModuleOp>>
76  LLVMTypeConverterMaker typeConverterMaker,
77  bool useAlloca = false);
78 
86 template <typename TypeConverter = LLVMTypeConverter>
87 std::unique_ptr<OpPassBase<ModuleOp>>
89  bool useAlloca = false) {
90  return createLowerToLLVMPass(
91  patternListFiller,
92  [](MLIRContext *context) {
93  return std::make_unique<TypeConverter>(context);
94  },
95  useAlloca);
96 }
97 
98 namespace LLVM {
105 } // namespace LLVM
106 
107 } // namespace mlir
108 
109 #endif // MLIR_CONVERSION_STANDARDTOLLVM_CONVERTSTANDARDTOLLVMPASS_H_
Definition: InferTypeOpInterface.cpp:20
Definition: PassRegistry.cpp:413
Definition: Attributes.h:139
std::unique_ptr< OpPassBase< ModuleOp > > createLowerToLLVMPass(LLVMPatternListFiller patternListFiller, bool useAlloca=false)
Definition: ConvertStandardToLLVMPass.h:88
void populateStdToLLVMConversionPatterns(LLVMTypeConverter &converter, OwningRewritePatternList &patterns)
Collect a set of patterns to convert from the Standard dialect to LLVM.
Definition: ConvertStandardToLLVM.cpp:2142
void ensureDistinctSuccessors(ModuleOp m)
Definition: ConvertStandardToLLVM.cpp:2060
void populateStdToLLVMMemoryConversionPatters(LLVMTypeConverter &converter, OwningRewritePatternList &patterns)
Definition: ConvertStandardToLLVM.cpp:2124
Definition: Module.h:29
std::function< std::unique_ptr< LLVMTypeConverter >(MLIRContext *)> LLVMTypeConverterMaker
Definition: ConvertStandardToLLVMPass.h:44
Definition: PatternMatch.h:418
void populateStdToLLVMNonMemoryConversionPatterns(LLVMTypeConverter &converter, OwningRewritePatternList &patterns)
Collect a set of patterns to convert from the Standard dialect to LLVM.
Definition: ConvertStandardToLLVM.cpp:2069
std::function< void(LLVMTypeConverter &, OwningRewritePatternList &)> LLVMPatternListFiller
Definition: ConvertStandardToLLVMPass.h:38
Conversion from types in the Standard dialect to the LLVM IR dialect.
Definition: ConvertStandardToLLVM.h:37
Definition: MLIRContext.h:34