From mboxrd@z Thu Jan 1 00:00:00 1970 X-Msuck: nntp://news.gmane.org/gmane.linux.lib.musl.general/8055 Path: news.gmane.org!not-for-mail From: Alexander Monakov Newsgroups: gmane.linux.lib.musl.general Subject: Re: [PATCH v2 4/6] dynlink.c: pass gnu-hash table pointer to gnu_lookup Date: Sun, 28 Jun 2015 11:59:36 +0300 (MSK) Message-ID: References: <1435101895-18240-1-git-send-email-amonakov@ispras.ru> <1435448915-28419-1-git-send-email-amonakov@ispras.ru> <1435448915-28419-5-git-send-email-amonakov@ispras.ru> Reply-To: musl@lists.openwall.com NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="168458499-2115803591-1435481976=:20522" X-Trace: ger.gmane.org 1435481991 6385 80.91.229.3 (28 Jun 2015 08:59:51 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Sun, 28 Jun 2015 08:59:51 +0000 (UTC) To: musl@lists.openwall.com Original-X-From: musl-return-8068-gllmg-musl=m.gmane.org@lists.openwall.com Sun Jun 28 10:59:51 2015 Return-path: Envelope-to: gllmg-musl@m.gmane.org Original-Received: from mother.openwall.net ([195.42.179.200]) by plane.gmane.org with smtp (Exim 4.69) (envelope-from ) id 1Z98RK-0006ez-0b for gllmg-musl@m.gmane.org; Sun, 28 Jun 2015 10:59:50 +0200 Original-Received: (qmail 22191 invoked by uid 550); 28 Jun 2015 08:59:48 -0000 Mailing-List: contact musl-help@lists.openwall.com; run by ezmlm Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: Original-Received: (qmail 22173 invoked from network); 28 Jun 2015 08:59:47 -0000 In-Reply-To: User-Agent: Alpine 2.11 (LNX 23 2013-08-11) Xref: news.gmane.org gmane.linux.lib.musl.general:8055 Archived-At: This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. --168458499-2115803591-1435481976=:20522 Content-Type: TEXT/PLAIN; charset=US-ASCII (this and the previous email are actually following up on patch 5, not 4) How about handling power-of-two divisors like this. In precompute_udiv: 1. Factor out powers of two from 'div' up front and get rid of 'goto again' (ok since doing the pre-shift unconditionally looks better) 2. If 'div' is now 1: - on 64-bit there's no problem: set 'mul' to 1 and 's2' to 0 - on 32-bit: set 'mul' to 0 ...and in umod: 3. On 32-bit arches, check 'mul' after pre-shift and skip to end if zero. With this change it's easy to drop 'div' argument from 'umod', rename 'umod' to 'udiv' and make the caller do the modulus computation. Attaching a variant of the latency bench that implements the above; I also tried to avoid small 'val' in the bench loop by using a recurrence with a bitwise inversion. Alexander --168458499-2115803591-1435481976=:20522 Content-Type: TEXT/x-c; name=umod-bench.c Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename=umod-bench.c I2luY2x1ZGUgPHN0ZGlvLmg+DQojaW5jbHVkZSA8c3RkbGliLmg+DQojaW5j bHVkZSA8c3RkaW50Lmg+DQojaW5jbHVkZSA8dGltZS5oPg0KDQpzdHJ1Y3Qg dWRpdiB7DQoJdWludDMyX3QgbXVsOw0KCXVuc2lnbmVkIGNoYXIgczEsIHMy LCBpbmM7DQp9Ow0KDQpzdGF0aWMgdm9pZCBwcmVjb21wdXRlX3VkaXYodWlu dDMyX3QgZGl2LCBzdHJ1Y3QgdWRpdiAqcCkNCnsNCglpbnQgYml0cyA9IDA7 DQoJd2hpbGUgKCEoZGl2ICYgMSkpIGRpdiA+Pj0gMSwgYml0cysrOw0KCXAt PnMxID0gYml0czsNCglpZiAoZGl2ID09IDEpIHsNCgkJcC0+bXVsID0gKHNp emVvZihsb25nKSA9PSA4KTsNCgkJcC0+czIgID0gMDsNCgkJcC0+aW5jID0g MDsNCgkJcmV0dXJuOw0KCX0NCgl1aW50MzJfdCB0bXAgPSAxdTw8MzEsIHF1 byA9IHRtcC9kaXYsIHJlbSA9IHRtcCVkaXY7DQoNCglpbnQgbG9nPTA7DQoJ dG1wPWRpdjsgZG8gbG9nKys7IHdoaWxlICh0bXA+Pj0xKTsNCg0KCWludCBl eHAsIHJkc2hmOw0KCXVpbnQzMl90IHBvdywgcmRtdWw9MDsNCglmb3IgKGV4 cD0wLCBwb3c9MXU8PGJpdHM7IDsgZXhwKyssIHBvdzw8PTEpIHsNCgkJaW50 IG92ZiA9IHJlbSA+PSBkaXYgLSByZW07DQoJCXF1byAqPSAyOyByZW0gKj0g MjsNCgkJaWYgKG92ZikgcXVvKyssIHJlbSAtPSBkaXY7DQoNCgkJaWYgKGV4 cCA+PSBsb2ctYml0cyB8fCBkaXYtcmVtIDw9IHBvdykNCgkJCWJyZWFrOw0K DQoJCWlmICghcmRtdWwgJiYgcmVtIDw9IHBvdykNCgkJCXJkbXVsID0gcXVv LCByZHNoZiA9IGV4cDsNCgl9DQoJaW50IHMyX2FkaiA9IChzaXplb2YobG9u Zyk9PTgpID8gMzIgOiAwOw0KCWlmIChleHAgPCBsb2cpIHsNCgkJcC0+bXVs ID0gcXVvKzE7DQoJCXAtPnMyICA9IGV4cCArIHMyX2FkajsNCgkJcC0+aW5j ID0gMDsNCgl9IGVsc2Ugew0KCQlwLT5tdWwgPSByZG11bDsNCgkJcC0+czIg ID0gcmRzaGYgKyBzMl9hZGo7DQoJCXAtPmluYyA9IDE7DQoJfQ0KfQ0KDQpz dGF0aWMgdWludDMyX3QgdW1vZCh1aW50MzJfdCB4LCB1aW50MzJfdCBkaXYs IHN0cnVjdCB1ZGl2ICpwKQ0Kew0KCXVpbnQzMl90IHYgPSB4ID4+IHAtPnMx Ow0KCWlmIChzaXplb2YobG9uZykgPT0gOCB8fCBwLT5tdWwpIHsNCgkJaWYg KHYgKyBwLT5pbmMpIHYgKz0gcC0+aW5jOw0KCQlpbnQgczMyPTMyLCBzMj1w LT5zMjsNCgkJaWYgKHNpemVvZihsb25nKSA9PSA4KQ0KCQkJczMyPXMyLCBz Mj0wOw0KCQl2ID0gKDF1bGwgKiB2ICogcC0+bXVsKSA+PiBzMzI7DQoJCXYg Pj49IHMyOw0KCX0NCglyZXR1cm4geC12KmRpdjsNCn0NCg0KI2RlZmluZSBO IDEwMDAwMDANCg0KdWludDMyX3QgZXh0X3Vtb2QodWludDMyX3QgeCwgdWlu dDMyX3QgZGl2LCBzdHJ1Y3QgdWRpdiAqcCkNCnsNCglyZXR1cm4gdW1vZCh4 LCBkaXYsIHApOw0KfQ0KDQppbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFy Z3YpDQp7DQoJc2l6ZV90IGk7DQoJc3RydWN0IHRpbWVzcGVjIHQwLCB0Ow0K CXVpbnQzMl90ICphID0gY2FsbG9jKE4sIHNpemVvZiAqYSk7DQoJZm9yIChp PTA7IGk8TjsgaSsrKSBhW2ldID0gMStyYW5kKCk7DQoJc3RydWN0IHVkaXYg KnVkID0gY2FsbG9jKE4sIHNpemVvZiAqdWQpOw0KCWZvciAoaT0wOyBpPE47 IGkrKykgcHJlY29tcHV0ZV91ZGl2KGFbaV0sIHVkK2kpOw0KCXVpbnQzMl90 IHZhbDsNCg0KCWNsb2NrX2dldHRpbWUoQ0xPQ0tfUkVBTFRJTUUsICZ0MCk7 DQoJZm9yIChpPTAsIHZhbD0tMTsgaTxOOyBpKyspIHZhbCA9IH4odmFsICUg YVtpXSk7DQoJY2xvY2tfZ2V0dGltZShDTE9DS19SRUFMVElNRSwgJnQpOw0K CXQudHZfc2VjIC09IHQwLnR2X3NlYzsNCglpZiAoKHQudHZfbnNlYyAtPSB0 MC50dl9uc2VjKSA8IDApIHsNCgkJdC50dl9uc2VjICs9IDEwMDAwMDAwMDA7 DQoJCXQudHZfc2VjLS07DQoJfQ0KCXByaW50ZigiJWx1ICVsbGQuJS45bGRc biIsICh1bnNpZ25lZCBsb25nKXZhbCwgKGxvbmcgbG9uZyl0LnR2X3NlYywg dC50dl9uc2VjKTsNCg0KCWNsb2NrX2dldHRpbWUoQ0xPQ0tfUkVBTFRJTUUs ICZ0MCk7DQoJZm9yIChpPTAsIHZhbD0tMTsgaTxOOyBpKyspIHZhbCA9IH51 bW9kKHZhbCwgYVtpXSwgdWQraSk7DQoJY2xvY2tfZ2V0dGltZShDTE9DS19S RUFMVElNRSwgJnQpOw0KCXQudHZfc2VjIC09IHQwLnR2X3NlYzsNCglpZiAo KHQudHZfbnNlYyAtPSB0MC50dl9uc2VjKSA8IDApIHsNCgkJdC50dl9uc2Vj ICs9IDEwMDAwMDAwMDA7DQoJCXQudHZfc2VjLS07DQoJfQ0KCXByaW50Zigi JWx1ICVsbGQuJS45bGRcbiIsICh1bnNpZ25lZCBsb25nKXZhbCwgKGxvbmcg bG9uZyl0LnR2X3NlYywgdC50dl9uc2VjKTsNCglyZXR1cm4gMDsNCn0NCg== --168458499-2115803591-1435481976=:20522--