[Mlir-commits] [mlir] [mlir][Transforms] Dialect conversion: add missing argument materialization. (PR #121200)
Benjamin Chetioui
llvmlistbot at llvm.org
Fri Dec 27 04:12:39 PST 2024
bchetioui wrote:
> What kind of failure are you seeing? Is there no matching source materialization callback? It's possible that you have to turn an `addArgumentMaterialization` into an `addSourceMaterialization`.
This is the error I'm seeing:
```
error: failed to legalize unresolved materialization from ('f32') to ('tensor<f32>') that remained live after conversion
```
with IR
```
// -----// IR Dump After HloLegalizeToLinalgPass Failed (hlo-legalize-to-linalg) //----- //
func.func @map_mixed(%arg0: tensor<?xf32>, %arg1: tensor<4xf32>) -> tensor<?xf32> {
%0 = shape.shape_of %arg0 : tensor<?xf32> -> tensor<1xindex>
%c0 = arith.constant 0 : index
%extracted = tensor.extract %0[%c0] : tensor<1xindex>
%1 = tensor.empty(%extracted) : tensor<?xf32>
%2 = linalg.generic {indexing_maps = [affine_map<(d0) -> (d0)>, affine_map<(d0) -> (d0)>, affine_map<(d0) -> (d0)>], iterator_types = ["parallel"]} ins(%arg0, %arg1 : tensor<?xf32>, tensor<4xf32>) outs(%1 : tensor<?xf32>) {
^bb0(%in: f32, %in_0: f32, %out: f32):
%3 = builtin.unrealized_conversion_cast %in_0 : f32 to tensor<f32>
%4 = builtin.unrealized_conversion_cast %in : f32 to tensor<f32>
%extracted_1 = tensor.extract %4[] : tensor<f32>
%extracted_2 = tensor.extract %3[] : tensor<f32>
%5 = arith.addf %extracted_1, %extracted_2 : f32
%from_elements = tensor.from_elements %5 : tensor<f32>
%extracted_3 = tensor.extract %from_elements[] : tensor<f32>
linalg.yield %extracted_3 : f32
} -> tensor<?xf32>
return %2 : tensor<?xf32>
}
```
I believe that the materialization is inserted [here](https://github.com/llvm/llvm-project/blob/aa2fdc69d35ff1c4a6de8a8d8edcc4c15236bb15/mlir/lib/Transforms/Utils/DialectConversion.cpp#L1479-L1484). But admittedly, I'm not that familiar with these internals---let me try to look into `addArgumentMaterialization`.
https://github.com/llvm/llvm-project/pull/121200
More information about the Mlir-commits
mailing list