> -----Original Message----- > From: Richard Henderson <richard.hender...@linaro.org> > Sent: Monday, March 15, 2021 8:40 AM > To: Taylor Simpson <tsimp...@quicinc.com>; qemu-devel@nongnu.org > Cc: phi...@redhat.com > Subject: Re: [PATCH] Hexagon (target/hexagon) TCG generation cleanup > > On 3/14/21 10:54 PM, Taylor Simpson wrote: > > Simplify TCG generation of hex_reg_written > > > > Address feedback from Richard Henderson > <<richard.hender...@linaro.org> > > > > Signed-off-by: Taylor Simpson <tsimp...@quicinc.com> > > --- > > target/hexagon/genptr.c | 12 +++++++++--- > > 1 file changed, 9 insertions(+), 3 deletions(-) > > > > diff --git a/target/hexagon/genptr.c b/target/hexagon/genptr.c > > index 7481f4c..0ad63fe 100644 > > --- a/target/hexagon/genptr.c > > +++ b/target/hexagon/genptr.c > > @@ -43,9 +43,15 @@ static inline void gen_log_predicated_reg_write(int > rnum, TCGv val, int slot) > > tcg_gen_movcond_tl(TCG_COND_EQ, hex_new_value[rnum], > slot_mask, zero, > > val, hex_new_value[rnum]); > > #if HEX_DEBUG > > - /* Do this so HELPER(debug_commit_end) will know */ > > - tcg_gen_movcond_tl(TCG_COND_EQ, hex_reg_written[rnum], > slot_mask, zero, > > - one, hex_reg_written[rnum]); > > + /* > > + * Do this so HELPER(debug_commit_end) will know > > + * > > + * Note that slot_mask indicates the value is not written > > + * (i.e., slot was cancelled), so we negate the value before > > + * or'ing with hex_reg_written[rnum]. > > + */ > > + tcg_gen_xori_tl(slot_mask, slot_mask, 1 << slot); > > + tcg_gen_or_tl(hex_reg_written[rnum], hex_reg_written[rnum], > slot_mask); > > reg_written appears to be a boolean, not a mask of any kind. > I think you want > > tcg_gen_setcond_i32(TCG_COND_EQ, slot_mask, slot_mask, zero); > > and not the xor.
I'm treating it as a zero/non-zero value. The change works because the usage in op_helper.c is if (env->reg_written[i]) ... I'll change the xor to setcond to make it more clear. Thanks, Taylor