|
Message-ID: <20171126005916.GS1627@brightrain.aerifal.cx> Date: Sat, 25 Nov 2017 19:59:16 -0500 From: Rich Felker <dalias@...c.org> To: musl@...ts.openwall.com Subject: Re: Do not use 64 bit division if possible On Sun, Nov 26, 2017 at 01:49:09AM +0100, David Guillen Fandos wrote: > Hey, > > Wow that's an awesome optimization (the a&-a), didn't know gcc was > smart enough to figure that out by itself :D It doesn't seem to be doing any optimizing for me. What it *should* do is optimize the div to ctz+shift. BTW please don't top-reply; it makes threads hard to follow and hard to meaningfully reply to inline. Rich > I just realized that PAGE_SIZE seems indeed to be defined to a > constant for some architectures, did not notice since I was running > on MIPS which has a page size different for each uarch. > > I'd say the (a&-a) is a very simple optimization and we should use > it, since it adds almost no complexity and sames some cycles and > some .text bytes, which is sometimes a bit tight. > > Something like this? Doesn't hurt constants, improves some arches :) > > diff --git a/src/conf/sysconf.c b/src/conf/sysconf.c > index b8b761d0..aa9fc9d1 100644 > --- a/src/conf/sysconf.c > +++ b/src/conf/sysconf.c > @@ -206,7 +206,7 @@ long sysconf(int name) > if (name==_SC_PHYS_PAGES) mem = si.totalram; > else mem = si.freeram + si.bufferram; > mem *= si.mem_unit; > - mem /= PAGE_SIZE; > + mem /= (unsigned)(PAGE_SIZE & -PAGE_SIZE); > return (mem > LONG_MAX) ? LONG_MAX : mem; > case JT_ZERO & 255: > return 0;
Powered by blists - more mailing lists
Confused about mailing lists and their use? Read about mailing lists on Wikipedia and check out these guidelines on proper formatting of your messages.