picceler
Loading...
Searching...
No Matches
picceler::MLIRGen Class Reference

MLIR code generator that converts AST nodes to MLIR constructs. This offers the initial IR generation from the AST. More...

#include <mlir_gen.h>

Public Types

using GeneratorFunction = std::function<mlir::Value(mlir::Location, const std::vector<mlir::Value> &)>
using VariableTable = std::unordered_map<std::string, mlir::Value>
using NamedVariableTable = std::pair<std::string, VariableTable>

Public Member Functions

 MLIRGen ()=delete
 MLIRGen (mlir::MLIRContext *context)
 MLIRGen (const MLIRGen &)=default
MLIRGenoperator= (const MLIRGen &)=default
 MLIRGen (MLIRGen &&)=default
MLIRGenoperator= (MLIRGen &&)=default
 ~MLIRGen () noexcept
mlir::ModuleOp generate (ModuleNode *root, const std::string &sourceFile)
 Generates MLIR code from the given AST root node.

Detailed Description

MLIR code generator that converts AST nodes to MLIR constructs. This offers the initial IR generation from the AST.

Member Typedef Documentation

◆ GeneratorFunction

using picceler::MLIRGen::GeneratorFunction = std::function<mlir::Value(mlir::Location, const std::vector<mlir::Value> &)>

◆ NamedVariableTable

using picceler::MLIRGen::NamedVariableTable = std::pair<std::string, VariableTable>

◆ VariableTable

using picceler::MLIRGen::VariableTable = std::unordered_map<std::string, mlir::Value>

Constructor & Destructor Documentation

◆ MLIRGen() [1/4]

picceler::MLIRGen::MLIRGen ( )
delete

◆ MLIRGen() [2/4]

picceler::MLIRGen::MLIRGen ( mlir::MLIRContext * context)

◆ MLIRGen() [3/4]

picceler::MLIRGen::MLIRGen ( const MLIRGen & )
default

◆ MLIRGen() [4/4]

picceler::MLIRGen::MLIRGen ( MLIRGen && )
default

◆ ~MLIRGen()

picceler::MLIRGen::~MLIRGen ( )
noexcept

Member Function Documentation

◆ generate()

mlir::ModuleOp picceler::MLIRGen::generate ( ModuleNode * root,
const std::string & sourceFile )

Generates MLIR code from the given AST root node.

Parameters
rootThe root node of the AST.
sourceFileThe source file name for location tracking.
Returns
The generated MLIR module operation.

◆ operator=() [1/2]

MLIRGen & picceler::MLIRGen::operator= ( const MLIRGen & )
default

◆ operator=() [2/2]

MLIRGen & picceler::MLIRGen::operator= ( MLIRGen && )
default

The documentation for this class was generated from the following files: