On Sun, Jan 23, 2005 at 04:19:21AM +0100, Andi Kleen wrote: > On Sat, Jan 22, 2005 at 09:10:40PM -0500, Chuck Ebbert wrote: > > On Fri, 21 Jan 2005 at 15:41:06 -0600 Matt Mackall wrote: > > > > > Add rol32 and ror32 bitops to bitops.h > > > > Can you test this patch on top of yours? I did it on 2.6.10-ac10 but it > > should apply OK. Compile tested and booted, but only random.c is using it > > in my kernel. > > Does random really use variable rotates? For constant rotates > gcc detects the usual C idiom and turns it transparently into > the right machine instruction.
Nope, random doesn't. The only thing I converted in my sweep that did were CAST5 and CAST6, which are fairly unique in doing key-based rotations. On the other hand: typedef unsigned int __u32; static inline __u32 rol32(__u32 word, int shift) { return (word << shift) | (word >> (32 - shift)); } int foo(int val, int rot) { return rol32(val, rot); } With 2.95: 0: 55 push %ebp 1: 89 e5 mov %esp,%ebp 3: 8b 4d 0c mov 0xc(%ebp),%ecx 6: 8b 45 08 mov 0x8(%ebp),%eax 9: d3 c0 rol %cl,%eax b: c9 leave c: c3 ret With 3.3.5: 0: 55 push %ebp 1: 89 e5 mov %esp,%ebp 3: 8b 45 08 mov 0x8(%ebp),%eax 6: 8b 4d 0c mov 0xc(%ebp),%ecx 9: 5d pop %ebp a: d3 c0 rol %cl,%eax c: c3 ret With gcc-snapshot: 0: 55 push %ebp 1: 89 e5 mov %esp,%ebp 3: 8b 45 08 mov 0x8(%ebp),%eax 6: 8b 4d 0c mov 0xc(%ebp),%ecx 9: d3 c0 rol %cl,%eax b: 5d pop %ebp c: c3 ret So I think tweaks for x86 at least are unnecessary. -- Mathematics is the supreme nostalgia of our time. - 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/