From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-1.1 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,FREEMAIL_FROM,MAILING_LIST_MULTI,RCVD_IN_MSPIKE_H2 autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 8935 invoked from network); 6 Jan 2023 16:57:25 -0000 Received: from second.openwall.net (193.110.157.125) by inbox.vuxu.org with ESMTPUTF8; 6 Jan 2023 16:57:25 -0000 Received: (qmail 20293 invoked by uid 550); 6 Jan 2023 16:57:22 -0000 Mailing-List: contact musl-help@lists.openwall.com; run by ezmlm Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: List-ID: Reply-To: musl@lists.openwall.com Received: (qmail 20255 invoked from network); 6 Jan 2023 16:57:21 -0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=gmx.net; s=s31663417; t=1673024229; bh=7Lnl8TNGY3Oft6T0BZQRQUnhijXZ393KlDKgqIzWqyo=; h=X-UI-Sender-Class:Date:From:To:Cc:Subject:References:In-Reply-To; b=WJq9BtuCSRSlj+3tKBEoHoza/pRlgGsCcd0o8KMkJOEbOSgQ3sgoI8EARttszZIbr 2hfe4dG/4UcnT0JC4TqbLCXYhdqKYhnLNy3k0XPHu1aI4JKyL2ZrIJgYbLF52t1DRY vmYEd757AzWvPuyC6uXu7fR22olbd3bjQ8yFFLkpvQCf81eGe39gYVnhspgxjqtIbb VKTLhRDqdi6zRpZq0pb1C1hFgrcS81vBYlb6ZUqXmcL7tmgel28enM4RzIPky6EfJ1 Yq41eYyGiz6MNGUmA3tNODDtpTImwz3j8/t7mpCr2US+VX2woRwHP9cmv7tRkla5iu FZmEJHT4uZQvw== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Date: Fri, 6 Jan 2023 17:57:08 +0100 From: Markus Wichmann To: Rich Felker Cc: musl@lists.openwall.com Message-ID: <20230106165708.GC2032@voyager> References: <20230104150719.252185-1-gabravier@gmail.com> <20230106092010.GA2032@voyager> <20230106111724.GA4163@brightrain.aerifal.cx> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20230106111724.GA4163@brightrain.aerifal.cx> User-Agent: Mutt/1.9.4 (2018-02-28) X-Provags-ID: V03:K1:zZ8ntPam+neVY78S07sGxw3sh7JzWR+Pv+qPIT2twb4PUwHrGnj 2zhPTqTNcr4DzTMSsoM9OhZzNBRgnZMth5wcauVQCMJUxMvkXIT22y6FXWnqVLyXt0RmYNw ZuZ+JHUQolqlEUeLV50U3nOT1OGG799PG4H5ctIYr+BG8qT/GYXMM1RAg+OeHROV29yyXEr oZS7a8pC8dLtoazghm8NA== UI-OutboundReport: notjunk:1;M01:P0:bhrCND0uk1w=;2bUnO0wlEdT9LsNXZ4AymBIidfQ 1D7mlk4K4Gq92oul3ocVIRFR2AxNMTPF11yvgC8SvR4R0FC4dCFy5YfAIej3XV/80RQYRgnyv aJ/SnJn21tupKcwicZKNqYDf/aVhePCPuYGhjJbZ1VI76XPq4AGkio/Sr21wNP8dQ4Qxhgx3s 42bd0LeBJ6WFihoYXOf+cwgT/6vfSlUazN36H4gWDscRT/xpcMDORUUfGP+BM4zAu2BX7l5hB uNrIYkAK6qwAjjeaK1b5k60+ow7akuAhoeSOFjH9mlRdGiqCYWHoTLj9qGU08s0bHNt4FAvRu NKUBWvlxlEHT8Io33b/mjyCUk47K/0kJ7QAj1mVoVla2Fh/0v2m8fmdIuWJg6UW/fHTju+Iar Q/wDMkqWsYJP6HwKoE7rucl99lNjPbyePz17QHbRMH9rXXebcyDzxeA3NewiFu1B0i1dXg7qK KgqVvg5enOOJCBlbwFBQ4DTrYneChxA42NSYEdBSGKcuGZTb3fonnX4gaSbF1Jwl30sJfsKLL 7BPOTi9jTwOMPeOaIX2GsPtNNUpjosGkawHSeHU0l7wzzdRoRou+5OjGpa1OCp8o3upPHSQ3S Q5hq0VaxzgMREWRDt9/Vsh5EEFL9tLnes/DrcKzkD6BkDU97XwtHd7z29JnmehKrbFcLKHotI 2h0waCTFPBW+bgrodFagAt7fz4Q7aj6od1Jq80JcgxNJu9TDwkGbarpe7R9LhiEfPS97RUwvz 4Sjhm41KuCJVs/HoAf77CIKKcmKO7+95azCfh2dMs+FzZqKt9JkGRSN8kHLo+x0RwDOQkpuxH cqpIsmrHtU6jjWLWDmRiF1Gb7XRaP/Nzyufk+KnH7vrjLf5pRlbL7OWnnalKmfllG6NT+GMK4 c/Q/mebx7zkOCk3CbJkkQsJovrG3ELfKCIk/lUcVKsw2Eb/AC6jfJcBSQetGuoux2l/ZMEIEv PduGibajvaBgT7bwWEwj54A89Vg= Subject: Re: [musl] [PATCH] fix return value of wcs{,n}cmp for near-limits signed wchar_t values Hi all, I thought a bit more about it. It would be possible to compress the information we need somewhat like this: int64_t d = (int64_t)*l - *r; return (d >> 1) | (d & INT_MAX); The idea is that I need bit 31 of the output to equal bit 32 of the difference, and bits 0-30 of the output need to be nonzero exactly if bits 0-31 of the difference were nonzero. So it's one big disjunction. So I managed to find a branchless function. Not sure if it is actually worth it to implement it. The branching version is easier to understand and apparently gives better machine code on i386 and x86_64 (from just eyeballing it). It is not even implemented with branches on those architectures. And it is a micro-optimization, anyway. Ciao, Markus