From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from eggs.gnu.org ([208.118.235.92]:58648) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UHyry-0007Kf-4K for qemu-devel@nongnu.org; Tue, 19 Mar 2013 11:54:38 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1UHyrw-0004hq-JF for qemu-devel@nongnu.org; Tue, 19 Mar 2013 11:54:34 -0400 Received: from mx1.redhat.com ([209.132.183.28]:46418) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UHyrw-0004he-A3 for qemu-devel@nongnu.org; Tue, 19 Mar 2013 11:54:32 -0400 Message-ID: <51488A32.8060707@redhat.com> Date: Tue, 19 Mar 2013 09:54:26 -0600 From: Eric Blake MIME-Version: 1.0 References: <1363362619-3190-1-git-send-email-pl@kamp.de> <1363362619-3190-3-git-send-email-pl@kamp.de> In-Reply-To: <1363362619-3190-3-git-send-email-pl@kamp.de> Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="----enig2MLMXJSUMRWTPUKMMNQOE" Subject: Re: [Qemu-devel] [PATCHv2 2/9] cutils: add a function to find non-zero content in a buffer List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: Peter Lieven Cc: qemu-devel@nongnu.org This is an OpenPGP/MIME signed message (RFC 4880 and 3156) ------enig2MLMXJSUMRWTPUKMMNQOE Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable On 03/15/2013 09:50 AM, Peter Lieven wrote: > Signed-off-by: Peter Lieven > --- > include/qemu-common.h | 2 ++ > util/cutils.c | 40 ++++++++++++++++++++++++++++++++++++++++ > 2 files changed, 42 insertions(+) >=20 > =20 > +#define BUFFER_FIND_NONZERO_OFFSET_UNROLL_FACTOR 8 Good. > + assert(len % (BUFFER_FIND_NONZERO_OFFSET_UNROLL_FACTOR=20 > + * sizeof(VECTYPE)) =3D=3D 0); Good use of it. > + assert(((uintptr_t) buf) % sizeof(VECTYPE) =3D=3D 0); > + > + if (*((const long *) buf)) { > + return 0; > + } > + > + for (i =3D 0; i < len / sizeof(VECTYPE); i +=3D 8) { Magic number 8, instead of reusing BUFFER_FIND_NONZERO_OFFSET_UNROLL_FACT= OR. > + VECTYPE tmp0 =3D p[i+0] | p[i+1]; Indentation looks off, because you used TABs. Spaces around binary operators (two instances of '+' per line). > + VECTYPE tmp1 =3D p[i+2] | p[i+3]; > + VECTYPE tmp2 =3D p[i+4] | p[i+5]; > + VECTYPE tmp3 =3D p[i+6] | p[i+7]; > + VECTYPE tmp01 =3D tmp0 | tmp1; > + VECTYPE tmp23 =3D tmp2 | tmp3; > + if (!ALL_EQ(tmp01 | tmp23, zero)) { > + break; > + } > + } > + return i * sizeof(VECTYPE); > +} Algorithm looks correct, but worth a respin to fix the appearance. --=20 Eric Blake eblake redhat com +1-919-301-3266 Libvirt virtualization library http://libvirt.org ------enig2MLMXJSUMRWTPUKMMNQOE Content-Type: application/pgp-signature; name="signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="signature.asc" -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.13 (GNU/Linux) Comment: Public key at http://people.redhat.com/eblake/eblake.gpg Comment: Using GnuPG with Thunderbird - http://www.enigmail.net/ iQEcBAEBCAAGBQJRSIoyAAoJEKeha0olJ0NqkhUH/27DShEanEuIVSmGEugHXwWN /OLujdMFydJUpKDDrG2X6D1f3Mhmf0KMQBwELQQnqcQ5HFVnCxWb1a1oMJFvQfB6 Um5bgkc8m8D6W0oVA6oGsM0vmXsIYk4n5lGoJzvPMcSvrlg7V0uaiXBaEZbWxWPE PlDFo78VFKhqrE3QXrbdRIOkTG/rlHsZCx0znOQNrmzbLwjsA9hLnI21SQIHysY+ QamndXdtOd7TaFMiCAFOcnzhiin2vOW0jOxKmlneLm1HsXhBb46SL/JTVQLt0cQT g6l8jbcE5idluguVzhrVueKQzcEqC9BPql3Enwg15WT4LKv2UIcXVspOwARjSHQ= =5vzV -----END PGP SIGNATURE----- ------enig2MLMXJSUMRWTPUKMMNQOE--