This patch extends the 'enable-arm-streaming' pass with a new option to
enable the ZA storage array by adding the 'arm_za' attribute to
'func.func' ops.
A later patch will insert llvm.aarch64.sme.za.enable at the beginning
of 'func.func' ops and llvm.aarch64.sme.za.disable before
func.return statements when lowering to LLVM dialect.
Currently the pass only supports enabling ZA with streaming-mode on but
the SME LDR, STR and ZERO instructions can access ZA when not in
streaming-mode (section B1.1.1, IDGNQM [1]), so it may be worth making
these options independent in the future.
N.B. This patch is generally useful in the context of SME enablement in
MLIR, but it will help enable writing an integration test for rewrite
pattern that lowers vector.transfer_write -> zero {za} (D152508).
[nit] I would reword a bit to highlight that:
I am just thinking that this is clear to somebody very familiar with the spec, but perhaps it's worth clarifying for somebody with less background knowledge?