-
Notifications
You must be signed in to change notification settings - Fork 14.3k
[mlir][doc][tutorials] Remove docs and code discrepancies #125422
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
@llvm/pr-subscribers-mlir Author: AidinT (aidint) ChangesToy tutorial chapter 4 contains many discrepancies between snippets and code in Full diff: https://github.com/llvm/llvm-project/pull/125422.diff 1 Files Affected:
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.
|
@joker-eph @lialan @ftynse @River707 Can you please review this PR? |
@grypp can you please review this PR? |
@River707 can you also merge the branch into main, please? I don't have write access. |
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.
Toy tutorial chapter 4 contains many discrepancies between snippets and code in
example
directory.This is a fix for the documentation.