Message ID | 20230426004137.1319051-1-tsimpson@quicinc.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Hexagon (target/hexagon) short-circuit and move to DisasContext | expand |
On 4/26/23 01:41, Taylor Simpson wrote: > These instructions have implicit reads from p0, so we don't want > them in helpers when idef-parser is off. > > Signed-off-by: Taylor Simpson <tsimpson@quicinc.com> > --- > target/hexagon/gen_tcg.h | 18 ++++++++++++++++++ > target/hexagon/macros.h | 4 ---- > 2 files changed, 18 insertions(+), 4 deletions(-) > > diff --git a/target/hexagon/gen_tcg.h b/target/hexagon/gen_tcg.h > index 7c5cb93297..5e87d1d861 100644 > --- a/target/hexagon/gen_tcg.h > +++ b/target/hexagon/gen_tcg.h > @@ -1097,6 +1097,24 @@ > gen_jump(ctx, riV); \ > } while (0) > > +/* if (p0.new) r0 = #0 */ > +#define fGEN_TCG_SA1_clrtnew(SHORTCODE) \ > + do { \ > + TCGLabel *skip = gen_new_label(); \ > + tcg_gen_brcondi_tl(TCG_COND_EQ, hex_new_pred_value[0], 0, skip); \ > + tcg_gen_movi_tl(RdV, 0); \ > + gen_set_label(skip); \ > + } while (0) This ought to be a movcond. > + > +/* if (!p0.new) r0 = #0 */ > +#define fGEN_TCG_SA1_clrfnew(SHORTCODE) \ > + do { \ > + TCGLabel *skip = gen_new_label(); \ > + tcg_gen_brcondi_tl(TCG_COND_NE, hex_new_pred_value[0], 0, skip); \ > + tcg_gen_movi_tl(RdV, 0); \ > + gen_set_label(skip); \ > + } while (0) Likewise. r~
diff --git a/target/hexagon/gen_tcg.h b/target/hexagon/gen_tcg.h index 7c5cb93297..5e87d1d861 100644 --- a/target/hexagon/gen_tcg.h +++ b/target/hexagon/gen_tcg.h @@ -1097,6 +1097,24 @@ gen_jump(ctx, riV); \ } while (0) +/* if (p0.new) r0 = #0 */ +#define fGEN_TCG_SA1_clrtnew(SHORTCODE) \ + do { \ + TCGLabel *skip = gen_new_label(); \ + tcg_gen_brcondi_tl(TCG_COND_EQ, hex_new_pred_value[0], 0, skip); \ + tcg_gen_movi_tl(RdV, 0); \ + gen_set_label(skip); \ + } while (0) + +/* if (!p0.new) r0 = #0 */ +#define fGEN_TCG_SA1_clrfnew(SHORTCODE) \ + do { \ + TCGLabel *skip = gen_new_label(); \ + tcg_gen_brcondi_tl(TCG_COND_NE, hex_new_pred_value[0], 0, skip); \ + tcg_gen_movi_tl(RdV, 0); \ + gen_set_label(skip); \ + } while (0) + #define fGEN_TCG_J2_pause(SHORTCODE) \ do { \ uiV = uiV; \ diff --git a/target/hexagon/macros.h b/target/hexagon/macros.h index 3e162de3a7..2cb0647ce2 100644 --- a/target/hexagon/macros.h +++ b/target/hexagon/macros.h @@ -227,12 +227,8 @@ static inline void gen_cancel(uint32_t slot) #ifdef QEMU_GENERATE #define fLSBNEW(PVAL) tcg_gen_andi_tl(LSB, (PVAL), 1) -#define fLSBNEW0 tcg_gen_andi_tl(LSB, hex_new_pred_value[0], 1) -#define fLSBNEW1 tcg_gen_andi_tl(LSB, hex_new_pred_value[1], 1) #else #define fLSBNEW(PVAL) ((PVAL) & 1) -#define fLSBNEW0 (env->new_pred_value[0] & 1) -#define fLSBNEW1 (env->new_pred_value[1] & 1) #endif #ifdef QEMU_GENERATE
These instructions have implicit reads from p0, so we don't want them in helpers when idef-parser is off. Signed-off-by: Taylor Simpson <tsimpson@quicinc.com> --- target/hexagon/gen_tcg.h | 18 ++++++++++++++++++ target/hexagon/macros.h | 4 ---- 2 files changed, 18 insertions(+), 4 deletions(-)