[Mlir-commits] [mlir] [mlir][ArmSME] Switch to an attribute-based tile allocation scheme (PR #73253)

Cullen Rhodes llvmlistbot at llvm.org
Mon Nov 27 02:38:49 PST 2023


================
@@ -506,6 +496,7 @@ struct TileVectorPrintOpConversion : public OpRewritePattern<vector::PrintOp> {
       rewriter.setInsertionPointToStart(forOp.getBody());
       // Extract the current row from the tile.
       Value rowIndex = forOp.getInductionVar();
+      // FIXME: Forward tile IDs.
----------------
c-rhodes wrote:

This got me thinking. The tile allocation works by assigning tile IDs for the root operations that implement the `ArmSMETileOpInterface` and allocate tiles. An operation allocates a tile if it implements `getAllocatedTileType`, this includes:
```mlir
arm_sme.get_tile
arm_sme.zero
arm_sme.tile_load
arm_sme.outerproduct // (if no accumulator is specified)
```
the tile ID is then forwarded to any uses of the root that also implement the `ArmSMETileOpInterface`. Is this constraint necessary? If the tile ID could be forwarded to any use (i.e. non-ArmSME ops) could it fix this problem?

An alternative of course is to mirror ops such as `vector.print` in the ArmSME dialect with ops that implement this interface.

https://github.com/llvm/llvm-project/pull/73253


More information about the Mlir-commits mailing list