Currently a loop is materialized when lowering ArmSME loads and stores
to intrinsics. This patch introduces two new ops to the ArmSME dialect
that map 1-1 with intrinsics:
- arm_sme.load_tile_slice - Loads a 1D tile slice from memory into a 2D SME "virtual tile".
- arm_sme.store_tile_slice - Stores a 1D tile slice from a 2D SME "virtual tile" into memory.
As well as a new conversion pass '-convert-arm-sme-to-scf' that
materializes loops with these ops. The existing load/store lowering to
intrinsics is updated to use these ops.
Depends on D156517
Discourse thread:
https://discourse.llvm.org/t/loop-materialization-in-armsme/72354
I feel like the name is a bit confusing, although I'm not sure I can come up with something better...
LoadTileSlice? LoadVectorToTile?
Also I wonder if it makes sense for this to have a horizontal/vertical load variant/argument, so that it would be possible to do in-flight transpose as well?