On 22 Jan 2005, at 22:00, vlobanov wrote:

Hi,

I was just reading over the patch, and had a quick question/comment upon
the SWAP macro defined below. I think it's possible to do a tiny bit
better (better, of course, being subjective), as follows:


#define SWAP(a, b, size)                        \
    do {                                        \
        register size_t __size = (size);        \
        register char * __a = (a), * __b = (b); \
        do {                                    \
            *__a ^= *__b;                       \
            *__b ^= *__a;                       \
            *__a ^= *__b;                       \
            __a++;                              \
            __b++;                              \
        } while ((--__size) > 0);            \
    } while (0)

What do you think? :)

AFAIK, XOR is quite expensive on IA32 when compared to simple MOV operatings. Also, since the original patch uses 3 MOVs to perform the swapping, and your version uses 3 XOR operations, I don't see any gains.


Am I missing something?

-
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/

Reply via email to