lkml.org 
[lkml]   [2010]   [Aug]   [6]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    SubjectRe: [PATCH 2/3] lib: vsprintf: optimised put_dec() for 32-bit machines
    Date
    On Friday 06 August 2010 00:38, Michal Nazarewicz wrote:
    > The disadvantage is that the proposed function is 2.5-3.5 bigger.
    > Those are not big functions though -- we are talking here about
    > proposed function being below 512.

    It's a slippery slope. Here's where it ends: glibc
    has memcpy() function which is "only" 8k of code or so.
    I'm not joking.



    > +#if BITS_PER_LONG == 64
    > +
    ...
    > +#else
    ...
    > +/*
    > + * Based on code by Douglas W. Jones found at
    > + * <http://www.cs.uiowa.edu/~jones/bcd/decimal.html#sixtyfour>. This
    > + * performs no 64-bit division and hence should be faster on 32-bit
    > + * machines then the version of the function above.
    > + */
    > +static noinline_for_stack
    > +char *put_dec(char *buf, unsigned long long n)
    > +{
    > + uint32_t d3, d2, d1, q;
    > +
    > + if (!n) {
    > + *buf++ = '0';
    > + return buf;
    > + }
    > +
    > + d1 = (n >> 16) & 0xFFFF;
    > + d2 = (n >> 32) & 0xFFFF;
    > + d3 = (n >> 48) & 0xFFFF;

    Are you assuming that sizeof(long long) == 8, always?

    --
    vda


    \
     
     \ /
      Last update: 2010-08-06 07:21    [W:0.046 / U:179.948 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site