Skip to content

Commit 3a45ee5

Browse files
authored
Remove explicit verifier usage as it is about to be obsolete (llvm#1195)
Several properties (such as verifier, printer & parser) are going to be obsolete in main mlir soon. This change removes the explicit usage of verifier and instead uses the hasVerifier option instead. Also, some minor whitespace cleanup. Signed-off-by: Stella Stamenova [email protected]
1 parent fa06812 commit 3a45ee5

File tree

5 files changed

+128
-126
lines changed

5 files changed

+128
-126
lines changed

src/Dialect/Krnl/Krnl.td

+47-57
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919

2020
include "mlir/IR/OpBase.td"
2121
include "mlir/Dialect/Shape/IR/ShapeBase.td"
22+
include "mlir/Interfaces/CastInterfaces.td"
2223
include "mlir/Interfaces/LoopLikeInterface.td"
2324
include "mlir/Interfaces/SideEffectInterfaces.td"
2425
include "mlir/Interfaces/ViewLikeInterface.td"
@@ -42,8 +43,8 @@ def KrnlDefineLoopsOp : Op<Krnl_Dialect, "define_loops"> {
4243
intend to optimize.
4344
}];
4445

45-
let arguments = (ins);
4646
let results = (outs Variadic<AnyType>);
47+
4748
let skipDefaultBuilders = 1;
4849
let builders = [ OpBuilder<(ins "int64_t":$num_loops)> ];
4950

@@ -53,14 +54,14 @@ def KrnlDefineLoopsOp : Op<Krnl_Dialect, "define_loops"> {
5354
let extraClassDeclaration = [{
5455
static StringRef getNumLoopsAttrName() { return "num_loops"; }
5556

56-
// Helper function to extract the number of loops being defined.
57-
int64_t getNumLoops() {
58-
auto num_loops = (*this)->getAttrOfType<IntegerAttr>(getNumLoopsAttrName())
59-
.getValue()
60-
.getSExtValue();
61-
return num_loops;
62-
}
63-
}];
57+
// Helper function to extract the number of loops being defined.
58+
int64_t getNumLoops() {
59+
auto num_loops = (*this)->getAttrOfType<IntegerAttr>(getNumLoopsAttrName())
60+
.getValue()
61+
.getSExtValue();
62+
return num_loops;
63+
}
64+
}];
6465
}
6566

6667
def KrnlIterateOp : Op<Krnl_Dialect, "iterate", [ImplicitKrnlTerminator,
@@ -88,7 +89,9 @@ def KrnlIterateOp : Op<Krnl_Dialect, "iterate", [ImplicitKrnlTerminator,
8889
}];
8990

9091
let arguments = (ins Variadic<AnyType>);
92+
9193
let regions = (region SizedRegion<1>:$bodyRegion);
94+
9295
let skipDefaultBuilders = 1;
9396
let builders = [
9497
// Main builder.
@@ -106,7 +109,12 @@ def KrnlIterateOp : Op<Krnl_Dialect, "iterate", [ImplicitKrnlTerminator,
106109
CArg<"ArrayRef<IndexExpr>">:$lbs, CArg<"ArrayRef<IndexExpr>">:$ubs,
107110
CArg<"ValueRange">:$iterArgs,
108111
CArg<"function_ref<void(OpBuilder &, Location, ValueRange)>">:$bodyBuilderFn)>
109-
];
112+
];
113+
114+
let printer = [{ return ::print(p, *this); }];
115+
let parser = [{ return ::parse$cppClass(parser, result); }];
116+
117+
let hasVerifier = 1;
110118

111119
let extraClassDeclaration = [{
112120
// In krnl.iterate operation, operands are stored as such
@@ -127,11 +135,7 @@ def KrnlIterateOp : Op<Krnl_Dialect, "iterate", [ImplicitKrnlTerminator,
127135

128136
// Get name of the attribute for storing bound represented using affine maps.
129137
static StringRef getBoundsAttrName() { return "bounds"; }
130-
}];
131-
132-
let printer = [{ return ::print(p, *this); }];
133-
let parser = [{ return ::parse$cppClass(parser, result); }];
134-
let verifier = [{ return ::verify(*this); }];
138+
}];
135139
}
136140

137141
def KrnlTerminatorOp : Op<Krnl_Dialect, "terminate", [Terminator]> {
@@ -148,9 +152,6 @@ def KrnlTerminatorOp : Op<Krnl_Dialect, "terminate", [Terminator]> {
148152
// No custom parsing/printing form.
149153
let parser = ?;
150154
let printer = ?;
151-
152-
// Fully specified by traits.
153-
let verifier = ?;
154155
}
155156

156157
def KrnlEntryPointOp : Op<Krnl_Dialect, "entry_point"> {
@@ -223,16 +224,16 @@ def KrnlGetRefOp : Op<Krnl_Dialect, "getref", [MemRefsNormalizable]> {
223224
}]>,
224225
];
225226

227+
let parser = ?;
228+
let printer = ?;
229+
226230
let extraClassDeclaration = [{
227231
/// Returns the symbolic operands (the ones in square brackets), which bind
228232
/// to the symbols of the memref's layout map.
229233
operand_range getDynamicSizes() {
230234
return {operand_begin() + 2, operand_end()};
231235
}
232236
}];
233-
234-
let parser = ?;
235-
let printer = ?;
236237
}
237238

238239
def KrnlBlockOp : Op<Krnl_Dialect, "block"> {
@@ -243,9 +244,9 @@ def KrnlBlockOp : Op<Krnl_Dialect, "block"> {
243244
means to block the for loop referred to by %i using a tile size of 4.
244245
}];
245246

246-
let arguments = (ins
247-
AnyType:$loop, I64Attr:$tile_size);
247+
let arguments = (ins AnyType:$loop, I64Attr:$tile_size);
248248
let results = (outs AnyType:$loop_block, AnyType:$loop_local);
249+
249250
let builders = [ OpBuilder<(ins "Value": $loop, "int64_t":$tile_size)> ];
250251
let assemblyFormat = [{
251252
$loop $tile_size attr-dict `:` functional-type($loop, results)
@@ -312,7 +313,7 @@ def KrnlPermuteOp : Op<Krnl_Dialect, "permute"> {
312313
}];
313314

314315
let arguments = (ins Variadic<AnyType>:$loops, I64ArrayAttr:$map);
315-
let results = (outs);
316+
316317
let builders = [ OpBuilder<(ins "ValueRange": $loops, "ArrayRef<int64_t>":$map)> ];
317318
let assemblyFormat = [{
318319
`(` $loops `)` $map attr-dict `:` type($loops)
@@ -330,7 +331,7 @@ def KrnlUnrollOp : Op<Krnl_Dialect, "unroll"> {
330331
}];
331332

332333
let arguments = (ins AnyType:$loop);
333-
let results = (outs);
334+
334335
let assemblyFormat = [{
335336
$loop attr-dict `:` type($loop)
336337
}];
@@ -507,6 +508,8 @@ def KrnlLoadOp : Op<Krnl_Dialect, "load",
507508
$_state.types.push_back(memrefType.getElementType());
508509
}]>];
509510

511+
let assemblyFormat = [{$memref `[` $indices `]` attr-dict `:` type($memref)}];
512+
510513
let extraClassDeclaration = [{
511514
Value getMemRef() { return getOperand(0); }
512515
void setMemRef(Value value) { setOperand(0, value); }
@@ -516,8 +519,6 @@ def KrnlLoadOp : Op<Krnl_Dialect, "load",
516519

517520
operand_range getIndices() { return {operand_begin() + 1, operand_end()}; }
518521
}];
519-
520-
let assemblyFormat = [{$memref `[` $indices `]` attr-dict `:` type($memref)}];
521522
}
522523

523524
def KrnlStoreOp : Op<Krnl_Dialect, "store",
@@ -544,6 +545,10 @@ def KrnlStoreOp : Op<Krnl_Dialect, "store",
544545
$_state.addOperands(memref);
545546
}]>];
546547

548+
let assemblyFormat = [{
549+
$value `,` $memref `[` $indices `]` attr-dict `:` type($memref)
550+
}];
551+
547552
let extraClassDeclaration = [{
548553
Value getValueToStore() { return getOperand(0); }
549554

@@ -557,10 +562,6 @@ def KrnlStoreOp : Op<Krnl_Dialect, "store",
557562
return {operand_begin() + 2, operand_end()};
558563
}
559564
}];
560-
561-
let assemblyFormat = [{
562-
$value `,` $memref `[` $indices `]` attr-dict `:` type($memref)
563-
}];
564565
}
565566

566567
def KrnlMovableOp : Op<Krnl_Dialect, "movable", [ImplicitKrnlTerminator]> {
@@ -576,8 +577,6 @@ def KrnlMovableOp : Op<Krnl_Dialect, "movable", [ImplicitKrnlTerminator]> {
576577
are nested imperfectly between an "eager" and a "lazy" loop.
577578
}];
578579

579-
let arguments = (ins );
580-
581580
let regions = (region AnyRegion:$region);
582581

583582
let assemblyFormat = [{
@@ -600,6 +599,7 @@ def KrnlGetInductionVariableValueOp : Op<Krnl_Dialect, "get_induction_var_value"
600599

601600
let arguments = (ins Variadic<AnyType> : $loops);
602601
let results = (outs Variadic<AnyType> : $ind_var_vals);
602+
603603
let builders = [ OpBuilder<(ins "ValueRange": $loops)>];
604604

605605
let assemblyFormat = [{
@@ -611,7 +611,7 @@ def KrnlGetInductionVariableValueOp : Op<Krnl_Dialect, "get_induction_var_value"
611611
// =============================================================================
612612

613613
def KrnlVectorTypeCastOp : Op<Krnl_Dialect, "vector_type_cast", [NoSideEffect,
614-
MemRefsNormalizable, ViewLikeOpInterface]> {
614+
MemRefsNormalizable, DeclareOpInterfaceMethods<CastOpInterface>, ViewLikeOpInterface]> {
615615
let summary = "vector type cast operation";
616616
let description = [{
617617
The "vector_type_cast" operation converts a memref from an non-vector
@@ -627,30 +627,20 @@ def KrnlVectorTypeCastOp : Op<Krnl_Dialect, "vector_type_cast", [NoSideEffect,
627627
let arguments = (ins AnyMemRef:$source);
628628
let results = (outs AnyMemRef:$result);
629629

630-
let parser = ?;
631-
let printer = ?;
630+
let hasFolder = 1;
631+
let builders = [ OpBuilder<(ins "Value": $source, "int64_t": $vectorLen)> ];
632632

633-
let verifier = [{ return impl::verifyCastOp(*this, areCastCompatible); }];
633+
let assemblyFormat = [{
634+
$source attr-dict `:` type($source) `to` type($result)
635+
}];
634636

635637
let extraClassDeclaration = [{
636-
/// Return true if `a` and `b` are valid operand and result pairs for
637-
/// the operation.
638-
static bool areCastCompatible(Type a, Type b);
639-
640638
/// The result of a vector_type_cast is always a memref.
641639
MemRefType getType() { return getResult().getType().cast<MemRefType>(); }
642640

643641
/// Return the view source.
644642
Value getViewSource() { return source(); }
645643
}];
646-
647-
let hasFolder = 1;
648-
let builders = [ OpBuilder<(ins "Value": $source, "int64_t": $vectorLen)> ];
649-
650-
let assemblyFormat = [{
651-
$source attr-dict `:` type($source) `to` type($result)
652-
}];
653-
654644
}
655645

656646
// =============================================================================
@@ -663,7 +653,6 @@ def KrnlSpecializedKernel : Op<Krnl_Dialect, "specialized_kernel",
663653
}];
664654

665655
let arguments = (ins Variadic<AnyType> : $loops);
666-
let results = (outs );
667656

668657
let assemblyFormat = [{
669658
`(` $loops `)` attr-dict `:` type($loops)
@@ -841,7 +830,7 @@ def KrnlMatMulOp : Op<Krnl_Dialect, "matmul", [AttrSizedOperandSegments,
841830
"bool": $overcompute)>
842831
];
843832

844-
let verifier = [{ return ::verify(*this); }];
833+
let hasVerifier = 1;
845834

846835
let assemblyFormat = [{
847836
$A `[` $aMemStart `]` `,`
@@ -922,8 +911,9 @@ def KrnlCopyToBufferOp : Op<Krnl_Dialect, "copy_to_tile_buffer", [
922911
"bool": $transpose)>
923912
];
924913

925-
let verifier = [{ return ::verify(*this); }];
926-
let assemblyFormat = [{
914+
let hasVerifier = 1;
915+
916+
let assemblyFormat = [{
927917
$buffer `,` $source `[` $starts `]` `,` $padValue attr-dict
928918
`:` type($buffer) `,` type($source)
929919
}];
@@ -955,8 +945,9 @@ def KrnlCopyFromBufferOp : Op<Krnl_Dialect, "copy_from_tile_buffer",
955945
OpBuilder<(ins "Value": $buffer, "Value": $dest, "ValueRange": $starts)>
956946
];
957947

958-
let verifier = [{ return ::verify(*this); }];
959-
let assemblyFormat = [{
948+
let hasVerifier = 1;
949+
950+
let assemblyFormat = [{
960951
$buffer `,` $dest `[` $starts `]` attr-dict `:` type($buffer) `,` type($dest)
961952
}];
962953
}
@@ -984,6 +975,7 @@ def KrnlMemsetOp : Op<Krnl_Dialect, "memset", [MemRefsNormalizable,
984975
}];
985976

986977
let arguments = (ins AnyMemRef:$dest, AnyType: $value);
978+
987979
let assemblyFormat = [{ $dest `,` $value attr-dict `:` type($dest) }];
988980
}
989981

@@ -1019,8 +1011,6 @@ def KrnlRandomNormalOp : Op<Krnl_Dialect, "random_normal",
10191011
AnyFloat:$mean,
10201012
AnyFloat:$scale,
10211013
AnyFloat:$seed);
1022-
1023-
let results = (outs );
10241014
}
10251015

10261016
def KrnlFindIndexOp : Op<Krnl_Dialect, "find_index",

0 commit comments

Comments
 (0)