Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > linux.kernel > #1427969
| From | "H. Peter Anvin" <hpa@zytor.com> |
|---|---|
| Newsgroups | linux.kernel |
| Subject | Re: cmpxchg and x86 flags output |
| Date | 2016-06-21 19:10 +0200 |
| Message-ID | <rMxlv-eK-23@gated-at.bofh.it> (permalink) |
| References | <rKNXr-5C7-1@gated-at.bofh.it> <rK6ps-3cQ-7@gated-at.bofh.it> <rKeQ2-iF-19@gated-at.bofh.it> <rMpQZ-3Mw-13@gated-at.bofh.it> |
| Organization | linux.* mail to news gateway |
On June 21, 2016 2:06:20 AM PDT, David Howells <dhowells@redhat.com> wrote: >H. Peter Anvin <hpa@zytor.com> wrote: > >> Well, that sounds promising. I wonder how David's model, using >> intrinsics (do we have enough intrinsics to actually be able to do >this >> "correctly"?), compare to using the flags output from assembly. > >There is an advantage to using the intriniscs on arches with explicit >barriers. On powerpc64, for example, the compiler can move the release >memory >barrier earlier to push register-only instructions between the barrier >and the >lwarx. This would allow the memory barrier to be executed concurrently >with >those instructions. > >The compiler could also move the acquire memory barrier later, pulling >register-only instructions between the stwcx and that barrier, though I >don't >see any advantage to doing so. > >Whereas if the release barrier is in the same asm block as the lwarx, >the >compiler cannot do anything with it. > > >Another advantage is that the compiler can switch between instruction >variants >automatically, allowing us to get rid of the size-based switch >statements for >things like cmpxchg(). > > >However, there's probably not a great deal of difference to be had if >the >inline asm codes the appropriate instruction in each case for something >like >x86*. The emitted code ought to look the same. The second biggest win >for >the intriniscs, I think, is the ability to ask the CMPXCHG instruction >whether >it actually did anything rather than comparing the result. I added two >variants, one that only returned the yes/no and one that passed back >the value >as well as the yes/no. > >David The question for me is for things like lock patching that we do on x86... -- Sent from my Android device with K-9 Mail. Please excuse brevity and formatting.
Back to linux.kernel | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
cmpxchg and x86 flags output "H. Peter Anvin" <hpa@zytor.com> - 2016-06-15 02:00 +0200
Re: cmpxchg and x86 flags output Peter Zijlstra <peterz@infradead.org> - 2016-06-15 11:00 +0200
Re: cmpxchg and x86 flags output "H. Peter Anvin" <hpa@zytor.com> - 2016-06-17 00:30 +0200
Re: cmpxchg and x86 flags output David Howells <dhowells@redhat.com> - 2016-06-21 11:10 +0200
Re: cmpxchg and x86 flags output "H. Peter Anvin" <hpa@zytor.com> - 2016-06-21 19:10 +0200
Re: cmpxchg and x86 flags output David Howells <dhowells@redhat.com> - 2016-06-22 18:20 +0200
Re: cmpxchg and x86 flags output "H. Peter Anvin" <hpa@zytor.com> - 2016-06-22 18:40 +0200
Re: cmpxchg and x86 flags output Linus Torvalds <torvalds@linux-foundation.org> - 2016-06-22 19:20 +0200
Re: cmpxchg and x86 flags output "H. Peter Anvin" <hpa@zytor.com> - 2016-06-22 20:00 +0200
Re: cmpxchg and x86 flags output "H. Peter Anvin" <hpa@zytor.com> - 2016-06-21 19:40 +0200
Re: cmpxchg and x86 flags output "H. Peter Anvin" <hpa@zytor.com> - 2016-06-22 02:40 +0200
Re: cmpxchg and x86 flags output David Howells <dhowells@redhat.com> - 2016-06-22 18:20 +0200
csiph-web