forked from OSchip/llvm-project
[flang] Add changes to codegen to convert it to tablegen passes.
This upstreams changes to codegen to convert the passes to the new tablegen pass support from MLIR. Differential revision: https://reviews.llvm.org/D83018
This commit is contained in:
parent
30bd66544d
commit
ffa1f8198e
|
@ -1 +1,2 @@
|
|||
add_subdirectory(CodeGen)
|
||||
add_subdirectory(Dialect)
|
||||
|
|
|
@ -0,0 +1,24 @@
|
|||
//===-- CGPasses.td - code gen pass definition file --------*- tablegen -*-===//
|
||||
//
|
||||
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
||||
// See https://llvm.org/LICENSE.txt for license information.
|
||||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
//
|
||||
// This file contains definitions for passes within the Optimizer/CodeGen/
|
||||
// directory.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#ifndef FLANG_OPTIMIZER_CODEGEN_PASSES
|
||||
#define FLANG_OPTIMIZER_CODEGEN_PASSES
|
||||
|
||||
include "mlir/Pass/PassBase.td"
|
||||
|
||||
def CodeGenRewrite : FunctionPass<"cg-rewrite"> {
|
||||
let summary = "Rewrite some FIR ops into their code-gen forms.";
|
||||
let constructor = "fir::createFirCodeGenRewritePass()";
|
||||
}
|
||||
|
||||
#endif // FLANG_OPTIMIZER_CODEGEN_PASSES
|
|
@ -0,0 +1,6 @@
|
|||
|
||||
set(LLVM_TARGET_DEFINITIONS CGPasses.td)
|
||||
mlir_tablegen(CGPasses.h.inc -gen-pass-decls)
|
||||
add_public_tablegen_target(FIROptCodeGenPassIncGen)
|
||||
|
||||
add_mlir_doc(Passes -gen-pass-doc OptimizerCodeGenPasses ./)
|
|
@ -9,19 +9,18 @@
|
|||
#ifndef OPTIMIZER_CODEGEN_CODEGEN_H
|
||||
#define OPTIMIZER_CODEGEN_CODEGEN_H
|
||||
|
||||
#include "mlir/Pass/Pass.h"
|
||||
#include "mlir/Pass/PassRegistry.h"
|
||||
#include <memory>
|
||||
|
||||
namespace llvm {
|
||||
class raw_ostream;
|
||||
}
|
||||
namespace mlir {
|
||||
class Pass;
|
||||
}
|
||||
|
||||
namespace fir {
|
||||
|
||||
struct NameUniquer;
|
||||
|
||||
/// Prerequiste pass for code gen. Perform intermediate rewrites to perform
|
||||
/// the code gen (to LLVM-IR dialect) conversion.
|
||||
std::unique_ptr<mlir::Pass> createFirCodeGenRewritePass();
|
||||
|
||||
/// Convert FIR to the LLVM IR dialect
|
||||
std::unique_ptr<mlir::Pass> createFIRToLLVMPass(NameUniquer &uniquer);
|
||||
|
||||
|
@ -29,6 +28,13 @@ std::unique_ptr<mlir::Pass> createFIRToLLVMPass(NameUniquer &uniquer);
|
|||
std::unique_ptr<mlir::Pass>
|
||||
createLLVMDialectToLLVMPass(llvm::raw_ostream &output);
|
||||
|
||||
inline void registerOptCodeGenPasses() {
|
||||
using mlir::Pass;
|
||||
// declarative passes
|
||||
#define GEN_PASS_REGISTRATION
|
||||
#include "flang/Optimizer/CodeGen/CGPasses.h.inc"
|
||||
}
|
||||
|
||||
} // namespace fir
|
||||
|
||||
#endif // OPTIMIZER_CODEGEN_CODEGEN_H
|
||||
|
|
Loading…
Reference in New Issue