From mboxrd@z Thu Jan 1 00:00:00 1970 From: Haozhong Zhang Subject: Re: [PATCH v4 05/10] x86: Add functions for 64-bit integer arithmetic Date: Tue, 16 Feb 2016 17:57:07 +0800 Message-ID: <20160216095707.GC5459@hz-desktop.sh.intel.com> References: <1453067939-9121-1-git-send-email-haozhong.zhang@intel.com> <1453067939-9121-6-git-send-email-haozhong.zhang@intel.com> <56B4B38702000078000CF09F@prv-mh.provo.novell.com> <20160216090220.GB5459@hz-desktop.sh.intel.com> <56C2FC7002000078000D280C@prv-mh.provo.novell.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: Content-Disposition: inline In-Reply-To: <56C2FC7002000078000D280C@prv-mh.provo.novell.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xen.org Errors-To: xen-devel-bounces@lists.xen.org To: Jan Beulich Cc: Kevin Tian , Keir Fraser , Suravee Suthikulpanit , Andrew Cooper , "xen-devel@lists.xen.org" , Aravind Gopalakrishnan , Jun Nakajima , Boris Ostrovsky List-Id: xen-devel@lists.xenproject.org On 02/16/16 02:39, Jan Beulich wrote: > >>> On 16.02.16 at 10:02, wrote: > > On 02/05/16 21:36, Jan Beulich wrote: > >> >>> On 17.01.16 at 22:58, wrote: > >> > This patch adds several functions to take multiplication, division and > >> > shifting involving 64-bit integers. > >> > > >> > Signed-off-by: Haozhong Zhang > >> > Reviewed-by: Boris Ostrovsky > >> > --- > >> > Changes in v4: > >> > (addressing Jan Beulich's comments) > >> > * Rewrite mul_u64_u64_shr() in assembly. > >> > >> Thanks, but it puzzles me that the other one didn't get converted > >> as well. Anyway, I'm not going to make this a requirement, since > >> at least it appears to match Linux'es variant. > >> > > > > I can't remember why I didn't rewrite mul_u64_u32_div(), especially when > > it can be easily implemented as > > > > static inline u64 mul_u64_u32_div(u64 a, u32 mul, u32 divisor) > > { > > u64 quotient, remainder; > > > > asm volatile ( "mulq %3; divq %4" > > : "=a" (quotient), "=d" (remainder) > > : "0" (a), "rm" ((u64) mul), "c" ((u64) divisor) ); > > > > return quotient; > > } > > > > I'll modify it in the next version. > > Looks better, but the constraints aren't right (needing =& for > both outputs, and "c" being too narrow). But iirc the question > was anyway whether to better have even lower overhead inline > assembly and single point of use. > Thank you for pointing out the constraint error! And indeed every function in this patch is used at single point. In my reply to your comments for patch 6, I'll modify and inline them at their use points. Haozhong