On Apr 3, 2005, at 2:30 PM, Dag Arne Osvik wrote:
Stephen Rothwell wrote:
On Sun, 03 Apr 2005 13:55:39 +0200 Dag Arne Osvik <[email protected]> wrote:
I've been working on a new DES implementation for Linux, and ran into
the problem of how to get access to C99 types like uint_fast32_t for
internal (not interface) use. In my tests, key setup on Athlon 64
slows
down by 40% when using u32 instead of uint_fast32_t.
If you look in stdint.h you may find that uint_fast32_t is actually
64 bits on Athlon 64 ... so does it help if you use u64?
Yes, but wouldn't it be much better to avoid code like the following,
which may also be wrong (in terms of speed)?
#ifdef CONFIG_64BIT // or maybe CONFIG_X86_64?
#define fast_u32 u64
#else
#define fast_u32 u32
#endif
Isn't it better to use a general integer type, reflecting the cpu's
native register-size and let the compiler sort it out? Restrict all
uses of explicit width types to where it's *really* needed, that is, in
drivers, network-code, etc. I firmly oppose any definition of "#define
fast_u32 u64". This kind of definitions will only create needless
confusion.
I wonder how much other code is suffering from this kind of overly
explicit typing. It's much easier to make assumptions about integer
size unwittingly than it is to avoid them. I used to assume (for
instance) that sizeof(int) == sizeof(long) == sizeof(void *) at one
point in my career. Fortunately, reality soon asserted itself again.
Regards,
Renate Meijer.
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[Index of Archives]
[Kernel Newbies]
[Netfilter]
[Bugtraq]
[Photo]
[Stuff]
[Gimp]
[Yosemite News]
[MIPS Linux]
[ARM Linux]
[Linux Security]
[Linux RAID]
[Video 4 Linux]
[Linux for the blind]
[Linux Resources]