On Sun, Apr 14, 2024 at 08:46:39PM -0000, tip-bot2 for Uros Bizjak wrote: > The following commit has been merged into the locking/core branch of tip: > > Commit-ID: d26e46f6bf329cfcc469878709baa41d3bfc7cc3 > Gitweb: https://git.kernel.org/tip/d26e46f6bf329cfcc469878709baa41d3bfc7cc3 > Author: Uros Bizjak <ubizjak@xxxxxxxxx> > AuthorDate: Sun, 14 Apr 2024 18:12:43 +02:00 > Committer: Ingo Molnar <mingo@xxxxxxxxxx> > CommitterDate: Sun, 14 Apr 2024 22:40:54 +02:00 > > locking/atomic/x86: Introduce arch_try_cmpxchg64_local() > > Introduce arch_try_cmpxchg64_local() for 64-bit and 32-bit targets > to improve code using cmpxchg64_local(). On 64-bit targets, the > generated assembly improves from: > > 3e28: 31 c0 xor %eax,%eax > 3e2a: 4d 0f b1 7d 00 cmpxchg %r15,0x0(%r13) > 3e2f: 48 85 c0 test %rax,%rax > 3e32: 0f 85 9f 00 00 00 jne 3ed7 <...> > > to: > > 3e28: 31 c0 xor %eax,%eax > 3e2a: 4d 0f b1 7d 00 cmpxchg %r15,0x0(%r13) > 3e2f: 0f 85 9f 00 00 00 jne 3ed4 <...> > > where a TEST instruction after CMPXCHG is saved. The improvements > for 32-bit targets are even more noticeable, because double-word > compare after CMPXCHG8B gets eliminated. > > Signed-off-by: Uros Bizjak <ubizjak@xxxxxxxxx> > Signed-off-by: Ingo Molnar <mingo@xxxxxxxxxx> > Cc: Linus Torvalds <torvalds@xxxxxxxxxxxxxxxxxxxx> > Cc: Waiman Long <longman@xxxxxxxxxx> > Link: https://lore.kernel.org/r/20240414161257.49145-1-ubizjak@xxxxxxxxx > --- > arch/x86/include/asm/cmpxchg_32.h | 34 ++++++++++++++++++++++++++++++- > arch/x86/include/asm/cmpxchg_64.h | 6 +++++- > 2 files changed, 40 insertions(+) Ok, maybe I'm missing the point here or maybe the commit message doesn't explain but how does this big diffstat justify one less insn? And no, 32-bit doesn't matter. This looks like too crazy micro-optimization to me to be worth the 40 insertions. But I could be wrong and I'd gladly read explanations for why I am. Thx. -- Regards/Gruss, Boris. https://people.kernel.org/tglx/notes-about-netiquette