From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:39776) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1bZWFX-00071b-Hp for qemu-devel@nongnu.org; Tue, 16 Aug 2016 00:45:19 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1bZWFT-0005Yj-8F for qemu-devel@nongnu.org; Tue, 16 Aug 2016 00:45:15 -0400 Date: Tue, 16 Aug 2016 14:46:57 +1000 From: David Gibson Message-ID: <20160816044657.GJ14530@voom.fritz.box> References: <1470901008-3284-1-git-send-email-raji@linux.vnet.ibm.com> <1470901008-3284-4-git-send-email-raji@linux.vnet.ibm.com> MIME-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="72k7VsmfIboquFwl" Content-Disposition: inline In-Reply-To: <1470901008-3284-4-git-send-email-raji@linux.vnet.ibm.com> Subject: Re: [Qemu-devel] [PATCH v3 3/5] target-ppc: add vector count trailing zeros instructions List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Rajalakshmi Srinivasaraghavan Cc: qemu-ppc@nongnu.org, rth@twiddle.net, qemu-devel@nongnu.org, nikunj@linux.vnet.ibm.com, benh@kernel.crashing.org --72k7VsmfIboquFwl Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable On Thu, Aug 11, 2016 at 01:06:46PM +0530, Rajalakshmi Srinivasaraghavan wro= te: > The following vector count trailing zeros instructions are > added from ISA 3.0. >=20 > vctzb - Vector Count Trailing Zeros Byte > vctzh - Vector Count Trailing Zeros Halfword > vctzw - Vector Count Trailing Zeros Word > vctzd - Vector Count Trailing Zeros Doubleword >=20 > Signed-off-by: Rajalakshmi Srinivasaraghavan Reviewed-by: David Gibson However, it needs a rebase. > --- > target-ppc/helper.h | 4 ++++ > target-ppc/int_helper.c | 15 +++++++++++++++ > target-ppc/translate/vmx-impl.c | 19 +++++++++++++++++++ > target-ppc/translate/vmx-ops.c | 8 ++++++++ > 4 files changed, 46 insertions(+), 0 deletions(-) >=20 > diff --git a/target-ppc/helper.h b/target-ppc/helper.h > index 59e7b88..6e6e7b3 100644 > --- a/target-ppc/helper.h > +++ b/target-ppc/helper.h > @@ -327,6 +327,10 @@ DEF_HELPER_2(vclzb, void, avr, avr) > DEF_HELPER_2(vclzh, void, avr, avr) > DEF_HELPER_2(vclzw, void, avr, avr) > DEF_HELPER_2(vclzd, void, avr, avr) > +DEF_HELPER_2(vctzb, void, avr, avr) > +DEF_HELPER_2(vctzh, void, avr, avr) > +DEF_HELPER_2(vctzw, void, avr, avr) > +DEF_HELPER_2(vctzd, void, avr, avr) > DEF_HELPER_2(vpopcntb, void, avr, avr) > DEF_HELPER_2(vpopcnth, void, avr, avr) > DEF_HELPER_2(vpopcntw, void, avr, avr) > diff --git a/target-ppc/int_helper.c b/target-ppc/int_helper.c > index a917bd5..162f1e9 100644 > --- a/target-ppc/int_helper.c > +++ b/target-ppc/int_helper.c > @@ -2091,6 +2091,21 @@ VGENERIC_DO(clzd, u64) > #undef clzw > #undef clzd > =20 > +#define ctzb(v) ((v) ? ctz32(v) : 8) > +#define ctzh(v) ((v) ? ctz32(v) : 16) > +#define ctzw(v) ctz32((v)) > +#define ctzd(v) ctz64((v)) > + > +VGENERIC_DO(ctzb, u8) > +VGENERIC_DO(ctzh, u16) > +VGENERIC_DO(ctzw, u32) > +VGENERIC_DO(ctzd, u64) > + > +#undef ctzb > +#undef ctzh > +#undef ctzw > +#undef ctzd > + > #define popcntb(v) ctpop8(v) > #define popcnth(v) ctpop16(v) > #define popcntw(v) ctpop32(v) > diff --git a/target-ppc/translate/vmx-impl.c b/target-ppc/translate/vmx-i= mpl.c > index 766a645..ebf123f 100644 > --- a/target-ppc/translate/vmx-impl.c > +++ b/target-ppc/translate/vmx-impl.c > @@ -553,6 +553,21 @@ static void glue(gen_, name)(DisasContext *ctx) = \ > tcg_temp_free_ptr(rd); \ > } > =20 > +#define GEN_VXFORM_NOA_2(name, opc2, opc3, opc4) \ > +static void glue(gen_, name)(DisasContext *ctx) \ > + { \ > + TCGv_ptr rb, rd; \ > + if (unlikely(!ctx->altivec_enabled)) { \ > + gen_exception(ctx, POWERPC_EXCP_VPU); \ > + return; \ > + } \ > + rb =3D gen_avr_ptr(rB(ctx->opcode)); = \ > + rd =3D gen_avr_ptr(rD(ctx->opcode)); = \ > + gen_helper_##name(rd, rb); \ > + tcg_temp_free_ptr(rb); \ > + tcg_temp_free_ptr(rd); \ > + } > + > GEN_VXFORM_NOA(vupkhsb, 7, 8); > GEN_VXFORM_NOA(vupkhsh, 7, 9); > GEN_VXFORM_NOA(vupkhsw, 7, 25); > @@ -745,6 +760,10 @@ GEN_VXFORM_NOA(vclzb, 1, 28) > GEN_VXFORM_NOA(vclzh, 1, 29) > GEN_VXFORM_NOA(vclzw, 1, 30) > GEN_VXFORM_NOA(vclzd, 1, 31) > +GEN_VXFORM_NOA_2(vctzb, 1, 24, 28) > +GEN_VXFORM_NOA_2(vctzh, 1, 24, 29) > +GEN_VXFORM_NOA_2(vctzw, 1, 24, 30) > +GEN_VXFORM_NOA_2(vctzd, 1, 24, 31) > GEN_VXFORM_NOA(vpopcntb, 1, 28) > GEN_VXFORM_NOA(vpopcnth, 1, 29) > GEN_VXFORM_NOA(vpopcntw, 1, 30) > diff --git a/target-ppc/translate/vmx-ops.c b/target-ppc/translate/vmx-op= s.c > index aafe70b..5b2826e 100644 > --- a/target-ppc/translate/vmx-ops.c > +++ b/target-ppc/translate/vmx-ops.c > @@ -44,6 +44,10 @@ GEN_HANDLER_E(name, 0x04, opc2, opc3, 0x00000000, PPC_= NONE, PPC2_ISA300) > #define GEN_VXFORM_300_EXT(name, opc2, opc3, inval) \ > GEN_HANDLER_E(name, 0x04, opc2, opc3, inval, PPC_NONE, PPC2_ISA300) > =20 > +#define GEN_VXFORM_300_EO(name, opc2, opc3, opc4) \ > +GEN_HANDLER_E_2(name, 0x04, opc2, opc3, opc4, 0x00000000, PPC_NONE, \ > + PPC2_ISA300) > + > #define GEN_VXFORM_DUAL(name0, name1, opc2, opc3, type0, type1) \ > GEN_HANDLER_E(name0##_##name1, 0x4, opc2, opc3, 0x00000000, type0, type1) > =20 > @@ -211,6 +215,10 @@ GEN_VXFORM_DUAL_INV(vspltish, vinserth, 6, 13, 0x000= 00000, 0x100000, > GEN_VXFORM_DUAL_INV(vspltisw, vinsertw, 6, 14, 0x00000000, 0x100000, > PPC2_ALTIVEC_207), > GEN_VXFORM_300_EXT(vinsertd, 6, 15, 0x100000), > +GEN_VXFORM_300_EO(vctzb, 0x01, 0x18, 0x1C), > +GEN_VXFORM_300_EO(vctzh, 0x01, 0x18, 0x1D), > +GEN_VXFORM_300_EO(vctzw, 0x01, 0x18, 0x1E), > +GEN_VXFORM_300_EO(vctzd, 0x01, 0x18, 0x1F), > =20 > #define GEN_VXFORM_NOA(name, opc2, opc3) \ > GEN_HANDLER(name, 0x04, opc2, opc3, 0x001f0000, PPC_ALTIVEC) --=20 David Gibson | I'll have my music baroque, and my code david AT gibson.dropbear.id.au | minimalist, thank you. NOT _the_ _other_ | _way_ _around_! http://www.ozlabs.org/~dgibson --72k7VsmfIboquFwl Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG v1 iQIcBAEBAgAGBQJXsprBAAoJEGw4ysog2bOS6hgQAMBEWCyvo4fD/uNvEHhE7nR9 D9U/ZtCKH3kLfJpnA0ZNsQO9nK2XHzY1sM0IlH5h+O6totjzPbj7Gl0FvHP5uIkw G5KeSIGJQGR4tfQsylNpc6wsx1pMkgYmK/GiIfJuz9wHBH1HUkVLoOmoRjNif2H3 l5hB+A/SvJsfoI+Wh8UH/Qo4alhIpLFRwXmQJZ4ZMTcfq4B8WGYfP7ktHtPdHKbL XDqJKOp/dkJKhcwrqZeydbzQVwOjKrNJdYzD2H26dpE5UPhEGBsoow1/51sagE3T m8EDwmU8dV+1Wgc+S3Bkl6yo5mAwc+p8O4+4D+FKpy3tv9amFqXppoqgENNxW53L 00kuSv54mBNM3qms87xpHYL08Qu5hKili5JCse3YhNLXqRE9pET4k+LQ5CMOoPk5 UUI8krIc851qK6thprrCv/1AClgd4ANdBwgvDV+1G463ukcr3odbm8fJlJ88vGZG shj/brLhs72kYlLhNkmlbj+7QVREwjhHtaetlnETT7+HYFEE0vmtWuVz0hPDatPu QgWj7qI5UcZFkxYQ5wpmW9e/gGk6nVK+/ciqTU4F49knFzdtYgTnLftSwyWvvVFk wLgh6GH5zU1EybZo5TCvB979BCO9kmMYNoLPIM030B4hLrz3QgdicFfV+pKJOmog k5JV97Ch/fmuvqrmLjKG =YWUW -----END PGP SIGNATURE----- --72k7VsmfIboquFwl--