Re: Use of C99 int types

From: Kenneth Johansson
Date: Sun Apr 03 2005 - 15:27:47 EST


On Sun, 2005-04-03 at 21:23 +0200, Renate Meijer wrote:
> 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 <da@xxxxxxxx> 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

But is this not exactly what Dag Arne Osvik was trying to do ??
uint_fast32_t means that we want at least 32 bits but it's OK with more
if that happens to be faster on this particular architecture. The
problem was that the C99 standard types are not defined anywhere in the
kernel headers so they can not be used.

Perhaps they should be added to asm/types.h ?



Attachment: signature.asc
Description: This is a digitally signed message part