qemu-devel
[Top][All Lists]
Advanced

[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: Brian Cain
Subject: Re: [RFC PATCH v1 36/43] target/hexagon: Add temporary vector storage
Date: Tue, 3 Dec 2024 14:28:20 -0600
User-agent: Mozilla Thunderbird


On 12/3/2024 12:56 PM, Anton Johansson via wrote:
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.

Per-packet there should be a maximum of one temporary.  But per-TB it's unbound.  Could we/should we have some guidance to put the brakes on translation early if we encounter ~N temp references?

But maybe that's not needed since the temp space can be reused within a TB among packets.


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




reply via email to

[Prev in Thread] Current Thread [Next in Thread]