On 3 September 2015 at 02:31, Richard Henderson <r...@twiddle.net> wrote: > The crc instructions are omitted from this set. > > Signed-off-by: Richard Henderson <r...@twiddle.net> > --- > target-tilegx/helper.c | 23 ++++++++++++++++ > target-tilegx/helper.h | 2 ++ > target-tilegx/translate.c | 68 > ++++++++++++++++++++++++++++++++++++++++++++++- > 3 files changed, 92 insertions(+), 1 deletion(-) > > diff --git a/target-tilegx/helper.c b/target-tilegx/helper.c > index 5b37a8c..9a73edc 100644 > --- a/target-tilegx/helper.c > +++ b/target-tilegx/helper.c > @@ -40,6 +40,29 @@ uint64_t helper_cnttz(uint64_t arg) > return ctz64(arg); > } > > +uint64_t helper_pcnt(uint64_t arg) > +{ > + return ctpop64(arg); > +} > + > +uint64_t helper_revbits(uint64_t arg) > +{ > + /* Assign the correct byte position. */ > + arg = bswap64(arg); > + > + /* Assign the correct nibble position. */ > + arg = ((arg & 0xf0f0f0f0f0f0f0f0ULL) >> 4) > + | ((arg & 0x0f0f0f0f0f0f0f0fULL) << 4); > + > + /* Assign the correct bit position. */ > + arg = ((arg & 0x8888888888888888ULL) >> 3) > + | ((arg & 0x4444444444444444ULL) >> 1) > + | ((arg & 0x2222222222222222ULL) << 1) > + | ((arg & 0x1111111111111111ULL) << 3); > + > + return arg; > +}
I guess we can create the bitops.h utility function later if you insist... > +/* Shift the 128-bit value TSRCA:TSRCD riht by the number of bytes "right" > + specified by the bottom 3 bits of TSRCB, and set TDEST to the > + low 64 bits of the resulting value. */ > +static void gen_dblalign(TCGv tdest, TCGv tsrcd, TCGv tsrca, TCGv tsrcb) Otherwise Reviewed-by: Peter Maydell <peter.mayd...@linaro.org> thanks -- PMM