64 lines
2.2 KiB
TableGen
64 lines
2.2 KiB
TableGen
//===-- ValueBoundsOpInterface.td - Value Bounds -----------*- tablegen -*-===//
|
|
//
|
|
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
|
// See https://llvm.org/LICENSE.txt for license information.
|
|
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#ifndef VALUEBOUNDSOPINTERFACE
|
|
#define VALUEBOUNDSOPINTERFACE
|
|
|
|
include "mlir/IR/OpBase.td"
|
|
|
|
def ValueBoundsOpInterface : OpInterface<"ValueBoundsOpInterface"> {
|
|
let description = [{
|
|
This interface allows operations with index-typed and/or shaped value-typed
|
|
results/block arguments to specify range bounds. These bounds are stored in
|
|
a constraint set. The constraint set can then be queried to compute bounds
|
|
in terms of other values that are stored in the constraint set.
|
|
}];
|
|
let cppNamespace = "::mlir";
|
|
let methods = [
|
|
InterfaceMethod<
|
|
/*desc=*/[{
|
|
Populate the constraint set with bounds for the given index-typed
|
|
value.
|
|
|
|
Note: If `value` is a block argument, it must belong to an entry block
|
|
of a region. Unstructured control flow graphs are not supported at the
|
|
moment.
|
|
}],
|
|
/*retType=*/"void",
|
|
/*methodName=*/"populateBoundsForIndexValue",
|
|
/*args=*/(ins "::mlir::Value":$value,
|
|
"::mlir::ValueBoundsConstraintSet &":$cstr),
|
|
/*methodBody=*/"",
|
|
/*defaultImplementation=*/[{
|
|
llvm_unreachable("not implemented");
|
|
}]
|
|
>,
|
|
InterfaceMethod<
|
|
/*desc=*/[{
|
|
Populate the constraint set with bounds for the size of the specified
|
|
dimension of the given shaped value.
|
|
|
|
Note: If `value` is a block argument, it must belong to an entry block
|
|
of a region. Unstructured control flow graphs are not supported at the
|
|
moment.
|
|
}],
|
|
/*retType=*/"void",
|
|
/*methodName=*/"populateBoundsForShapedValueDim",
|
|
/*args=*/(ins "::mlir::Value":$value,
|
|
"int64_t":$dim,
|
|
"::mlir::ValueBoundsConstraintSet &":$cstr),
|
|
/*methodBody=*/"",
|
|
/*defaultImplementation=*/[{
|
|
llvm_unreachable("not implemented");
|
|
}]
|
|
>,
|
|
];
|
|
}
|
|
|
|
#endif // VALUEBOUNDSOPINTERFACE
|