> +static inline u32 from64to32(u64 x) > +{ > + /* add up 32-bit and 32-bit for 32+c bit */ > + x = (x & 0xffffffff) + (x >> 32); > + /* add up carry.. */ > + x = (x & 0xffffffff) + (x >> 32); > + return (u32)x; > +}
As a matter of interest, does the compiler optimise away the second (x & 0xffffffff) ? The code could just be: x = (x & 0xffffffff) + (x >> 32); return x + (x >> 32); David -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/