Re: [PATCH net-next] ether_addr_equal: Optimize implementation,remove unused compare_ether_addr

From: Joe Perches
Date: Thu Dec 05 2013 - 18:37:08 EST


On Thu, 2013-12-05 at 15:32 -0800, Stephen Hemminger wrote:
> On Thu, 5 Dec 2013 14:54:38 -0800
> Joe Perches <joe@xxxxxxxxxxx> wrote:
>
> > +#ifdef CONFIG_HAVE_EFFICIENT_UNALIGNED_ACCESS
> > + u32 fold = ((*(const u32 *)addr1) ^ (*(const u32 *)addr2)) |
> > + ((*(const u16 *)(addr1 + 4)) ^ (*(const u16 *)(addr2 + 4)));
> > +
> > + return fold == 0;
>
> Why the temporary variable.

It's cost free and I think a bit more readable.

> You can just do:
> return ((*(const u32 *)addr1) ^ (*(const u32 *)addr2)) |
> ((*(const u16 *)(addr1 + 4)) ^ (*(const u16 *)(addr2 + 4))) != 0;

== 0

> Or
> return !!((*(const u32 *)addr1) ^ (*(const u32 *)addr2)) |
> ((*(const u16 *)(addr1 + 4)) ^ (*(const u16 *)(addr2 + 4))));

!!!? :)


--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/