Subject: Re: problems with ahc vs. format command
To: None <bouyer@antioche.lip6.fr, tv@wasabisystems.com>
From: None <eeh@netbsd.org>
List: tech-kern
Date: 06/12/2001 17:13:15
On Tue, Jun 12, 2001 at 12:45:02PM -0400, Todd Vierling wrote:
> On Tue, 12 Jun 2001, Manuel Bouyer wrote:
>
> : > callout_reset(&scb->xs->xs_callout,
> : > (newtimeout > 3*1000*1000 ?
> : > ((newtimeout / 1000 + 1) * hz) : (newtimeout * hz) / 1000),
> : > ahc_timeout, scb);
>
> : The question is whenever the test is really less expansive than the
> : 64bit computation. I think on some platforms it may be more expensive.
>
> Only on LP64 platforms, really (sparc64, alpha) -- and those could be
> conditionally compiled to use solely 64-bit arithmetic.
>
> The flip side is that a 64-bit "/ 1000" is a *lot* slower than its 32-bit
> equivalent on ILP32 platforms, particularly those for which even integer
> divide is a library function (sparc v7).
Hum, yes I was only thinking about multiplication, no divide.
Since multiply and divide are often implemented to render 2-4 bits/cycle,
64-bit multiply/divide is often more expensive on 64-bit platforms too.
Do we have a macro that could be tested to know whenever we're on a 32 or
64bit platform ?
There has been a lot of argument aboout this but as yet no specific
macro has been decide upon.
Having said that, the comparison of an integer to a constant is fast,
predictable and can be done early. And since timeouts that overflow
32-bits are rare, it would be a good idea to have two code paths, one
that does 32-bit arithmetic and one that uses explicit 64-bit math.
Eduardo