> -----Original Message-----
> From: Anton Johansson <a...@rev.ng>
> Sent: Thursday, August 4, 2022 5:56 AM
> To: qemu-devel@nongnu.org
> Cc: a...@rev.ng; a...@rev.ng; bab...@rev.ng; ni...@rev.ng; Taylor Simpson
> <tsimp...@quicinc.com>; Brian Cain <bc...@quicinc.com>; Michael Lambert
> <mlamb...@quicinc.com>; richard.hender...@linaro.org;
> alex.ben...@linaro.org
> Subject: [PATCH v11 12/15] target/hexagon: prepare frontend for parser
>
> This patch adds the necessary changes to the Hexagon frontend, required by
> idef-parser to deal with a :mem_noshuf packet with a store in slot 1 and
> predicated load in slot 0.
>
> Signed-off-by: Anton Johansson <a...@rev.ng>
> ---
> target/hexagon/cpu.h | 8 ++++++++
> target/hexagon/translate.c | 22 ++++++++++++++++++++++
> target/hexagon/translate.h | 2 ++
> 3 files changed, 32 insertions(+)
>
> -git a/target/hexagon/translate.c b/target/hexagon/translate.c index
> e3e250fd4f..72bf8d591b 100644
> 494,6 +498,22 @@ void process_store(DisasContext *ctx, Packet *pkt, int
> slot_num)
>
> static void process_store_log(DisasContext *ctx, Packet *pkt) {
> + /*
> + * Here we deal with the special case of a :mem_noshuf packet with a
> + * predicated load in slot 0 with a store in slot 1. If the predicated
> + * branch wasn't taken during packet execution, then store in slot 1
> + * will not have been executed, corresponding to hex_did_store_s1 being
> 0.
> + * If this is the case, process the store here.
> + */
> + if (ctx->insn_is_noshuf_pload) {
> + TCGLabel *l = gen_new_label();
> + /* Reset s1_store_processed so process_store actually emits a store
> */
> + ctx->s1_store_processed = false;
> + tcg_gen_brcondi_tl(TCG_COND_EQ, hex_did_s1_store, 1, l);
> + process_store(ctx, pkt, 1);
> + gen_set_label(l);
> + }
> +
Let's follow the convention in CHECK_NOSHUF_PRED where we branch around the
probe of the load when the predicate is false and always call process_store.
Then, the mem_noshuf store will always have been processed - so we don't need
the runtime state to tell us.
Thanks,
Taylor