[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [RFC PATCH v1 36/43] target/hexagon: Add temporary vector storage
From: |
Anton Johansson |
Subject: |
Re: [RFC PATCH v1 36/43] target/hexagon: Add temporary vector storage |
Date: |
Tue, 3 Dec 2024 19:56:03 +0100 |
On 22/11/24, Richard Henderson wrote:
> On 11/20/24 19:49, Anton Johansson wrote:
> > Temporary vectors in helper-to-tcg generated code are allocated from an
> > array of bytes in CPUArchState, specified with --temp-vector-block.
> >
> > This commits adds such a block of memory to CPUArchState, if
> > CONFIG_HELPER_TO_TCG is set.
> >
> > Signed-off-by: Anton Johansson <anjo@rev.ng>
> > ---
> > target/hexagon/cpu.h | 4 ++++
> > 1 file changed, 4 insertions(+)
> >
> > diff --git a/target/hexagon/cpu.h b/target/hexagon/cpu.h
> > index 7be4b5769e..fa6ac83e01 100644
> > --- a/target/hexagon/cpu.h
> > +++ b/target/hexagon/cpu.h
> > @@ -97,6 +97,10 @@ typedef struct CPUArchState {
> > MMVector future_VRegs[VECTOR_TEMPS_MAX] QEMU_ALIGNED(16);
> > MMVector tmp_VRegs[VECTOR_TEMPS_MAX] QEMU_ALIGNED(16);
> > +#ifdef CONFIG_HELPER_TO_TCG
> > + uint8_t tmp_vmem[4096] QEMU_ALIGNED(16);
> > +#endif
> > +
> > MMQReg QRegs[NUM_QREGS] QEMU_ALIGNED(16);
> > MMQReg future_QRegs[NUM_QREGS] QEMU_ALIGNED(16);
>
> Wow. Do you really require 4k in temp storage?
No, 4k is overkill used during testing. But consider that Hexagon uses
128- and 256-byte vectors in some cases so if the emitted code uses say
5 temporaries in its computation we end up at 1280 bytes as an upper
bound.
Two ideas here, we can:
1. Allow users to specify an upper bound on vector memory, and abort
translation of helpers that surpass this, and;
2. Emit maximum number of bytes used for vector temporaries to a
macro.
//Anton
- Re: [RFC PATCH v1 36/43] target/hexagon: Add temporary vector storage,
Anton Johansson <=