lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Message-ID: <20150217195717.GA6779@magnum.frso.rivierawaves.com> Date: Tue, 17 Feb 2015 20:57:17 +0100 From: Karl Beldan <karl.beldan@...il.com> To: David Laight <David.Laight@...LAB.COM> Cc: 'Jiri Slaby' <jslaby@...e.cz>, "stable@...r.kernel.org" <stable@...r.kernel.org>, "linux-kernel@...r.kernel.org" <linux-kernel@...r.kernel.org>, Karl Beldan <karl.beldan@...ierawaves.com>, Al Viro <viro@...IV.linux.org.uk>, Eric Dumazet <eric.dumazet@...il.com>, Arnd Bergmann <arnd@...db.de>, Mike Frysinger <vapier@...too.org>, "netdev@...r.kernel.org" <netdev@...r.kernel.org>, Eric Dumazet <edumazet@...gle.com>, "David S. Miller" <davem@...emloft.net> Subject: Re: [PATCH 3.12 065/122] lib/checksum.c: fix carry in csum_tcpudp_nofold On Tue, Feb 17, 2015 at 12:04:22PM +0000, David Laight wrote: > > +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); > On my side, from what I've seen so far, your version results in better assembly, esp. with clang, but my first version http://article.gmane.org/gmane.linux.kernel/1875407: x += (x << 32) + (x >> 32); return (__force __wsum)(x >> 32); resulted in even better assembly, I just verified with gcc/clang, x86_64/ARM and -O1,2,3. Karl -- To unsubscribe from this list: send the line "unsubscribe netdev" in the body of a message to majordomo@...r.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html
Powered by blists - more mailing lists