scf.for used to only support 1:1 type conversion, this patch add support for 1:N type conversion.
Details
Diff Detail
- Repository
- rG LLVM Github Monorepo
Event Timeline
| mlir/lib/Dialect/SCF/Transforms/StructuralTypeConversions.cpp | ||
|---|---|---|
| 87 | Do we really need to set the attribute here? It breaks a CHECK test with a random attribute attached. | |
Thanks for adding this functionality so quickly, Peiming!
Alex, for context, we will need this to complete https://reviews.llvm.org/D136286
(where we found that 1:N does not work for for loops yet)
| mlir/lib/Dialect/SCF/Transforms/StructuralTypeConversions.cpp | ||
|---|---|---|
| 35 | Can we swap the if (inputs.size() == 1) here or the if (inputs.size() != 1) above such that the if-true is always e.g. the 1:N and the fall through is the 1:1, that feels a bit more symmetric while reading these two methods | |
| 100 | an unresolved | |
This clearly needs a test.
| mlir/lib/Dialect/SCF/Transforms/StructuralTypeConversions.cpp | ||
|---|---|---|
| 19 | Please document the methods. | |
| 21 | Nit: no need to prefix casts with llvm::, they are reexported. | |
| 41–48 | Nit: don't specify the number of stack elements in SmallVector unless you have a strong reason to pick one. Legacy code may have a number, but you don't need to replicate it. | |
| 51–89 | This entire comment is obsoleted by new code, there is no cloning anymore. | |
| 87 | Transformations are not required to propagate discardable attributes, but it's a sort of a good tone if they do. Also nit: it shouldn't be necessary to explicitly static_cast, all concrete op classes overload operator-> to provide access to Operation *. | |
| 90 | Thou shalt not modify IR in patterns without using the rewriter. The rewriter may be keeping track of the blocks created in the constructor and will have a dangling pointer unless it knows the block has been erased. | |
| 101 | It is preferable for this to go through getTypeConverter().materializeSourceConversion instead so it composes with whatever kind of casts the caller wants to use. | |
address comments
| mlir/lib/Dialect/SCF/Transforms/StructuralTypeConversions.cpp | ||
|---|---|---|
| 41–48 | Good to know! | |
LGTM leaving the final approval to Alex.
| mlir/lib/Dialect/SCF/Transforms/StructuralTypeConversions.cpp | ||
|---|---|---|
| 26 | period at end | |
| 101 | That is a nice way to do that! | |
| mlir/test/Dialect/SCF/1_N_conversion.mlir | ||
| 1 ↗ | (On Diff #469321) | I leave this up to Alex, but I feel we should have this in test/Dialect/SparseVector, not SCF |
Please document the methods.