Re: VolanoMark regression with 2.6.27-rc1

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
From: Peter Zijlstra
Date: Wednesday, August 20, 2008 - 1:30 pm

On Wed, 2008-08-20 at 11:15 -0700, Ray Lee wrote:

Nick is right, try:

int main(int argc, char **argv)
{
        unsigned int x = 7, y = 5;
        printf("%d\n", avg(x,y));
        return 0;
}

It fails because 5-7 = -2, which needs a signed division or sign
extending right shift.

we'd need something like:

#define avg(x, y) ({                            \
        typeof(x) _avg1 = (x);                  \          
        typeof(y) _avg2 = (y);                  \
        (void) (&_avg1 == &_avg2);              \
        _avg1 + (signed typeof(x))(_avg2 - _avg1)/2; })

except that typeof() doesn't work that way.

#define avg(x, y) ({                            \
        typeof(x) _avg1 = (x);                  \          
        typeof(y) _avg2 = (y);                  \
        (void) (&_avg1 == &_avg2);              \
        _avg1 + (long)(_avg2 - _avg1)/2; })

works for the above example, but when I make it long long, so as to
match the longest supported type, it goes boom again - for as of yet
unknown reasons.

--
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
Re: VolanoMark regression with 2.6.27-rc1, Zhang, Yanmin, (Wed Aug 20, 12:24 am)
Re: VolanoMark regression with 2.6.27-rc1, Peter Zijlstra, (Wed Aug 20, 12:41 am)
Re: VolanoMark regression with 2.6.27-rc1, Ingo Molnar, (Wed Aug 20, 3:51 am)
Re: VolanoMark regression with 2.6.27-rc1, Peter Zijlstra, (Wed Aug 20, 6:32 am)
Re: VolanoMark regression with 2.6.27-rc1, Ingo Molnar, (Wed Aug 20, 6:47 am)
Re: VolanoMark regression with 2.6.27-rc1, adobriyan, (Wed Aug 20, 7:32 am)
Re: VolanoMark regression with 2.6.27-rc1, Peter Zijlstra, (Wed Aug 20, 7:33 am)
Re: VolanoMark regression with 2.6.27-rc1, Nick Piggin, (Wed Aug 20, 8:10 am)
Re: VolanoMark regression with 2.6.27-rc1, Peter Zijlstra, (Wed Aug 20, 8:15 am)
Re: VolanoMark regression with 2.6.27-rc1, Ray Lee, (Wed Aug 20, 9:29 am)
Re: VolanoMark regression with 2.6.27-rc1, Peter Zijlstra, (Wed Aug 20, 9:51 am)
Re: VolanoMark regression with 2.6.27-rc1, Peter Zijlstra, (Wed Aug 20, 10:21 am)
Re: VolanoMark regression with 2.6.27-rc1, Nick Piggin, (Wed Aug 20, 10:55 am)
Re: VolanoMark regression with 2.6.27-rc1, Ray Lee, (Wed Aug 20, 11:15 am)
Re: VolanoMark regression with 2.6.27-rc1, Peter Zijlstra, (Wed Aug 20, 1:30 pm)
Re: VolanoMark regression with 2.6.27-rc1, Peter Zijlstra, (Wed Aug 20, 1:56 pm)
Re: VolanoMark regression with 2.6.27-rc1, Ray Lee, (Wed Aug 20, 1:58 pm)
Re: VolanoMark regression with 2.6.27-rc1, Peter Zijlstra, (Wed Aug 20, 2:04 pm)
Re: VolanoMark regression with 2.6.27-rc1, Zhang, Yanmin, (Wed Aug 20, 7:25 pm)
Re: VolanoMark regression with 2.6.27-rc1, Nick Piggin, (Wed Aug 20, 11:11 pm)
Re: VolanoMark regression with 2.6.27-rc1, Ingo Molnar, (Wed Aug 20, 11:12 pm)
Re: VolanoMark regression with 2.6.27-rc1, Ingo Molnar, (Wed Aug 20, 11:15 pm)
Re: VolanoMark regression with 2.6.27-rc1, Ingo Molnar, (Wed Aug 20, 11:16 pm)
Re: VolanoMark regression with 2.6.27-rc1, Zhang, Yanmin, (Wed Aug 20, 11:48 pm)
Re: VolanoMark regression with 2.6.27-rc1, Peter Zijlstra, (Thu Aug 21, 1:17 am)
Re: VolanoMark regression with 2.6.27-rc1, Zhang, Yanmin, (Thu Aug 28, 8:35 pm)
Re: VolanoMark regression with 2.6.27-rc1, Zhang, Yanmin, (Thu Aug 28, 8:38 pm)