aboutsummaryrefslogtreecommitdiff
path: root/target/hexagon/genptr.c
diff options
context:
space:
mode:
authorTaylor Simpson <tsimpson@quicinc.com>2021-06-01 18:19:43 -0500
committerTaylor Simpson <tsimpson@quicinc.com>2021-06-29 11:32:50 -0500
commit88725336717ab93a194bd1b100179b6a96983988 (patch)
tree3a6428df3f2f6745c96551ecc150c3d5e299de3f /target/hexagon/genptr.c
parenta5a8d98c8537f022a14bdc70eff12e296431b80f (diff)
Hexagon (target/hexagon) cleanup gen_store_conditional[48] functions
Previously the store-conditional code was writing to hex_pred[prednum]. Then, the fGEN_TCG override was reading from there to the destination variable so that the packet commit logic would handle it properly. The correct implementation is to write to the destination variable and don't have the extra read in the override. Remove the unused arguments from gen_store_conditional[48] Signed-off-by: Taylor Simpson <tsimpson@quicinc.com> Reviewed-by: Richard Henderson <richard.henderson@linaro.org> Message-Id: <1622589584-22571-4-git-send-email-tsimpson@quicinc.com>
Diffstat (limited to 'target/hexagon/genptr.c')
-rw-r--r--target/hexagon/genptr.c16
1 files changed, 4 insertions, 12 deletions
diff --git a/target/hexagon/genptr.c b/target/hexagon/genptr.c
index 797a6c0cc9..fba5ec6012 100644
--- a/target/hexagon/genptr.c
+++ b/target/hexagon/genptr.c
@@ -27,12 +27,6 @@
#undef QEMU_GENERATE
#include "gen_tcg.h"
-static inline TCGv gen_read_preg(TCGv pred, uint8_t num)
-{
- tcg_gen_mov_tl(pred, hex_pred[num]);
- return pred;
-}
-
static inline void gen_log_predicated_reg_write(int rnum, TCGv val, int slot)
{
TCGv zero = tcg_const_tl(0);
@@ -334,8 +328,7 @@ static inline void gen_load_locked8u(TCGv_i64 dest, TCGv vaddr, int mem_index)
tcg_gen_mov_i64(hex_llsc_val_i64, dest);
}
-static inline void gen_store_conditional4(CPUHexagonState *env,
- DisasContext *ctx, int prednum,
+static inline void gen_store_conditional4(DisasContext *ctx,
TCGv pred, TCGv vaddr, TCGv src)
{
TCGLabel *fail = gen_new_label();
@@ -349,7 +342,7 @@ static inline void gen_store_conditional4(CPUHexagonState *env,
tmp = tcg_temp_new();
tcg_gen_atomic_cmpxchg_tl(tmp, hex_llsc_addr, hex_llsc_val, src,
ctx->mem_idx, MO_32);
- tcg_gen_movcond_tl(TCG_COND_EQ, hex_pred[prednum], tmp, hex_llsc_val,
+ tcg_gen_movcond_tl(TCG_COND_EQ, pred, tmp, hex_llsc_val,
one, zero);
tcg_temp_free(one);
tcg_temp_free(zero);
@@ -363,8 +356,7 @@ static inline void gen_store_conditional4(CPUHexagonState *env,
tcg_gen_movi_tl(hex_llsc_addr, ~0);
}
-static inline void gen_store_conditional8(CPUHexagonState *env,
- DisasContext *ctx, int prednum,
+static inline void gen_store_conditional8(DisasContext *ctx,
TCGv pred, TCGv vaddr, TCGv_i64 src)
{
TCGLabel *fail = gen_new_label();
@@ -380,7 +372,7 @@ static inline void gen_store_conditional8(CPUHexagonState *env,
ctx->mem_idx, MO_64);
tcg_gen_movcond_i64(TCG_COND_EQ, tmp, tmp, hex_llsc_val_i64,
one, zero);
- tcg_gen_extrl_i64_i32(hex_pred[prednum], tmp);
+ tcg_gen_extrl_i64_i32(pred, tmp);
tcg_temp_free_i64(one);
tcg_temp_free_i64(zero);
tcg_temp_free_i64(tmp);