On Tue, 14 Jul 2026 at 00:04, Richard Henderson
<[email protected]> wrote:
>
> Signed-off-by: Richard Henderson <[email protected]>
> ---
> +static void sme_tmop(void *vza, void *vzn, void *vzm, uint64_t *zk,
> + void *fn_opaque, uint32_t desc, MemOp esz,
> + void (*fn)(void *, void *, void *, void *))
> +{
> + intptr_t oprsz = simd_maxsz(desc);
> + intptr_t index = simd_data(desc);
> + intptr_t esize = 1 << esz;
> + intptr_t host_adj = HOST_BIG_ENDIAN ? 8 - esize : 0;
> + /* Base in bits for op3[index*:csize], csize = (VL * 2) / esize. */
> + intptr_t ctrl_base = index * oprsz * 2;
> + /* Create a zero for use with the largest esz. */
> + uint32_t zero = 0;
> +
> + for (intptr_t row = 0; row < oprsz; row += esize) {
> + void *vza_row = vza + tile_vslice_offset(row);
> +
> + for (intptr_t col = 0; col < oprsz; col += esize) {
> + void *e2 = vzm + (col ^ host_adj);
> + void *e3 = vza_row + (col ^ host_adj);
Having just read patch 4, is it possible to do this with the H
macros rather than a manual host_adj, as we do in
sme_tmop_2way_sh() there ?
-- PMM