|
MLIR 22.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/IR/Value.h"#include "mlir/Support/IndentedOstream.h"#include "mlir/Support/LLVM.h"#include "mlir/Target/Cpp/CppEmitter.h"#include "llvm/ADT/ScopedHashTable.h"#include "llvm/ADT/StringExtras.h"#include "llvm/ADT/TypeSwitch.h"#include "llvm/Support/Debug.h"#include "llvm/Support/FormatVariadic.h"#include <stack>Go to the source code of this file.
Macros | |
| #define | DEBUG_TYPE "translate-to-cpp" |
Functions | |
| template<typename ForwardIterator, typename UnaryFunctor, typename NullaryFunctor> | |
| static LogicalResult | interleaveWithError (ForwardIterator begin, ForwardIterator end, UnaryFunctor eachFn, NullaryFunctor betweenFn) |
| Convenience functions to produce interleaved output with functions returning a LogicalResult. | |
| template<typename Container, typename UnaryFunctor, typename NullaryFunctor> | |
| static LogicalResult | interleaveWithError (const Container &c, UnaryFunctor eachFn, NullaryFunctor betweenFn) |
| template<typename Container, typename UnaryFunctor> | |
| static 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. | |
| static bool | shouldBeInlined (Operation *op) |
Determine whether operation op should be emitted inline, i.e. | |
| static bool | hasDeferredEmission (Operation *op) |
Determine whether expression op should be emitted in a deferred way. | |
| static LogicalResult | printOperation (CppEmitter &emitter, emitc::DereferenceOp dereferenceOp) |
| static LogicalResult | printOperation (CppEmitter &emitter, emitc::GetFieldOp getFieldOp) |
| static LogicalResult | printOperation (CppEmitter &emitter, emitc::GetGlobalOp getGlobalOp) |
| static LogicalResult | printOperation (CppEmitter &emitter, emitc::LiteralOp literalOp) |
| static LogicalResult | printOperation (CppEmitter &emitter, emitc::MemberOp memberOp) |
| static LogicalResult | printOperation (CppEmitter &emitter, emitc::MemberOfPtrOp memberOfPtrOp) |
| static LogicalResult | printOperation (CppEmitter &emitter, emitc::SubscriptOp subscriptOp) |
| static LogicalResult | printConstantOp (CppEmitter &emitter, Operation *operation, Attribute value) |
| static LogicalResult | printOperation (CppEmitter &emitter, emitc::AddressOfOp addressOfOp) |
| static LogicalResult | printOperation (CppEmitter &emitter, emitc::ConstantOp constantOp) |
| static LogicalResult | printOperation (CppEmitter &emitter, emitc::VariableOp variableOp) |
| static LogicalResult | printOperation (CppEmitter &emitter, emitc::GlobalOp globalOp) |
| static LogicalResult | printOperation (CppEmitter &emitter, emitc::AssignOp assignOp) |
| static LogicalResult | printOperation (CppEmitter &emitter, emitc::LoadOp loadOp) |
| 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 | emitSwitchCase (CppEmitter &emitter, raw_indented_ostream &os, Region ®ion) |
| static LogicalResult | printOperation (CppEmitter &emitter, emitc::SwitchOp switchOp) |
| static LogicalResult | printOperation (CppEmitter &emitter, emitc::DoOp doOp) |
| 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 | printOperation (CppEmitter &emitter, ClassOp classOp) |
| static LogicalResult | printOperation (CppEmitter &emitter, FieldOp fieldOp) |
| static LogicalResult | printOperation (CppEmitter &emitter, FileOp file) |
| 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 28 of file TranslateToCpp.cpp.
|
static |
Definition at line 617 of file TranslateToCpp.cpp.
References mlir::Region::op_begin(), mlir::Region::op_end(), and success().
Referenced by printOperation().
|
static |
Return the precedence of a operator as an integer, higher values imply higher precedence.
Definition at line 71 of file TranslateToCpp.cpp.
Determine whether expression op should be emitted in a deferred way.
Definition at line 335 of file TranslateToCpp.cpp.
Referenced by shouldBeInlined().
|
inlinestatic |
Definition at line 63 of file TranslateToCpp.cpp.
References interleaveWithError().
Referenced by printFunctionArgs(), printFunctionArgs(), and printOperation().
|
inlinestatic |
Definition at line 56 of file TranslateToCpp.cpp.
References interleaveWithError().
|
inlinestatic |
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 40 of file TranslateToCpp.cpp.
References success().
Referenced by interleaveCommaWithError(), and interleaveWithError().
|
static |
Definition at line 552 of file TranslateToCpp.cpp.
References mlir::Operation::getOperand(), and success().
Referenced by printOperation(), printOperation(), printOperation(), printOperation(), printOperation(), printOperation(), printOperation(), printOperation(), printOperation(), printOperation(), printOperation(), printOperation(), and printOperation().
|
static |
Definition at line 827 of file TranslateToCpp.cpp.
References success().
Referenced by printOperation(), and printOperation().
|
static |
Definition at line 467 of file TranslateToCpp.cpp.
References mlir::Operation::getLoc(), mlir::Operation::getResult(), result, and success().
Referenced by printOperation(), and printOperation().
|
static |
Definition at line 1205 of file TranslateToCpp.cpp.
References mlir::Operation::getLoc(), and interleaveCommaWithError().
Referenced by printOperation(), printOperation(), and printOperation().
|
static |
Definition at line 1216 of file TranslateToCpp.cpp.
References mlir::Operation::getLoc(), mlir::Value::getType(), and interleaveCommaWithError().
|
static |
Definition at line 1228 of file TranslateToCpp.cpp.
References mlir::WalkResult::advance(), mlir::Operation::emitError(), mlir::Operation::emitOpError(), mlir::Operation::getParentOp(), mlir::Operation::getResults(), mlir::raw_indented_ostream::indent(), mlir::PreOrder, result, shouldBeInlined(), mlir::WalkResult::skip(), success(), mlir::raw_indented_ostream::unindent(), and mlir::Operation::walk().
Referenced by printOperation(), and printOperation().
|
static |
Definition at line 759 of file TranslateToCpp.cpp.
References mlir::Block::getArguments(), mlir::Block::getSuccessor(), and success().
|
static |
Definition at line 779 of file TranslateToCpp.cpp.
References mlir::Block::getArguments(), mlir::raw_indented_ostream::indent(), success(), and mlir::raw_indented_ostream::unindent().
|
static |
Definition at line 1160 of file TranslateToCpp.cpp.
References mlir::raw_indented_ostream::indent(), success(), and mlir::raw_indented_ostream::unindent().
|
static |
Definition at line 1373 of file TranslateToCpp.cpp.
References mlir::SymbolTable::lookupNearestSymbolFrom(), printFunctionArgs(), and success().
|
static |
Definition at line 587 of file TranslateToCpp.cpp.
References printBinaryOperation().
|
static |
Definition at line 499 of file TranslateToCpp.cpp.
|
static |
Definition at line 906 of file TranslateToCpp.cpp.
|
static |
Definition at line 535 of file TranslateToCpp.cpp.
References result.
|
static |
Definition at line 917 of file TranslateToCpp.cpp.
References printBinaryOperation().
|
static |
Definition at line 924 of file TranslateToCpp.cpp.
References printBinaryOperation().
|
static |
Definition at line 930 of file TranslateToCpp.cpp.
References printUnaryOperation().
|
static |
Definition at line 936 of file TranslateToCpp.cpp.
References printBinaryOperation().
|
static |
Definition at line 943 of file TranslateToCpp.cpp.
References printBinaryOperation().
|
static |
Definition at line 949 of file TranslateToCpp.cpp.
References printBinaryOperation().
|
static |
Definition at line 847 of file TranslateToCpp.cpp.
References printCallOperation().
|
static |
Definition at line 854 of file TranslateToCpp.cpp.
References mlir::Operation::getLoc(), mlir::Operation::getOperand(), interleaveCommaWithError(), and success().
|
static |
Definition at line 967 of file TranslateToCpp.cpp.
References mlir::Operation::getLoc(), mlir::Operation::getResult(), and mlir::Value::getType().
|
static |
Definition at line 681 of file TranslateToCpp.cpp.
References printBinaryOperation().
|
static |
Definition at line 713 of file TranslateToCpp.cpp.
References success().
|
static |
Definition at line 510 of file TranslateToCpp.cpp.
References mlir::Operation::getLoc(), and printConstantOp().
|
static |
Definition at line 407 of file TranslateToCpp.cpp.
References success().
|
static |
Definition at line 593 of file TranslateToCpp.cpp.
References printBinaryOperation().
|
static |
Definition at line 657 of file TranslateToCpp.cpp.
References mlir::Block::back(), mlir::Block::front(), mlir::raw_indented_ostream::indent(), success(), and mlir::raw_indented_ostream::unindent().
|
static |
Definition at line 980 of file TranslateToCpp.cpp.
References shouldBeInlined(), and success().
|
static |
Definition at line 1024 of file TranslateToCpp.cpp.
References mlir::Value::getDefiningOp(), mlir::Region::getOps(), mlir::raw_indented_ostream::indent(), shouldBeInlined(), success(), and mlir::raw_indented_ostream::unindent().
|
static |
Definition at line 1332 of file TranslateToCpp.cpp.
References printFunctionArgs(), printFunctionBody(), and success().
|
static |
Definition at line 416 of file TranslateToCpp.cpp.
References success().
|
static |
Definition at line 423 of file TranslateToCpp.cpp.
References success().
|
static |
Definition at line 529 of file TranslateToCpp.cpp.
|
static |
Definition at line 1081 of file TranslateToCpp.cpp.
References mlir::Region::empty(), mlir::raw_indented_ostream::indent(), success(), and mlir::raw_indented_ostream::unindent().
|
static |
Definition at line 993 of file TranslateToCpp.cpp.
References success().
|
static |
Definition at line 429 of file TranslateToCpp.cpp.
References success().
|
static |
Definition at line 545 of file TranslateToCpp.cpp.
|
static |
Definition at line 1006 of file TranslateToCpp.cpp.
References printBinaryOperation().
|
static |
Definition at line 1012 of file TranslateToCpp.cpp.
References printUnaryOperation().
|
static |
Definition at line 1018 of file TranslateToCpp.cpp.
References printBinaryOperation().
|
static |
Definition at line 445 of file TranslateToCpp.cpp.
References success().
|
static |
Definition at line 435 of file TranslateToCpp.cpp.
References success().
|
static |
Definition at line 599 of file TranslateToCpp.cpp.
References printBinaryOperation().
|
static |
Definition at line 605 of file TranslateToCpp.cpp.
References printBinaryOperation().
|
static |
Definition at line 1139 of file TranslateToCpp.cpp.
References success().
|
static |
Definition at line 611 of file TranslateToCpp.cpp.
References printBinaryOperation().
|
static |
Definition at line 455 of file TranslateToCpp.cpp.
References success().
|
static |
Definition at line 628 of file TranslateToCpp.cpp.
References emitSwitchCase(), mlir::raw_indented_ostream::indent(), success(), and mlir::raw_indented_ostream::unindent().
|
static |
Definition at line 961 of file TranslateToCpp.cpp.
References printUnaryOperation().
|
static |
Definition at line 955 of file TranslateToCpp.cpp.
References printUnaryOperation().
|
static |
Definition at line 521 of file TranslateToCpp.cpp.
References printConstantOp().
|
static |
Definition at line 736 of file TranslateToCpp.cpp.
References success().
|
static |
Definition at line 1178 of file TranslateToCpp.cpp.
References success().
|
static |
Definition at line 1194 of file TranslateToCpp.cpp.
References success().
|
static |
Definition at line 840 of file TranslateToCpp.cpp.
References printCallOperation().
|
static |
Definition at line 1295 of file TranslateToCpp.cpp.
References printFunctionArgs(), printFunctionBody(), and success().
|
static |
Definition at line 1118 of file TranslateToCpp.cpp.
References success().
|
static |
Definition at line 1152 of file TranslateToCpp.cpp.
References success().
|
static |
Definition at line 571 of file TranslateToCpp.cpp.
References mlir::Operation::getOperand(), and success().
Referenced by printOperation(), printOperation(), printOperation(), and printOperation().
Determine whether operation op 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 347 of file TranslateToCpp.cpp.
References mlir::Operation::getParentOp(), hasDeferredEmission(), and result.
Referenced by printFunctionBody(), printOperation(), and printOperation().