Skip to content

Commit 1be88f5

Browse files
committed
[mlir][NFC] Update remaining dialect operations to use hasVerifier instead of verifier
The verifier field is deprecated, and slated for removal. Differential Revision: https://reviews.llvm.org/D118829
1 parent 0d86e53 commit 1be88f5

File tree

24 files changed

+331
-314
lines changed

24 files changed

+331
-314
lines changed

mlir/include/mlir/Dialect/Arithmetic/IR/ArithmeticOps.td

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,6 @@ def Arith_ConstantOp : Op<Arithmetic_Dialect, "constant",
158158
// of strings and signed/unsigned integers (for now) as an artefact of
159159
// splitting the Standard dialect.
160160
let results = (outs /*SignlessIntegerOrFloatLike*/AnyType:$result);
161-
let verifier = [{ return ::verify(*this); }];
162161

163162
let builders = [
164163
OpBuilder<(ins "Attribute":$value),
@@ -175,6 +174,7 @@ def Arith_ConstantOp : Op<Arithmetic_Dialect, "constant",
175174

176175
let hasFolder = 1;
177176
let assemblyFormat = "attr-dict $value";
177+
let hasVerifier = 1;
178178
}
179179

180180
//===----------------------------------------------------------------------===//
@@ -814,7 +814,7 @@ def Arith_ExtUIOp : Arith_IToICastOp<"extui"> {
814814
}];
815815

816816
let hasFolder = 1;
817-
let verifier = [{ return verifyExtOp<IntegerType>(*this); }];
817+
let hasVerifier = 1;
818818
}
819819

820820
//===----------------------------------------------------------------------===//
@@ -845,7 +845,7 @@ def Arith_ExtSIOp : Arith_IToICastOp<"extsi"> {
845845

846846
let hasFolder = 1;
847847
let hasCanonicalizer = 1;
848-
let verifier = [{ return verifyExtOp<IntegerType>(*this); }];
848+
let hasVerifier = 1;
849849
}
850850

851851
//===----------------------------------------------------------------------===//
@@ -859,8 +859,7 @@ def Arith_ExtFOp : Arith_FToFCastOp<"extf"> {
859859
The destination type must to be strictly wider than the source type.
860860
When operating on vectors, casts elementwise.
861861
}];
862-
863-
let verifier = [{ return verifyExtOp<FloatType>(*this); }];
862+
let hasVerifier = 1;
864863
}
865864

866865
//===----------------------------------------------------------------------===//
@@ -887,7 +886,7 @@ def Arith_TruncIOp : Arith_IToICastOp<"trunci"> {
887886
}];
888887

889888
let hasFolder = 1;
890-
let verifier = [{ return verifyTruncateOp<IntegerType>(*this); }];
889+
let hasVerifier = 1;
891890
}
892891

893892
//===----------------------------------------------------------------------===//
@@ -904,7 +903,7 @@ def Arith_TruncFOp : Arith_FToFCastOp<"truncf"> {
904903
}];
905904

906905
let hasFolder = 1;
907-
let verifier = [{ return verifyTruncateOp<FloatType>(*this); }];
906+
let hasVerifier = 1;
908907
}
909908

910909
//===----------------------------------------------------------------------===//

mlir/include/mlir/Dialect/Async/IR/AsyncOps.td

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -83,9 +83,9 @@ def Async_ExecuteOp :
8383

8484
let printer = [{ return ::print(p, *this); }];
8585
let parser = [{ return ::parse$cppClass(parser, result); }];
86-
let verifier = [{ return ::verify(*this); }];
8786

8887
let skipDefaultBuilders = 1;
88+
let hasVerifier = 1;
8989
let builders = [
9090
OpBuilder<(ins "TypeRange":$resultTypes, "ValueRange":$dependencies,
9191
"ValueRange":$operands,
@@ -111,10 +111,8 @@ def Async_YieldOp :
111111
}];
112112

113113
let arguments = (ins Variadic<AnyType>:$operands);
114-
115114
let assemblyFormat = "($operands^ `:` type($operands))? attr-dict";
116-
117-
let verifier = [{ return ::verify(*this); }];
115+
let hasVerifier = 1;
118116
}
119117

120118
def Async_AwaitOp : Async_Op<"await"> {
@@ -138,6 +136,7 @@ def Async_AwaitOp : Async_Op<"await"> {
138136
let results = (outs Optional<AnyType>:$result);
139137

140138
let skipDefaultBuilders = 1;
139+
let hasVerifier = 1;
141140

142141
let builders = [
143142
OpBuilder<(ins "Value":$operand,
@@ -156,8 +155,6 @@ def Async_AwaitOp : Async_Op<"await"> {
156155
type($operand), type($result)
157156
) attr-dict
158157
}];
159-
160-
let verifier = [{ return ::verify(*this); }];
161158
}
162159

163160
def Async_CreateGroupOp : Async_Op<"create_group", [NoSideEffect]> {

mlir/include/mlir/Dialect/Bufferization/IR/BufferizationOps.td

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,6 @@ def Bufferization_CloneOp : Bufferization_Op<"clone", [
5858
let assemblyFormat = "$input attr-dict `:` type($input) `to` type($output)";
5959

6060
let hasFolder = 1;
61-
let verifier = ?;
6261
let hasCanonicalizer = 1;
6362
}
6463
//===----------------------------------------------------------------------===//
@@ -97,8 +96,6 @@ def Bufferization_ToTensorOp : Bufferization_Op<"to_tensor", [
9796
let arguments = (ins Arg<AnyRankedOrUnrankedMemRef,
9897
"the reference to load from", [MemRead]>:$memref);
9998
let results = (outs AnyTensor:$result);
100-
// MemrefToTensor is fully verified by traits.
101-
let verifier = ?;
10299

103100
let builders = [
104101
OpBuilder<(ins "Value":$memref), [{
@@ -184,8 +181,6 @@ def Bufferization_ToMemrefOp : Bufferization_Op<"to_memref", [
184181

185182
let arguments = (ins AnyTensor:$tensor);
186183
let results = (outs AnyRankedOrUnrankedMemRef:$memref);
187-
// This op is fully verified by traits.
188-
let verifier = ?;
189184

190185
let extraClassDeclaration = [{
191186
//===------------------------------------------------------------------===//

mlir/include/mlir/Dialect/Complex/IR/ComplexOps.td

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@ class ComplexArithmeticOp<string mnemonic, list<Trait> traits = []> :
2626
let arguments = (ins Complex<AnyFloat>:$lhs, Complex<AnyFloat>:$rhs);
2727
let results = (outs Complex<AnyFloat>:$result);
2828
let assemblyFormat = "$lhs `,` $rhs attr-dict `:` type($result)";
29-
let verifier = ?;
3029
}
3130

3231
// Base class for standard unary operations on complex numbers with a
@@ -36,7 +35,6 @@ class ComplexUnaryOp<string mnemonic, list<Trait> traits = []> :
3635
Complex_Op<mnemonic, traits # [NoSideEffect, Elementwise]> {
3736
let arguments = (ins Complex<AnyFloat>:$complex);
3837
let assemblyFormat = "$complex attr-dict `:` type($complex)";
39-
let verifier = ?;
4038
}
4139

4240
//===----------------------------------------------------------------------===//
@@ -102,7 +100,7 @@ def ConstantOp : Complex_Op<"constant", [
102100

103101
let assemblyFormat = "$value attr-dict `:` type($complex)";
104102
let hasFolder = 1;
105-
let verifier = [{ return ::verify(*this); }];
103+
let hasVerifier = 1;
106104

107105
let extraClassDeclaration = [{
108106
/// Returns true if a constant operation can be built with the given value

mlir/include/mlir/Dialect/EmitC/IR/EmitC.td

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,7 @@ include "mlir/Interfaces/SideEffectInterfaces.td"
2424

2525
// Base class for EmitC dialect ops.
2626
class EmitC_Op<string mnemonic, list<Trait> traits = []>
27-
: Op<EmitC_Dialect, mnemonic, traits> {
28-
let verifier = "return ::verify(*this);";
29-
}
27+
: Op<EmitC_Dialect, mnemonic, traits>;
3028

3129
def EmitC_ApplyOp : EmitC_Op<"apply", []> {
3230
let summary = "Apply operation";
@@ -54,6 +52,7 @@ def EmitC_ApplyOp : EmitC_Op<"apply", []> {
5452
let assemblyFormat = [{
5553
$applicableOperator `(` $operand `)` attr-dict `:` functional-type($operand, results)
5654
}];
55+
let hasVerifier = 1;
5756
}
5857

5958
def EmitC_CallOp : EmitC_Op<"call", []> {
@@ -85,6 +84,7 @@ def EmitC_CallOp : EmitC_Op<"call", []> {
8584
let assemblyFormat = [{
8685
$callee `(` $operands `)` attr-dict `:` functional-type($operands, results)
8786
}];
87+
let hasVerifier = 1;
8888
}
8989

9090
def EmitC_ConstantOp : EmitC_Op<"constant", [ConstantLike]> {
@@ -113,6 +113,7 @@ def EmitC_ConstantOp : EmitC_Op<"constant", [ConstantLike]> {
113113
let results = (outs AnyType);
114114

115115
let hasFolder = 1;
116+
let hasVerifier = 1;
116117
}
117118

118119
def EmitC_IncludeOp
@@ -144,7 +145,6 @@ def EmitC_IncludeOp
144145
);
145146
let printer = [{ return ::print(p, *this); }];
146147
let parser = [{ return ::parse$cppClass(parser, result); }];
147-
let verifier = ?;
148148
}
149149

150150
#endif // MLIR_DIALECT_EMITC_IR_EMITC

mlir/include/mlir/Dialect/Linalg/IR/LinalgOps.td

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,12 +25,10 @@ class Linalg_Op<string mnemonic, list<Trait> traits = []> :
2525
Op<Linalg_Dialect, mnemonic, traits> {
2626
// For every linalg op, there needs to be a:
2727
// * void print(OpAsmPrinter &p, ${C++ class of Op} op)
28-
// * LogicalResult verify(${C++ class of Op} op)
2928
// * ParseResult parse${C++ class of Op}(OpAsmParser &parser,
3029
// OperationState &result)
3130
// functions.
3231
let printer = [{ return ::print(p, *this); }];
33-
let verifier = [{ return ::verify(*this); }];
3432
let parser = [{ return ::parse$cppClass(parser, result); }];
3533
}
3634

@@ -54,8 +52,6 @@ def Linalg_InitTensorOp : Linalg_Op<"init_tensor",
5452
`:` type($result)
5553
}];
5654

57-
let verifier = [{ return ::verify(*this); }];
58-
5955
let extraClassDeclaration = [{
6056
static StringRef getStaticSizesAttrName() {
6157
return "static_sizes";
@@ -127,6 +123,7 @@ def Linalg_InitTensorOp : Linalg_Op<"init_tensor",
127123
];
128124

129125
let hasCanonicalizer = 1;
126+
let hasVerifier = 1;
130127
}
131128

132129
def Linalg_YieldOp : Linalg_Op<"yield", [NoSideEffect, ReturnLike, Terminator]>,
@@ -144,6 +141,7 @@ def Linalg_YieldOp : Linalg_Op<"yield", [NoSideEffect, ReturnLike, Terminator]>,
144141
```
145142
}];
146143
let builders = [OpBuilder<(ins), [{ /* nothing to do */ }]>];
144+
let hasVerifier = 1;
147145
}
148146

149147
def Linalg_TiledLoopOp : Linalg_Op<"tiled_loop", [
@@ -426,6 +424,7 @@ def Linalg_TiledLoopOp : Linalg_Op<"tiled_loop", [
426424

427425
let hasCanonicalizer = 1;
428426
let hasFolder = 1;
427+
let hasVerifier = 1;
429428
}
430429

431430
def Linalg_IndexOp : Linalg_Op<"index", [NoSideEffect]>,
@@ -469,6 +468,7 @@ def Linalg_IndexOp : Linalg_Op<"index", [NoSideEffect]>,
469468
}];
470469

471470
let assemblyFormat = [{ $dim attr-dict `:` type($result) }];
471+
let hasVerifier = 1;
472472
}
473473

474474
#endif // LINALG_OPS

mlir/include/mlir/Dialect/Linalg/IR/LinalgStructuredOps.td

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -101,10 +101,9 @@ def FillOp : LinalgStructured_Op<"fill", []> {
101101
OpBuilder<(ins "Value":$value, "Value":$output)>
102102
];
103103

104-
let verifier = [{ return ::verify(*this); }];
105-
106104
let hasFolder = 1;
107105
let hasCanonicalizer = 1;
106+
let hasVerifier = 1;
108107
}
109108

110109
//===----------------------------------------------------------------------===//
@@ -264,10 +263,9 @@ def GenericOp : LinalgStructuredBase_Op<"generic", [AttrSizedOperandSegments]> {
264263
let printer = [{ return ::print(p, *this); }];
265264
let parser = [{ return ::parseGenericOp(parser, result); }];
266265

267-
let verifier = [{ return ::verify(*this); }];
268-
269266
let hasCanonicalizer = 1;
270267
let hasFolder = 1;
268+
let hasVerifier = 1;
271269
}
272270

273271

mlir/include/mlir/Dialect/Quant/QuantOps.td

Lines changed: 2 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ def quant_QuantizeRegionOp : quant_Op<"region", [
103103
StrAttr:$logical_kernel);
104104
let results = (outs Variadic<AnyType>:$outputs);
105105
let regions = (region SizedRegion<1>:$body);
106-
let verifier = [{ return verifyRegionOp(*this); }];
106+
let hasVerifier = 1;
107107
}
108108

109109
def quant_ReturnOp : quant_Op<"return", [Terminator]> {
@@ -227,43 +227,7 @@ def quant_StatisticsOp : quant_Op<"stats", [SameOperandsAndResultType]> {
227227
OptionalAttr<ElementsAttr>:$axisStats,
228228
OptionalAttr<I64Attr>:$axis);
229229
let results = (outs quant_RealValueType);
230-
231-
let verifier = [{
232-
auto tensorArg = arg().getType().dyn_cast<TensorType>();
233-
if (!tensorArg) return emitOpError("arg needs to be tensor type.");
234-
235-
// Verify layerStats attribute.
236-
{
237-
auto layerStatsType = layerStats().getType();
238-
if (!layerStatsType.getElementType().isa<FloatType>()) {
239-
return emitOpError(
240-
"layerStats must have a floating point element type");
241-
}
242-
if (layerStatsType.getRank() != 1 || layerStatsType.getDimSize(0) != 2) {
243-
return emitOpError("layerStats must have shape [2]");
244-
}
245-
}
246-
// Verify axisStats (optional) attribute.
247-
if (axisStats()) {
248-
if (!axis()) return emitOpError("axis must be specified for axisStats");
249-
250-
auto shape = tensorArg.getShape();
251-
auto argSliceSize = std::accumulate(std::next(shape.begin(),
252-
*axis()), shape.end(), 1, std::multiplies<int64_t>());
253-
254-
auto axisStatsType = axisStats()->getType();
255-
if (!axisStatsType.getElementType().isa<FloatType>()) {
256-
return emitOpError("axisStats must have a floating point element type");
257-
}
258-
if (axisStatsType.getRank() != 2 ||
259-
axisStatsType.getDimSize(1) != 2 ||
260-
axisStatsType.getDimSize(0) != argSliceSize) {
261-
return emitOpError("axisStats must have shape [N,2] "
262-
"where N = the slice size defined by the axis dim");
263-
}
264-
}
265-
return success();
266-
}];
230+
let hasVerifier = 1;
267231
}
268232

269233
def quant_CoupledRefOp : quant_Op<"coupled_ref", [SameOperandsAndResultType]> {

0 commit comments

Comments
 (0)