2019-05-15 06:03:48 +08:00
|
|
|
//===- Argument.cpp - Argument definitions --------------------------------===//
|
2019-01-26 02:13:35 +08:00
|
|
|
//
|
2020-01-26 11:58:30 +08:00
|
|
|
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
2019-12-24 01:35:36 +08:00
|
|
|
// See https://llvm.org/LICENSE.txt for license information.
|
|
|
|
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
2019-01-26 02:13:35 +08:00
|
|
|
//
|
2019-12-24 01:35:36 +08:00
|
|
|
//===----------------------------------------------------------------------===//
|
2019-01-26 02:13:35 +08:00
|
|
|
|
|
|
|
#include "mlir/TableGen/Argument.h"
|
|
|
|
#include "llvm/TableGen/Record.h"
|
|
|
|
|
|
|
|
using namespace mlir;
|
2020-08-12 08:47:07 +08:00
|
|
|
using namespace mlir::tblgen;
|
2019-01-26 02:13:35 +08:00
|
|
|
|
[mlir] Add support for VariadicOfVariadic operands
This revision adds native ODS support for VariadicOfVariadic operand
groups. An example of this is the SwitchOp, which has a variadic number
of nested operand ranges for each of the case statements, where the
number of case statements is variadic. Builtin ODS support allows for
generating proper accessors for the nested operand ranges, builder
support, and declarative format support. VariadicOfVariadic operands
are supported by providing a segment attribute to use to store the
operand groups, mapping similarly to the AttrSizedOperand trait
(but with a user defined attribute name).
`build` methods for VariadicOfVariadic operand expect inputs of the
form `ArrayRef<ValueRange>`. Accessors for the variadic ranges
return a new `OperandRangeRange` type, which represents a
contiguous range of `OperandRange`. In the declarative assembly
format, VariadicOfVariadic operands and types are by default
formatted as a comma delimited list of value lists:
`(<value>, <value>), (), (<value>)`.
Differential Revision: https://reviews.llvm.org/D107774
2021-08-24 04:23:09 +08:00
|
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
// NamedTypeConstraint
|
|
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
|
2020-08-12 08:47:07 +08:00
|
|
|
bool NamedTypeConstraint::hasPredicate() const {
|
2019-03-18 22:54:20 +08:00
|
|
|
return !constraint.getPredicate().isNull();
|
2019-01-26 02:13:35 +08:00
|
|
|
}
|
2019-04-26 05:45:37 +08:00
|
|
|
|
2020-08-12 08:47:07 +08:00
|
|
|
bool NamedTypeConstraint::isOptional() const { return constraint.isOptional(); }
|
2020-04-11 05:11:45 +08:00
|
|
|
|
2020-08-12 08:47:07 +08:00
|
|
|
bool NamedTypeConstraint::isVariadic() const { return constraint.isVariadic(); }
|
[mlir] Add support for VariadicOfVariadic operands
This revision adds native ODS support for VariadicOfVariadic operand
groups. An example of this is the SwitchOp, which has a variadic number
of nested operand ranges for each of the case statements, where the
number of case statements is variadic. Builtin ODS support allows for
generating proper accessors for the nested operand ranges, builder
support, and declarative format support. VariadicOfVariadic operands
are supported by providing a segment attribute to use to store the
operand groups, mapping similarly to the AttrSizedOperand trait
(but with a user defined attribute name).
`build` methods for VariadicOfVariadic operand expect inputs of the
form `ArrayRef<ValueRange>`. Accessors for the variadic ranges
return a new `OperandRangeRange` type, which represents a
contiguous range of `OperandRange`. In the declarative assembly
format, VariadicOfVariadic operands and types are by default
formatted as a comma delimited list of value lists:
`(<value>, <value>), (), (<value>)`.
Differential Revision: https://reviews.llvm.org/D107774
2021-08-24 04:23:09 +08:00
|
|
|
|
|
|
|
bool NamedTypeConstraint::isVariadicOfVariadic() const {
|
|
|
|
return constraint.isVariadicOfVariadic();
|
|
|
|
}
|