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 <tsimpson@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(-)