MLIR 24.0.0git
TranslateToCpp.cpp File Reference
#include "mlir/Dialect/ControlFlow/IR/ControlFlowOps.h"
#include "mlir/Dialect/EmitC/IR/EmitC.h"
#include "mlir/Dialect/EmitC/IR/EmitCInterfaces.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/Casting.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>
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 emitc::GlobalOp getConstGlobal (Value value, Operation *fromOp)
 Helper function to check if a value traces back to a const global.
static LogicalResult emitAddressOfWithConstCast (CppEmitter &emitter, Operation &op, Value operand)
 Emit address-of with a cast to strip const qualification.
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 printCompoundAssignmentOperation (CppEmitter &emitter, Operation *operation, StringRef compoundAssignmentOperator)
static LogicalResult printOperation (CppEmitter &emitter, emitc::AddAssignOp addAssignOp)
static LogicalResult printOperation (CppEmitter &emitter, emitc::SubAssignOp subAssignOp)
static LogicalResult printOperation (CppEmitter &emitter, emitc::MulAssignOp mulAssignOp)
static LogicalResult printOperation (CppEmitter &emitter, emitc::DivAssignOp divAssignOp)
static LogicalResult printOperation (CppEmitter &emitter, emitc::RemAssignOp remAssignOp)
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 printPostfixUnaryOperation (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 &region)
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)
template<typename OpTy>
static LogicalResult printOpaqueCallCommon (CppEmitter &emitter, OpTy op, StringRef callee, std::optional< ArrayAttr > templateArgs, std::optional< ArrayAttr > args, bool isMemberCall, Value receiver=nullptr)
static LogicalResult printOperation (CppEmitter &emitter, emitc::CallOpaqueOp callOpaqueOp)
static LogicalResult printOperation (CppEmitter &emitter, emitc::MemberCallOpaqueOp memberCallOpaqueOp)
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::PreIncrementOp preIncrementOp)
static LogicalResult printOperation (CppEmitter &emitter, emitc::PostIncrementOp postIncrementOp)
static LogicalResult printOperation (CppEmitter &emitter, emitc::PreDecrementOp preDecrementOp)
static LogicalResult printOperation (CppEmitter &emitter, emitc::PostDecrementOp postDecrementOp)
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)

Macro Definition Documentation

◆ DEBUG_TYPE

#define DEBUG_TYPE   "translate-to-cpp"

Definition at line 30 of file TranslateToCpp.cpp.

Function Documentation

◆ emitAddressOfWithConstCast()

LogicalResult emitAddressOfWithConstCast ( CppEmitter & emitter,
Operation & op,
Value operand )
static

Emit address-of with a cast to strip const qualification.

Produces: (ResultType)(&operand)

Definition at line 424 of file TranslateToCpp.cpp.

References mlir::Operation::getLoc(), mlir::Operation::getResult(), mlir::Value::getType(), and success().

Referenced by printOperation().

◆ emitSwitchCase()

LogicalResult emitSwitchCase ( CppEmitter & emitter,
raw_indented_ostream & os,
Region & region )
static

Definition at line 728 of file TranslateToCpp.cpp.

References mlir::Region::op_begin(), mlir::Region::op_end(), and success().

Referenced by printOperation().

◆ getConstGlobal()

emitc::GlobalOp getConstGlobal ( Value value,
Operation * fromOp )
static

Helper function to check if a value traces back to a const global.

Handles direct GetGlobalOp and GetGlobalOp through one or more SubscriptOps. Returns the GlobalOp if found and it has const_specifier, nullptr otherwise.

Definition at line 403 of file TranslateToCpp.cpp.

References mlir::Value::getDefiningOp(), and mlir::SymbolTable::lookupNearestSymbolFrom().

Referenced by printOperation().

◆ getOperatorPrecedence()

FailureOr< int > getOperatorPrecedence ( Operation * operation)
static

Return the precedence of a operator as an integer, higher values imply higher precedence.

Definition at line 66 of file TranslateToCpp.cpp.

◆ interleaveCommaWithError()

template<typename Container, typename UnaryFunctor>
LogicalResult interleaveCommaWithError ( const Container & c,
raw_ostream & os,
UnaryFunctor eachFn )
inlinestatic

Definition at line 58 of file TranslateToCpp.cpp.

References interleaveWithError().

Referenced by printFunctionArgs(), printFunctionArgs(), and printOpaqueCallCommon().

◆ interleaveWithError()

template<typename ForwardIterator, typename UnaryFunctor, typename NullaryFunctor>
LogicalResult interleaveWithError ( ForwardIterator begin,
ForwardIterator end,
UnaryFunctor eachFn,
NullaryFunctor betweenFn )
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 42 of file TranslateToCpp.cpp.

References success().

Referenced by interleaveCommaWithError().

◆ printBinaryOperation()

LogicalResult printBinaryOperation ( CppEmitter & emitter,
Operation * operation,
StringRef binaryOperator )
static

◆ printCallOperation()

LogicalResult printCallOperation ( CppEmitter & emitter,
Operation * callOp,
StringRef callee )
static

Definition at line 938 of file TranslateToCpp.cpp.

References success().

Referenced by printOperation(), and printOperation().

◆ printCompoundAssignmentOperation()

LogicalResult printCompoundAssignmentOperation ( CppEmitter & emitter,
Operation * operation,
StringRef compoundAssignmentOperator )
static

◆ printConstantOp()

LogicalResult printConstantOp ( CppEmitter & emitter,
Operation * operation,
Attribute value )
static

◆ printFunctionArgs() [1/2]

LogicalResult printFunctionArgs ( CppEmitter & emitter,
Operation * functionOp,
ArrayRef< Type > arguments )
static

◆ printFunctionArgs() [2/2]

LogicalResult printFunctionArgs ( CppEmitter & emitter,
Operation * functionOp,
Region::BlockArgListType arguments )
static

◆ printFunctionBody()

◆ printOpaqueCallCommon()

template<typename OpTy>
LogicalResult printOpaqueCallCommon ( CppEmitter & emitter,
OpTy op,
StringRef callee,
std::optional< ArrayAttr > templateArgs,
std::optional< ArrayAttr > args,
bool isMemberCall,
Value receiver = nullptr )
static

Definition at line 967 of file TranslateToCpp.cpp.

References interleaveCommaWithError(), and success().

Referenced by printOperation(), and printOperation().

◆ printOperation() [1/63]

LogicalResult printOperation ( CppEmitter & emitter,
cf::BranchOp branchOp )
static

◆ printOperation() [2/63]

LogicalResult printOperation ( CppEmitter & emitter,
cf::CondBranchOp condBranchOp )
static

◆ printOperation() [3/63]

LogicalResult printOperation ( CppEmitter & emitter,
ClassOp classOp )
static

◆ printOperation() [4/63]

LogicalResult printOperation ( CppEmitter & emitter,
DeclareFuncOp declareFuncOp )
static

◆ printOperation() [5/63]

LogicalResult printOperation ( CppEmitter & emitter,
emitc::AddAssignOp addAssignOp )
static

Definition at line 615 of file TranslateToCpp.cpp.

References printCompoundAssignmentOperation().

◆ printOperation() [6/63]

LogicalResult printOperation ( CppEmitter & emitter,
emitc::AddOp addOp )
static

Definition at line 698 of file TranslateToCpp.cpp.

References printBinaryOperation().

◆ printOperation() [7/63]

LogicalResult printOperation ( CppEmitter & emitter,
emitc::AddressOfOp addressOfOp )
static

Definition at line 551 of file TranslateToCpp.cpp.

References emitAddressOfWithConstCast(), and getConstGlobal().

◆ printOperation() [8/63]

LogicalResult printOperation ( CppEmitter & emitter,
emitc::AssignOp assignOp )
static

Definition at line 594 of file TranslateToCpp.cpp.

◆ printOperation() [9/63]

LogicalResult printOperation ( CppEmitter & emitter,
emitc::BitwiseAndOp bitwiseAndOp )
static

Definition at line 1052 of file TranslateToCpp.cpp.

References printBinaryOperation().

◆ printOperation() [10/63]

LogicalResult printOperation ( CppEmitter & emitter,
emitc::BitwiseLeftShiftOp bitwiseLeftShiftOp )
static

Definition at line 1059 of file TranslateToCpp.cpp.

References printBinaryOperation().

◆ printOperation() [11/63]

LogicalResult printOperation ( CppEmitter & emitter,
emitc::BitwiseNotOp bitwiseNotOp )
static

Definition at line 1065 of file TranslateToCpp.cpp.

References printUnaryOperation().

◆ printOperation() [12/63]

LogicalResult printOperation ( CppEmitter & emitter,
emitc::BitwiseOrOp bitwiseOrOp )
static

Definition at line 1071 of file TranslateToCpp.cpp.

References printBinaryOperation().

◆ printOperation() [13/63]

LogicalResult printOperation ( CppEmitter & emitter,
emitc::BitwiseRightShiftOp bitwiseRightShiftOp )
static

Definition at line 1078 of file TranslateToCpp.cpp.

References printBinaryOperation().

◆ printOperation() [14/63]

LogicalResult printOperation ( CppEmitter & emitter,
emitc::BitwiseXorOp bitwiseXorOp )
static

Definition at line 1084 of file TranslateToCpp.cpp.

References printBinaryOperation().

◆ printOperation() [15/63]

LogicalResult printOperation ( CppEmitter & emitter,
emitc::CallOp callOp )
static

Definition at line 958 of file TranslateToCpp.cpp.

References printCallOperation().

◆ printOperation() [16/63]

LogicalResult printOperation ( CppEmitter & emitter,
emitc::CallOpaqueOp callOpaqueOp )
static

Definition at line 1035 of file TranslateToCpp.cpp.

References printOpaqueCallCommon().

◆ printOperation() [17/63]

LogicalResult printOperation ( CppEmitter & emitter,
emitc::CastOp castOp )
static

◆ printOperation() [18/63]

LogicalResult printOperation ( CppEmitter & emitter,
emitc::CmpOp cmpOp )
static

Definition at line 792 of file TranslateToCpp.cpp.

References printBinaryOperation().

◆ printOperation() [19/63]

LogicalResult printOperation ( CppEmitter & emitter,
emitc::ConditionalOp conditionalOp )
static

Definition at line 824 of file TranslateToCpp.cpp.

References success().

◆ printOperation() [20/63]

LogicalResult printOperation ( CppEmitter & emitter,
emitc::ConstantOp constantOp )
static

Definition at line 569 of file TranslateToCpp.cpp.

References mlir::Operation::getLoc(), and printConstantOp().

◆ printOperation() [21/63]

LogicalResult printOperation ( CppEmitter & emitter,
emitc::DereferenceOp dereferenceOp )
static

Definition at line 437 of file TranslateToCpp.cpp.

◆ printOperation() [22/63]

LogicalResult printOperation ( CppEmitter & emitter,
emitc::DivAssignOp divAssignOp )
static

Definition at line 630 of file TranslateToCpp.cpp.

References printCompoundAssignmentOperation().

◆ printOperation() [23/63]

LogicalResult printOperation ( CppEmitter & emitter,
emitc::DivOp divOp )
static

Definition at line 704 of file TranslateToCpp.cpp.

References printBinaryOperation().

◆ printOperation() [24/63]

LogicalResult printOperation ( CppEmitter & emitter,
emitc::DoOp doOp )
static

◆ printOperation() [25/63]

LogicalResult printOperation ( CppEmitter & emitter,
emitc::ExpressionOp expressionOp )
static

Definition at line 1139 of file TranslateToCpp.cpp.

References shouldBeInlined(), and success().

◆ printOperation() [26/63]

LogicalResult printOperation ( CppEmitter & emitter,
emitc::ForOp forOp )
static

◆ printOperation() [27/63]

LogicalResult printOperation ( CppEmitter & emitter,
emitc::FuncOp functionOp )
static

Definition at line 1496 of file TranslateToCpp.cpp.

References printFunctionArgs(), printFunctionBody(), and success().

◆ printOperation() [28/63]

LogicalResult printOperation ( CppEmitter & emitter,
emitc::GetFieldOp getFieldOp )
static

Definition at line 448 of file TranslateToCpp.cpp.

References success().

◆ printOperation() [29/63]

LogicalResult printOperation ( CppEmitter & emitter,
emitc::GetGlobalOp getGlobalOp )
static

Definition at line 457 of file TranslateToCpp.cpp.

References success().

◆ printOperation() [30/63]

LogicalResult printOperation ( CppEmitter & emitter,
emitc::GlobalOp globalOp )
static

Definition at line 588 of file TranslateToCpp.cpp.

◆ printOperation() [31/63]

LogicalResult printOperation ( CppEmitter & emitter,
emitc::IfOp ifOp )
static

◆ printOperation() [32/63]

LogicalResult printOperation ( CppEmitter & emitter,
emitc::IncludeOp includeOp )
static

Definition at line 1152 of file TranslateToCpp.cpp.

References success().

◆ printOperation() [33/63]

LogicalResult printOperation ( CppEmitter & emitter,
emitc::LiteralOp literalOp )
static

Definition at line 466 of file TranslateToCpp.cpp.

References success().

◆ printOperation() [34/63]

LogicalResult printOperation ( CppEmitter & emitter,
emitc::LoadOp loadOp )
static

Definition at line 640 of file TranslateToCpp.cpp.

◆ printOperation() [35/63]

LogicalResult printOperation ( CppEmitter & emitter,
emitc::LogicalAndOp logicalAndOp )
static

Definition at line 1165 of file TranslateToCpp.cpp.

References printBinaryOperation().

◆ printOperation() [36/63]

LogicalResult printOperation ( CppEmitter & emitter,
emitc::LogicalNotOp logicalNotOp )
static

Definition at line 1171 of file TranslateToCpp.cpp.

References printUnaryOperation().

◆ printOperation() [37/63]

LogicalResult printOperation ( CppEmitter & emitter,
emitc::LogicalOrOp logicalOrOp )
static

Definition at line 1177 of file TranslateToCpp.cpp.

References printBinaryOperation().

◆ printOperation() [38/63]

LogicalResult printOperation ( CppEmitter & emitter,
emitc::MemberCallOpaqueOp memberCallOpaqueOp )
static

Definition at line 1044 of file TranslateToCpp.cpp.

References printOpaqueCallCommon().

◆ printOperation() [39/63]

LogicalResult printOperation ( CppEmitter & emitter,
emitc::MemberOfPtrOp memberOfPtrOp )
static

Definition at line 490 of file TranslateToCpp.cpp.

References success().

◆ printOperation() [40/63]

LogicalResult printOperation ( CppEmitter & emitter,
emitc::MemberOp memberOp )
static

Definition at line 475 of file TranslateToCpp.cpp.

References success().

◆ printOperation() [41/63]

LogicalResult printOperation ( CppEmitter & emitter,
emitc::MulAssignOp mulAssignOp )
static

Definition at line 625 of file TranslateToCpp.cpp.

References printCompoundAssignmentOperation().

◆ printOperation() [42/63]

LogicalResult printOperation ( CppEmitter & emitter,
emitc::MulOp mulOp )
static

Definition at line 710 of file TranslateToCpp.cpp.

References printBinaryOperation().

◆ printOperation() [43/63]

LogicalResult printOperation ( CppEmitter & emitter,
emitc::PostDecrementOp postDecrementOp )
static

Definition at line 1108 of file TranslateToCpp.cpp.

References printPostfixUnaryOperation().

◆ printOperation() [44/63]

LogicalResult printOperation ( CppEmitter & emitter,
emitc::PostIncrementOp postIncrementOp )
static

Definition at line 1096 of file TranslateToCpp.cpp.

References printPostfixUnaryOperation().

◆ printOperation() [45/63]

LogicalResult printOperation ( CppEmitter & emitter,
emitc::PreDecrementOp preDecrementOp )
static

Definition at line 1102 of file TranslateToCpp.cpp.

References printUnaryOperation().

◆ printOperation() [46/63]

LogicalResult printOperation ( CppEmitter & emitter,
emitc::PreIncrementOp preIncrementOp )
static

Definition at line 1090 of file TranslateToCpp.cpp.

References printUnaryOperation().

◆ printOperation() [47/63]

LogicalResult printOperation ( CppEmitter & emitter,
emitc::RemAssignOp remAssignOp )
static

Definition at line 635 of file TranslateToCpp.cpp.

References printCompoundAssignmentOperation().

◆ printOperation() [48/63]

LogicalResult printOperation ( CppEmitter & emitter,
emitc::RemOp remOp )
static

Definition at line 716 of file TranslateToCpp.cpp.

References printBinaryOperation().

◆ printOperation() [49/63]

LogicalResult printOperation ( CppEmitter & emitter,
emitc::ReturnOp returnOp )
static

Definition at line 1298 of file TranslateToCpp.cpp.

References success().

◆ printOperation() [50/63]

LogicalResult printOperation ( CppEmitter & emitter,
emitc::SubAssignOp subAssignOp )
static

Definition at line 620 of file TranslateToCpp.cpp.

References printCompoundAssignmentOperation().

◆ printOperation() [51/63]

LogicalResult printOperation ( CppEmitter & emitter,
emitc::SubOp subOp )
static

Definition at line 722 of file TranslateToCpp.cpp.

References printBinaryOperation().

◆ printOperation() [52/63]

LogicalResult printOperation ( CppEmitter & emitter,
emitc::SubscriptOp subscriptOp )
static

Definition at line 501 of file TranslateToCpp.cpp.

References success().

◆ printOperation() [53/63]

LogicalResult printOperation ( CppEmitter & emitter,
emitc::SwitchOp switchOp )
static

◆ printOperation() [54/63]

LogicalResult printOperation ( CppEmitter & emitter,
emitc::UnaryMinusOp unaryMinusOp )
static

Definition at line 1120 of file TranslateToCpp.cpp.

References printUnaryOperation().

◆ printOperation() [55/63]

LogicalResult printOperation ( CppEmitter & emitter,
emitc::UnaryPlusOp unaryPlusOp )
static

Definition at line 1114 of file TranslateToCpp.cpp.

References printUnaryOperation().

◆ printOperation() [56/63]

LogicalResult printOperation ( CppEmitter & emitter,
emitc::VariableOp variableOp )
static

Definition at line 580 of file TranslateToCpp.cpp.

References printConstantOp().

◆ printOperation() [57/63]

LogicalResult printOperation ( CppEmitter & emitter,
emitc::VerbatimOp verbatimOp )
static

Definition at line 847 of file TranslateToCpp.cpp.

References success().

◆ printOperation() [58/63]

LogicalResult printOperation ( CppEmitter & emitter,
FieldOp fieldOp )
static

Definition at line 1342 of file TranslateToCpp.cpp.

References success().

◆ printOperation() [59/63]

LogicalResult printOperation ( CppEmitter & emitter,
FileOp file )
static

Definition at line 1358 of file TranslateToCpp.cpp.

References success().

◆ printOperation() [60/63]

LogicalResult printOperation ( CppEmitter & emitter,
func::CallOp callOp )
static

Definition at line 951 of file TranslateToCpp.cpp.

References printCallOperation().

◆ printOperation() [61/63]

LogicalResult printOperation ( CppEmitter & emitter,
func::FuncOp functionOp )
static

Definition at line 1459 of file TranslateToCpp.cpp.

References printFunctionArgs(), printFunctionBody(), and success().

◆ printOperation() [62/63]

LogicalResult printOperation ( CppEmitter & emitter,
func::ReturnOp returnOp )
static

Definition at line 1277 of file TranslateToCpp.cpp.

References success().

◆ printOperation() [63/63]

LogicalResult printOperation ( CppEmitter & emitter,
ModuleOp moduleOp )
static

Definition at line 1311 of file TranslateToCpp.cpp.

References success().

◆ printPostfixUnaryOperation()

LogicalResult printPostfixUnaryOperation ( CppEmitter & emitter,
Operation * operation,
StringRef unaryOperator )
static

Definition at line 682 of file TranslateToCpp.cpp.

References mlir::Operation::getOperand(), and success().

Referenced by printOperation(), and printOperation().

◆ printUnaryOperation()

LogicalResult printUnaryOperation ( CppEmitter & emitter,
Operation * operation,
StringRef unaryOperator )
static

◆ shouldBeInlined()

bool shouldBeInlined ( Operation * op)
static

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 341 of file TranslateToCpp.cpp.

References mlir::Operation::getParentOp(), and result.

Referenced by printFunctionBody(), printOperation(), and printOperation().