On 3/3/19 9:23 AM, Mark Cave-Ayland wrote: > These will become more useful later, but initially use this as an aid to > simplify the offset calculation by replacing the HOST_TARGET_BIGENDIAN > sections with the VsrD macro. > > Signed-off-by: Mark Cave-Ayland <mark.cave-ayl...@ilande.co.uk> > --- > target/ppc/cpu.h | 10 ++++++++++ > target/ppc/translate.c | 24 ++++++++++-------------- > 2 files changed, 20 insertions(+), 14 deletions(-) > > diff --git a/target/ppc/cpu.h b/target/ppc/cpu.h > index d0580c6b6d..326593e0e7 100644 > --- a/target/ppc/cpu.h > +++ b/target/ppc/cpu.h > @@ -2603,6 +2603,16 @@ static inline uint64_t *cpu_vsrl_ptr(CPUPPCState *env, > int i) > return (uint64_t *)((uintptr_t)env + vsrl_offset(i)); > } > > +static inline int avrh_offset(int i) > +{ > + return offsetof(CPUPPCState, vsr[32 + i].VsrD(0)); > +} > + > +static inline int avrl_offset(int i) > +{ > + return offsetof(CPUPPCState, vsr[32 + i].VsrD(1)); > +}
I really don't see the point of these... > static inline void get_avr64(TCGv_i64 dst, int regno, bool high) > { > -#ifdef HOST_WORDS_BIGENDIAN > - tcg_gen_ld_i64(dst, cpu_env, offsetof(CPUPPCState, > - vsr[32 + regno].u64[(high ? 0 : > 1)])); > -#else > - tcg_gen_ld_i64(dst, cpu_env, offsetof(CPUPPCState, > - vsr[32 + regno].u64[(high ? 1 : > 0)])); > -#endif > + if (high) { > + tcg_gen_ld_i64(dst, cpu_env, avrh_offset(regno)); > + } else { > + tcg_gen_ld_i64(dst, cpu_env, avrl_offset(regno)); > + } When you could just as well write this as tcg_gen_ld_i64(dst, cpu_env, offsetof(CPUPPCState, vsr[32+regno].VsrD(high))); r~