[Mlir-commits] [mlir] [mlir][doc][tutorials] Remove docs and code discrepancies (PR #125422)
llvmlistbot at llvm.org
llvmlistbot at llvm.org
Sun Feb 2 08:57:56 PST 2025
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-mlir
Author: AidinT (aidint)
<details>
<summary>Changes</summary>
Toy tutorial [chapter 4](https://mlir.llvm.org/docs/Tutorials/Toy/Ch-4/) contains many discrepancies between snippets and code in `example` directory.
This is a fix for the documentation.
---
Full diff: https://github.com/llvm/llvm-project/pull/125422.diff
1 Files Affected:
- (modified) mlir/docs/Tutorials/Toy/Ch-4.md (+14-7)
``````````diff
diff --git a/mlir/docs/Tutorials/Toy/Ch-4.md b/mlir/docs/Tutorials/Toy/Ch-4.md
index b753ee7a5332f5..39e9ecdd922215 100644
--- a/mlir/docs/Tutorials/Toy/Ch-4.md
+++ b/mlir/docs/Tutorials/Toy/Ch-4.md
@@ -91,7 +91,7 @@ struct ToyInlinerInterface : public DialectInlinerInterface {
/// previously returned by the call operation with the operands of the
/// return.
void handleTerminator(Operation *op,
- MutableArrayRef<Value> valuesToRepl) const final {
+ ValueRange valuesToRepl) const final {
// Only "toy.return" needs to be handled here.
auto returnOp = cast<ReturnOp>(op);
@@ -147,7 +147,7 @@ and add it to the traits list of `GenericCallOp`:
```tablegen
def FuncOp : Toy_Op<"func",
- [DeclareOpInterfaceMethods<CallableOpInterface>]> {
+ [FunctionOpInterface, IsolatedFromAbove]> {
...
}
@@ -159,7 +159,8 @@ def GenericCallOp : Toy_Op<"generic_call",
In the above we also use the `DeclareOpInterfaceMethods` directive to
auto-declare all of the interface methods in the class declaration of
-GenericCallOp. This means that we just need to provide a definition:
+GenericCallOp. We have already provided the definition in the `extraClassDeclaration`
+field of the `FuncOp` class:
```c++
/// Returns the region on the function operation that is callable.
@@ -170,7 +171,7 @@ Region *FuncOp::getCallableRegion() { return &getBody(); }
/// Return the callee of the generic call operation, this is required by the
/// call interface.
CallInterfaceCallable GenericCallOp::getCallableForCallee() {
- return getAttrOfType<SymbolRefAttr>("callee");
+ return (*this)->getAttrOfType<SymbolRefAttr>("callee");
}
/// Set the callee for the generic call operation, this is required by the call
@@ -181,7 +182,13 @@ void GenericCallOp::setCalleeFromCallable(CallInterfaceCallable callee) {
/// Get the argument operands to the called function, this is required by the
/// call interface.
-Operation::operand_range GenericCallOp::getArgOperands() { return inputs(); }
+Operation::operand_range GenericCallOp::getArgOperands() { return getInputs(); }
+
+/// Get the argument operands to the called function as a mutable range, this is
+/// required by the call interface.
+MutableOperandRange GenericCallOp::getArgOperandsMutable() {
+ return getInputsMutable();
+}
```
Now that the inliner has been informed about the Toy dialect, we can add the
@@ -255,8 +262,8 @@ bool CastOp::areCastCompatible(TypeRange inputs, TypeRange outputs) {
if (inputs.size() != 1 || outputs.size() != 1)
return false;
// The inputs must be Tensors with the same element type.
- TensorType input = inputs.front().dyn_cast<TensorType>();
- TensorType output = outputs.front().dyn_cast<TensorType>();
+ TensorType input = llvm::dyn_cast<TensorType>(inputs.front());
+ TensorType output = llvm::dyn_cast<TensorType>(outputs.front());
if (!input || !output || input.getElementType() != output.getElementType())
return false;
// The shape is required to match if both types are ranked.
``````````
</details>
https://github.com/llvm/llvm-project/pull/125422
More information about the Mlir-commits
mailing list