MLIR
19.0.0git
|
#include "mlir/Dialect/ControlFlow/IR/ControlFlowOps.h"
#include "mlir/Dialect/EmitC/IR/EmitC.h"
#include "mlir/Dialect/Func/IR/FuncOps.h"
#include "mlir/IR/BuiltinOps.h"
#include "mlir/IR/BuiltinTypes.h"
#include "mlir/IR/Dialect.h"
#include "mlir/IR/Operation.h"
#include "mlir/IR/SymbolTable.h"
#include "mlir/Support/IndentedOstream.h"
#include "mlir/Support/LLVM.h"
#include "mlir/Target/Cpp/CppEmitter.h"
#include "llvm/ADT/DenseMap.h"
#include "llvm/ADT/ScopedHashTable.h"
#include "llvm/ADT/StringExtras.h"
#include "llvm/ADT/StringMap.h"
#include "llvm/ADT/TypeSwitch.h"
#include "llvm/Support/Debug.h"
#include "llvm/Support/FormatVariadic.h"
#include <stack>
#include <utility>
Go to the source code of this file.
Macros | |
#define | DEBUG_TYPE "translate-to-cpp" |
Functions | |
template<typename ForwardIterator , typename UnaryFunctor , typename NullaryFunctor > | |
LogicalResult | interleaveWithError (ForwardIterator begin, ForwardIterator end, UnaryFunctor eachFn, NullaryFunctor betweenFn) |
Convenience functions to produce interleaved output with functions returning a LogicalResult. More... | |
template<typename Container , typename UnaryFunctor , typename NullaryFunctor > | |
LogicalResult | interleaveWithError (const Container &c, UnaryFunctor eachFn, NullaryFunctor betweenFn) |
template<typename Container , typename UnaryFunctor > | |
LogicalResult | interleaveCommaWithError (const Container &c, raw_ostream &os, UnaryFunctor eachFn) |
static FailureOr< int > | getOperatorPrecedence (Operation *operation) |
Return the precedence of a operator as an integer, higher values imply higher precedence. More... | |
static bool | shouldBeInlined (ExpressionOp expressionOp) |
Determine whether expression expressionOp should be emitted inline, i.e. More... | |
static LogicalResult | printConstantOp (CppEmitter &emitter, Operation *operation, Attribute value) |
static LogicalResult | printOperation (CppEmitter &emitter, emitc::ConstantOp constantOp) |
static LogicalResult | printOperation (CppEmitter &emitter, emitc::VariableOp variableOp) |
static LogicalResult | printOperation (CppEmitter &emitter, emitc::AssignOp assignOp) |
static LogicalResult | printOperation (CppEmitter &emitter, emitc::SubscriptOp subscriptOp) |
static LogicalResult | printBinaryOperation (CppEmitter &emitter, Operation *operation, StringRef binaryOperator) |
static LogicalResult | printUnaryOperation (CppEmitter &emitter, Operation *operation, StringRef unaryOperator) |
static LogicalResult | printOperation (CppEmitter &emitter, emitc::AddOp addOp) |
static LogicalResult | printOperation (CppEmitter &emitter, emitc::DivOp divOp) |
static LogicalResult | printOperation (CppEmitter &emitter, emitc::MulOp mulOp) |
static LogicalResult | printOperation (CppEmitter &emitter, emitc::RemOp remOp) |
static LogicalResult | printOperation (CppEmitter &emitter, emitc::SubOp subOp) |
static LogicalResult | printOperation (CppEmitter &emitter, emitc::CmpOp cmpOp) |
static LogicalResult | printOperation (CppEmitter &emitter, emitc::ConditionalOp conditionalOp) |
static LogicalResult | printOperation (CppEmitter &emitter, emitc::VerbatimOp verbatimOp) |
static LogicalResult | printOperation (CppEmitter &emitter, cf::BranchOp branchOp) |
static LogicalResult | printOperation (CppEmitter &emitter, cf::CondBranchOp condBranchOp) |
static LogicalResult | printCallOperation (CppEmitter &emitter, Operation *callOp, StringRef callee) |
static LogicalResult | printOperation (CppEmitter &emitter, func::CallOp callOp) |
static LogicalResult | printOperation (CppEmitter &emitter, emitc::CallOp callOp) |
static LogicalResult | printOperation (CppEmitter &emitter, emitc::CallOpaqueOp callOpaqueOp) |
static LogicalResult | printOperation (CppEmitter &emitter, emitc::ApplyOp applyOp) |
static LogicalResult | printOperation (CppEmitter &emitter, emitc::BitwiseAndOp bitwiseAndOp) |
static LogicalResult | printOperation (CppEmitter &emitter, emitc::BitwiseLeftShiftOp bitwiseLeftShiftOp) |
static LogicalResult | printOperation (CppEmitter &emitter, emitc::BitwiseNotOp bitwiseNotOp) |
static LogicalResult | printOperation (CppEmitter &emitter, emitc::BitwiseOrOp bitwiseOrOp) |
static LogicalResult | printOperation (CppEmitter &emitter, emitc::BitwiseRightShiftOp bitwiseRightShiftOp) |
static LogicalResult | printOperation (CppEmitter &emitter, emitc::BitwiseXorOp bitwiseXorOp) |
static LogicalResult | printOperation (CppEmitter &emitter, emitc::UnaryPlusOp unaryPlusOp) |
static LogicalResult | printOperation (CppEmitter &emitter, emitc::UnaryMinusOp unaryMinusOp) |
static LogicalResult | printOperation (CppEmitter &emitter, emitc::CastOp castOp) |
static LogicalResult | printOperation (CppEmitter &emitter, emitc::ExpressionOp expressionOp) |
static LogicalResult | printOperation (CppEmitter &emitter, emitc::IncludeOp includeOp) |
static LogicalResult | printOperation (CppEmitter &emitter, emitc::LogicalAndOp logicalAndOp) |
static LogicalResult | printOperation (CppEmitter &emitter, emitc::LogicalNotOp logicalNotOp) |
static LogicalResult | printOperation (CppEmitter &emitter, emitc::LogicalOrOp logicalOrOp) |
static LogicalResult | printOperation (CppEmitter &emitter, emitc::ForOp forOp) |
static LogicalResult | printOperation (CppEmitter &emitter, emitc::IfOp ifOp) |
static LogicalResult | printOperation (CppEmitter &emitter, func::ReturnOp returnOp) |
static LogicalResult | printOperation (CppEmitter &emitter, emitc::ReturnOp returnOp) |
static LogicalResult | printOperation (CppEmitter &emitter, ModuleOp moduleOp) |
static LogicalResult | printFunctionArgs (CppEmitter &emitter, Operation *functionOp, ArrayRef< Type > arguments) |
static LogicalResult | printFunctionArgs (CppEmitter &emitter, Operation *functionOp, Region::BlockArgListType arguments) |
static LogicalResult | printFunctionBody (CppEmitter &emitter, Operation *functionOp, Region::BlockListType &blocks) |
static LogicalResult | printOperation (CppEmitter &emitter, func::FuncOp functionOp) |
static LogicalResult | printOperation (CppEmitter &emitter, emitc::FuncOp functionOp) |
static LogicalResult | printOperation (CppEmitter &emitter, DeclareFuncOp declareFuncOp) |
#define DEBUG_TYPE "translate-to-cpp" |
Definition at line 30 of file TranslateToCpp.cpp.
Return the precedence of a operator as an integer, higher values imply higher precedence.
Definition at line 73 of file TranslateToCpp.cpp.
|
inline |
Definition at line 65 of file TranslateToCpp.cpp.
References interleaveWithError().
Referenced by printFunctionArgs().
|
inline |
Definition at line 58 of file TranslateToCpp.cpp.
References interleaveWithError().
|
inline |
Convenience functions to produce interleaved output with functions returning a LogicalResult.
This is different than those in STLExtras as functions used on each element doesn't return a string.
Definition at line 42 of file TranslateToCpp.cpp.
References mlir::failed(), mlir::failure(), and mlir::success().
Referenced by interleaveCommaWithError(), and interleaveWithError().
|
static |
Definition at line 364 of file TranslateToCpp.cpp.
References mlir::failed(), mlir::failure(), mlir::Operation::getOperand(), and mlir::success().
Referenced by printOperation().
|
static |
Definition at line 559 of file TranslateToCpp.cpp.
References mlir::failed(), mlir::failure(), and mlir::success().
Referenced by printOperation().
|
static |
Definition at line 299 of file TranslateToCpp.cpp.
References mlir::failed(), mlir::failure(), mlir::Operation::getLoc(), mlir::Operation::getResult(), and mlir::success().
Referenced by printOperation().
|
static |
Definition at line 894 of file TranslateToCpp.cpp.
References mlir::Operation::getLoc(), and interleaveCommaWithError().
Referenced by printOperation().
|
static |
Definition at line 905 of file TranslateToCpp.cpp.
References mlir::Operation::getLoc(), mlir::Value::getType(), and interleaveCommaWithError().
|
static |
Definition at line 917 of file TranslateToCpp.cpp.
References mlir::raw_indented_ostream::indent(), mlir::PreOrder, and mlir::Operation::walk().
Referenced by printOperation().
|
static |
Definition at line 493 of file TranslateToCpp.cpp.
References mlir::Block::getArguments(), mlir::Block::getSuccessor(), and mlir::success().
|
static |
Definition at line 513 of file TranslateToCpp.cpp.
References mlir::Block::getArguments(), mlir::raw_indented_ostream::indent(), mlir::success(), and mlir::raw_indented_ostream::unindent().
|
static |
Definition at line 1068 of file TranslateToCpp.cpp.
References mlir::failed(), mlir::failure(), printFunctionArgs(), and mlir::success().
|
static |
Definition at line 399 of file TranslateToCpp.cpp.
References printBinaryOperation().
|
static |
Definition at line 636 of file TranslateToCpp.cpp.
|
static |
Definition at line 347 of file TranslateToCpp.cpp.
References mlir::failed(), mlir::failure(), mlir::Value::getDefiningOp(), and mlir::Operation::getResult().
|
static |
Definition at line 649 of file TranslateToCpp.cpp.
References printBinaryOperation().
|
static |
Definition at line 656 of file TranslateToCpp.cpp.
References printBinaryOperation().
|
static |
Definition at line 662 of file TranslateToCpp.cpp.
References printUnaryOperation().
|
static |
Definition at line 668 of file TranslateToCpp.cpp.
References printBinaryOperation().
|
static |
Definition at line 675 of file TranslateToCpp.cpp.
References printBinaryOperation().
|
static |
Definition at line 681 of file TranslateToCpp.cpp.
References printBinaryOperation().
|
static |
Definition at line 579 of file TranslateToCpp.cpp.
References printCallOperation().
|
static |
Definition at line 586 of file TranslateToCpp.cpp.
|
static |
Definition at line 699 of file TranslateToCpp.cpp.
|
static |
Definition at line 429 of file TranslateToCpp.cpp.
References printBinaryOperation().
|
static |
Definition at line 461 of file TranslateToCpp.cpp.
References mlir::failed(), mlir::failure(), and mlir::success().
|
static |
Definition at line 331 of file TranslateToCpp.cpp.
References printConstantOp().
|
static |
Definition at line 405 of file TranslateToCpp.cpp.
References printBinaryOperation().
|
static |
Definition at line 712 of file TranslateToCpp.cpp.
References shouldBeInlined(), and mlir::success().
|
static |
Definition at line 756 of file TranslateToCpp.cpp.
References mlir::failed(), mlir::failure(), mlir::Value::getDefiningOp(), mlir::Region::getOps(), mlir::raw_indented_ostream::indent(), shouldBeInlined(), mlir::success(), and mlir::raw_indented_ostream::unindent().
|
static |
Definition at line 1027 of file TranslateToCpp.cpp.
References mlir::failed(), mlir::failure(), printFunctionArgs(), printFunctionBody(), and mlir::success().
|
static |
Definition at line 813 of file TranslateToCpp.cpp.
References mlir::Region::empty(), mlir::failed(), mlir::failure(), mlir::raw_indented_ostream::indent(), mlir::success(), and mlir::raw_indented_ostream::unindent().
|
static |
Definition at line 725 of file TranslateToCpp.cpp.
References mlir::success().
|
static |
Definition at line 738 of file TranslateToCpp.cpp.
References printBinaryOperation().
|
static |
Definition at line 744 of file TranslateToCpp.cpp.
References printUnaryOperation().
|
static |
Definition at line 750 of file TranslateToCpp.cpp.
References printBinaryOperation().
|
static |
Definition at line 411 of file TranslateToCpp.cpp.
References printBinaryOperation().
|
static |
Definition at line 417 of file TranslateToCpp.cpp.
References printBinaryOperation().
|
static |
Definition at line 871 of file TranslateToCpp.cpp.
References mlir::failed(), mlir::failure(), and mlir::success().
|
static |
Definition at line 423 of file TranslateToCpp.cpp.
References printBinaryOperation().
|
static |
Definition at line 357 of file TranslateToCpp.cpp.
References mlir::success().
|
static |
Definition at line 693 of file TranslateToCpp.cpp.
References printUnaryOperation().
|
static |
Definition at line 687 of file TranslateToCpp.cpp.
References printUnaryOperation().
|
static |
Definition at line 339 of file TranslateToCpp.cpp.
References printConstantOp().
|
static |
Definition at line 484 of file TranslateToCpp.cpp.
References mlir::success().
|
static |
Definition at line 572 of file TranslateToCpp.cpp.
References printCallOperation().
|
static |
Definition at line 994 of file TranslateToCpp.cpp.
References mlir::failed(), mlir::failure(), printFunctionArgs(), printFunctionBody(), and mlir::success().
|
static |
Definition at line 850 of file TranslateToCpp.cpp.
References mlir::failed(), mlir::failure(), and mlir::success().
|
static |
Definition at line 884 of file TranslateToCpp.cpp.
|
static |
Definition at line 383 of file TranslateToCpp.cpp.
References mlir::failed(), mlir::failure(), mlir::Operation::getOperand(), and mlir::success().
Referenced by printOperation().
|
static |
Determine whether expression expressionOp
should be emitted inline, i.e.
as part of its user. This function recommends inlining of any expressions that can be inlined unless it is used by another expression, under the assumption that any expression fusion/re-materialization was taken care of by transformations run by the backend.
Definition at line 278 of file TranslateToCpp.cpp.
References mlir::Operation::getParentOfType(), mlir::Value::getUsers(), and mlir::Value::hasOneUse().
Referenced by printOperation().