Open Groverkss opened 4 months ago
Hi!
This issue may be a good introductory issue for people new to working on LLVM. If you would like to work on this issue, your first steps are:
test/
create fine-grained testing targets, so you can e.g. use make check-clang-ast
to only run Clang's AST tests.git clang-format HEAD~1
to format your changes.If you have any further questions about this issue, don't hesitate to ask via a comment in the thread below.
@llvm/issue-subscribers-good-first-issue
Author: Kunwar Grover (Groverkss)
@EugeneZelenko Why was the mlir label removed? This issue is related to mlir.
@llvm/issue-subscribers-mlir
Author: Kunwar Grover (Groverkss)
@EugeneZelenko Why was the mlir label removed? This issue is related to mlir.
You added more specific label already. Generic labels should be used only if no more specific ones exist or added.
@EugeneZelenko Why was the mlir label removed? This issue is related to mlir.
You added more specific label already. Generic labels should be used only if no more specific ones exist or added.
Thanks, I removed it. I was not aware of this.
I'd like to take a look at this issue. I just finished building mlir the other day and I'm looking for spots to dive in now, so it might take me a few days to get my bearings!
Is this issue still exist in tag: llvmorg-18.1.6
? I tested the input and end with error gracefully.
ps. input should be modified as follow due to syntax change
func.func @fold_extract_slice(
%arg0 : tensor<?x128xf32>, %arg1 : tensor<?x42xf32>, %arg2 : tensor<?x42x?xf32>) -> tensor<?x42xf32> {
%c0 = arith.constant 0 : index
%0 = tensor.dim %arg1, %c0 : tensor<?x42xf32>
%1 = tensor.extract_slice %arg0[3, 4] [%0, 42] [1, 1] : tensor<?x128xf32> to tensor<?x42xf32>
%2 = linalg.generic
{indexing_maps = [affine_map<(d0, d1, d2) -> (d0, d1)>,
affine_map<(d0, d1, d2) -> (d0, d1, d2)>,
affine_map<(d0, d1, d2) -> (d0, d1)>],
iterator_types = ["parallel", "parallel", "parallel"]}
ins(%1, %arg2 : tensor<?x42xf32>, tensor<?x42x?xf32>)
outs(%arg1 : tensor<?x42xf32>) {
^bb0(%arg3 : f32, %arg4: f32, %arg5: f32):
%5 = arith.addf %arg3, %arg5 : f32
linalg.yield %5 : f32
} -> tensor<?x42xf32>
return %2 : tensor<?x42xf32>
}
module attributes {transform.with_named_sequence} {
transform.named_sequence @__transform_main(%arg1: !transform.any_op {transform.readonly}) {
%0 = transform.structured.match ops{["linalg.generic"]} in %arg1 : (!transform.any_op) -> !transform.any_op
%1, %loops:2 = transform.structured.tile_using_for %0 tile_sizes [2, 3, 4] : (!transform.any_op) -> (!transform.any_op, !transform.any_op, !transform.any_op)
transform.yield
}
}
Indeed, in 18.1.6 it looks like this was fixed in https://github.com/llvm/llvm-project/pull/66007 @Groverkss is that pr sufficient enough to close this issue?
transform.structured.tile_using_for crashes when the number of results does not match the number of loops produced. This should instead produce an error message and exit gracefully.
Reproducer:
Crash Report: