From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([2001:4830:134:3::10]:47931) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZXW2N-0000lh-5q for qemu-devel@nongnu.org; Thu, 03 Sep 2015 11:02:56 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZXW2L-0006Me-Gq for qemu-devel@nongnu.org; Thu, 03 Sep 2015 11:02:50 -0400 Received: from mx1.redhat.com ([209.132.183.28]:54409) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZXW2L-0006MS-Ab for qemu-devel@nongnu.org; Thu, 03 Sep 2015 11:02:49 -0400 References: <1441243885-7495-1-git-send-email-rth@twiddle.net> <1441243885-7495-34-git-send-email-rth@twiddle.net> From: Eric Blake Message-ID: <55E86117.9070806@redhat.com> Date: Thu, 3 Sep 2015 09:02:47 -0600 MIME-Version: 1.0 In-Reply-To: <1441243885-7495-34-git-send-email-rth@twiddle.net> Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="ke2qwtIjtxJ5dltJg2XwgMvgsA054CJ2U" Subject: Re: [Qemu-devel] [PATCH v15 33/33] target-tilegx: Handle v1shl, v1shru, v1shrs List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Richard Henderson , qemu-devel@nongnu.org Cc: peter.maydell@linaro.org This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --ke2qwtIjtxJ5dltJg2XwgMvgsA054CJ2U Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable On 09/02/2015 07:31 PM, Richard Henderson wrote: > Signed-off-by: Richard Henderson > --- > target-tilegx/Makefile.objs | 2 +- > target-tilegx/helper.h | 4 +++ > target-tilegx/simd_helper.c | 63 +++++++++++++++++++++++++++++++++++++= ++++++++ > target-tilegx/translate.c | 17 +++++++++++- > 4 files changed, 84 insertions(+), 2 deletions(-) > create mode 100644 target-tilegx/simd_helper.c Naive question: > + > +uint64_t helper_v1shl(uint64_t a, uint64_t b) > +{ > + uint64_t r =3D 0; > + int i; > + > + b &=3D 7; > + for (i =3D 0; i < 64; i +=3D 8) { > + uint64_t m =3D 0xffULL << i; > + r |=3D ((a & m) << b) & m; > + } Is it any more efficient to use multiplies instead of looping, as in: uint64_t m; b &=3D 7; m =3D 0x0101010101010101ULL * ((1 << (8 - b)) - 1); return (a & m) << b; Or if multiplies are bad, what about straight-line expansion of the mask, as in: uint64_t m; b &=3D 7; m =3D (1 << (8 - b)) - 1; m |=3D m << 32; m |=3D m << 16; m |=3D m << 8; return (a & m) << b; --=20 Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org --ke2qwtIjtxJ5dltJg2XwgMvgsA054CJ2U Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 Comment: Public key at http://people.redhat.com/eblake/eblake.gpg Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/ iQEcBAEBCAAGBQJV6GEXAAoJEKeha0olJ0NqlfIH/32UiQ6Qwsx7RCGWxLxkuzQw cn8/RNdJu8FClhoSnvhgYRfijnEnbsviPhSP/GgQShKp1QdagzLCUYT6yGdcEQf6 OwvH+DfX4wmUsJjNL9Psgity9DsgpNfyKcscM5wFAlVVtCKNih3RuATrLhFT2YWV DEP5lUyyg/Wv8MrpiBuqYOsjUYP/e9qfRTHtke05ytS8J6vqpIzl7Z8rEkoUYaHd rmHD7l9D8LCRke3ePOedFyKHOtGGoQVKB3xEirODq5dPV7smCp+UUdVfvKhtTCiS q4Rr2MnI58RUU6/B3NLbg//SrNj8/rXCxBaOQmb1gTYMgkmusDFpMakN8w77Mus= =EUMh -----END PGP SIGNATURE----- --ke2qwtIjtxJ5dltJg2XwgMvgsA054CJ2U--