[mlir][x86] Make AMX nanokernel independent of result write (#236699)
The pattern relied on the presence of a
`vector.store`/`vector.transfer_write` of the accumulation result back
to memory. This patch reworks the handling in the following way:
- Enable direct tile-stores to the output memref for the VNNI-packed,
_zero-initialized_ case as well.
- All remaining paths require that the tile register contents are moved
through a temporary buffer. However, the shape of that buffer only
matters if we still need to accumulate the results onto the initial
value in memory – we can derive it from the source buffer's shape, as
before. Otherwise, we can just pick a shape to hold all output tiles. On
the online-packing path, we ensure that we have two neighboring tiles in
the N-dimension to allow shuffling.
Assisted-by: Copilot