Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 21 Aug 2012 13:26:55 +0200
From:      Marius Strobl <marius@alchemy.franken.de>
To:        Warner Losh <imp@bsdimp.com>
Cc:        Wojciech Puchar <wojtek@wojtek.tensor.gdynia.pl>, freebsd-net@freebsd.org, Mitya <mitya@cabletv.dp.ua>, freebsd-hackers@freebsd.org
Subject:   Re: Replace bcopy() to update ether_addr
Message-ID:  <20120821112655.GA90066@alchemy.franken.de>
In-Reply-To: <5452BF37-3658-4C1F-B965-CE3EA28B6EA5@bsdimp.com>
References:  <50324DB4.6080905@cabletv.dp.ua> <alpine.BSF.2.00.1208201844220.35173@wojtek.tensor.gdynia.pl> <B2BB7724-57A9-40C9-AE9F-FFEC83D9DE9A@bsdimp.com> <alpine.BSF.2.00.1208202117230.19372@wojtek.tensor.gdynia.pl> <5452BF37-3658-4C1F-B965-CE3EA28B6EA5@bsdimp.com>

next in thread | previous in thread | raw e-mail | index | archive | help
On Mon, Aug 20, 2012 at 01:20:29PM -0600, Warner Losh wrote:
> 
> On Aug 20, 2012, at 1:17 PM, Wojciech Puchar wrote:
> 
> >>> or use ++.
> >>> 
> >>> i think it is always aligned to 2 bytes and this should produce usable code on any CPU? should be 6 instructions on MIPS and PPC IMHO.
> >> 
> >> We should tag it as __aligned(2) then, no?  If so, then the compiler should generate the code you posted.
> > should is the most important word in Your post. what it actually do - i don't know.
> 
> If we are requiring this to be __aligned(2), we should tag it as such to enforce this.
> 
> Even without this tagging, the code to do a structure level copy of 6 bytes is going to be tiny...
> 

While the __aligned(2) approach certainly works, I've actually rather
mixed experiences on x86 with it as the compiler doesn't necessarily
produce the small and efficient one would expect from code it. Such
a change certainly shouldn't be done just on the assumption that the
compiler has all hints required to produce good code from it but the
resulting asm should be verified across all affected architectures.

Marius




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20120821112655.GA90066>