Re: [PATCH 01/10] target/arm: Implement FTMOPA (non-widening, FP32)
Peter Maydell <[email protected]> Tue, 28 Jul 2026 14:10:39 +0100
| Newsgroups | org.nongnu.qemu-arm,org.nongnu.qemu-devel |
|---|---|
| Message-ID | <CAFEAcA9DCByPPCL6fSnuMYmpBALNJaktyEB8ywAU2BU39GnaNA@mail.gmail.com> |
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