The current implementation had a bug as it was relying on the target vector dimension sizes to calculate where to insert broadcast. If several dimensions have the same size we may insert the broadcast on the wrong dimension. The correct broadcast cannot be inferred from the type of the source and destination vector.
Instead when we want to extend transfer ops we calculate an "inverse" map to the projected permutation and insert broadcast in place of the projected dimensions.
Details
Details
Diff Detail
Diff Detail
- Repository
- rG LLVM Github Monorepo
Event Timeline
Comment Actions
LGTM. Thanks for fixing this, Thomas!
mlir/include/mlir/IR/AffineMap.h | ||
---|---|---|
407 | .. where the non-projected ... ? |
Comment Actions
Thanks Lei!
mlir/include/mlir/IR/AffineMap.h | ||
---|---|---|
407 | I meant projected, basically the projected dimensions in the original map are transformed to broadcast. Let me know if you have any suggestion on how to make it clearer. |
.. where the non-projected ... ?