[MLIR][Shape] Add `shape.rank` operation

Add `shape.rank` operation to the shape dialect.

Differential Revision: https://reviews.llvm.org/D82028
This commit is contained in:
Frederik Gossen 2020-06-25 08:25:06 +00:00
parent cd73081605
commit 2c061998b5
2 changed files with 17 additions and 0 deletions

View File

@ -169,6 +169,18 @@ def Shape_FromExtentTensorOp : Shape_Op<"from_extent_tensor", [NoSideEffect]> {
let assemblyFormat = "attr-dict $input `:` type($input)";
}
def Shape_RankOp : Shape_Op<"rank", [NoSideEffect]> {
let summary = "Gets the rank of a shape";
let description = [{
Returns the rank of the shape, i.e. the number of extents.
}];
let arguments = (ins Shape_ShapeType:$shape);
let results = (outs Shape_SizeType:$rank);
let assemblyFormat = "attr-dict $shape";
}
def Shape_ToExtentTensorOp : Shape_Op<"to_extent_tensor", [NoSideEffect]> {
let summary = "Creates a dimension tensor from a shape";
let description = [{

View File

@ -111,3 +111,8 @@ func @test_from_extent_tensor(%arg: tensor<?xindex>) -> !shape.shape {
%0 = shape.from_extent_tensor %arg : tensor<?xindex>
return %0 : !shape.shape
}
func @rank(%shape : !shape.shape) -> !shape.size {
%rank = shape.rank %shape
return %rank : !shape.size
}