On 9/5/22 23:14, Taylor Simpson wrote:
The store width is needed for packet commit, so it is stored in
ctx->store_width.  Currently, it is set when a store has a TCG
override instead of a QEMU helper.  In the QEMU helper case, the
ctx->store_width is not set, we invoke a helper during packet commit
that uses the runtime store width.

This patch ensures ctx->store_width is set for all store instructions,
so performance is improved because packet commit can generate the proper
TCG store rather than the generic helper.

We do this by
- Create new attributes to indicate the store size
- During gen_semantics, convert the fSTORE instances to fSTORE<size>
- Assign the new attributes to the new macros
- Add definitions for the new macros
- Use the attributes from the instructions during translation to
   set ctx->store_width
- Remove setting of ctx->store_width from genptr.c

Signed-off-by: Taylor Simpson <tsimp...@quicinc.com>
---
  target/hexagon/macros.h          | 16 ++++++++++----
  target/hexagon/attribs_def.h.inc |  4 ++++
  target/hexagon/gen_semantics.c   | 26 +++++++++++++++++++++++
  target/hexagon/genptr.c          | 36 +++++++++++---------------------
  target/hexagon/translate.c       | 26 +++++++++++++++++++++++
  5 files changed, 80 insertions(+), 28 deletions(-)

Reviewed-by: Philippe Mathieu-Daudé <f4...@amsat.org>

Reply via email to