On Fri, 15 Feb 2019, Konstantin Belousov wrote:

On Sat, Feb 16, 2019 at 12:27:16AM +1100, Bruce Evans wrote:
On Fri, 15 Feb 2019, Konstantin Belousov wrote:

On Fri, Feb 15, 2019 at 07:16:04AM +0000, Alexey Dokuchaev wrote:
Is there a reason to prefer pushl+movl+popl instead of movl+xchgl?
...
xchgl seems to be slower even in registers format (where no implicit
lock is used).  If you can demonstrate that your fragment is better in
some microbenchmark, I can change it.  But also note that its use is not
on the critical path.

The should have the same speed on modern x86.  xchgl %reg1,%reg2 is
not slow, but it changes 2 visible registers and a needs somwhere to
hold one of the registers while changing it, so on 14 year old AthlonXP
...
I think on modern Intels xchgl is implemented by renaming.  Still it is slower
than typically highly optimized push/pops.

That said, what is your preference ? My version or xchgl ?
My own preference is to leave it as is, since it is slightly slower,
and I do not want to spend several hours again, re-testing libc changes.

I like the push/pop instructions, so like it like it is.

Bruce
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to