My Project
FunctionImplementation.h
Go to the documentation of this file.
1 //===- FunctionImplementation.h - Function-like Op utilities ----*- C++ -*-===//
2 //
3 // Part of the MLIR Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8 //
9 // This file provides utility functions for implementing function-like
10 // operations, in particular, parsing, printing and verification components
11 // common to function-like operations.
12 //
13 //===----------------------------------------------------------------------===//
14 
15 #ifndef MLIR_IR_FUNCTIONIMPLEMENTATION_H_
16 #define MLIR_IR_FUNCTIONIMPLEMENTATION_H_
17 
20 
21 namespace mlir {
22 
23 namespace impl {
24 
26 class VariadicFlag {
27 public:
28  explicit VariadicFlag(bool variadic) : variadic(variadic) {}
29  bool isVariadic() const { return variadic; }
30 
31 private:
33  bool variadic;
34 };
35 
40 void addArgAndResultAttrs(Builder &builder, OperationState &result,
43 
51 
57  OpAsmParser &parser, bool allowVariadic,
59  SmallVectorImpl<Type> &argTypes,
61  SmallVectorImpl<Type> &resultTypes,
63 
72  bool allowVariadic,
73  FuncTypeBuilder funcTypeBuilder);
74 
78  ArrayRef<Type> argTypes, bool isVariadic,
79  ArrayRef<Type> resultTypes);
80 
84  ArrayRef<Type> argTypes, bool isVariadic,
85  ArrayRef<Type> resultTypes);
86 
92 void printFunctionAttributes(OpAsmPrinter &p, Operation *op, unsigned numInputs,
93  unsigned numResults,
94  ArrayRef<StringRef> elided = {});
95 
96 } // namespace impl
97 
98 } // namespace mlir
99 
100 #endif // MLIR_IR_FUNCTIONIMPLEMENTATION_H_
Definition: InferTypeOpInterface.cpp:20
void printFunctionAttributes(OpAsmPrinter &p, Operation *op, unsigned numInputs, unsigned numResults, ArrayRef< StringRef > elided={})
Definition: FunctionImplementation.cpp:273
Definition: Operation.h:27
Definition: Attributes.h:139
Definition: LLVM.h:49
void addArgAndResultAttrs(Builder &builder, OperationState &result, ArrayRef< SmallVector< NamedAttribute, 2 >> argAttrs, ArrayRef< SmallVector< NamedAttribute, 2 >> resultAttrs)
Definition: FunctionImplementation.cpp:142
Definition: OpImplementation.h:214
Definition: LLVM.h:34
Definition: LLVM.h:37
Definition: OpImplementation.h:32
Definition: OperationSupport.h:261
ParseResult parseFunctionSignature(OpAsmParser &parser, bool allowVariadic, SmallVectorImpl< OpAsmParser::OperandType > &argNames, SmallVectorImpl< Type > &argTypes, SmallVectorImpl< SmallVector< NamedAttribute, 2 >> &argAttrs, bool &isVariadic, SmallVectorImpl< Type > &resultTypes, SmallVectorImpl< SmallVector< NamedAttribute, 2 >> &resultAttrs)
Definition: FunctionImplementation.cpp:127
ParseResult parseFunctionLikeOp(OpAsmParser &parser, OperationState &result, bool allowVariadic, FuncTypeBuilder funcTypeBuilder)
Definition: FunctionImplementation.cpp:163
VariadicFlag(bool variadic)
Definition: FunctionImplementation.h:28
Definition: LLVM.h:35
A named class for passing around the variadic flag.
Definition: FunctionImplementation.h:26
Definition: Builders.h:47
bool isVariadic() const
Definition: FunctionImplementation.h:29
void printFunctionSignature(OpAsmPrinter &p, Operation *op, ArrayRef< Type > argTypes, bool isVariadic, ArrayRef< Type > resultTypes)
Definition: FunctionImplementation.cpp:230
Definition: OpDefinition.h:36
void printFunctionLikeOp(OpAsmPrinter &p, Operation *op, ArrayRef< Type > argTypes, bool isVariadic, ArrayRef< Type > resultTypes)
Definition: FunctionImplementation.cpp:303