Messages in this thread | | | Date | Sat, 16 Sep 2023 01:38:22 +0100 | From | Matthew Wilcox <> | Subject | Re: [PATCH 08/17] alpha: Implement xor_unlock_is_negative_byte |
| |
On Fri, Sep 15, 2023 at 05:27:17PM -0700, Linus Torvalds wrote: > On Fri, 15 Sept 2023 at 11:37, Matthew Wilcox (Oracle) > <willy@infradead.org> wrote: > > > > + "1: ldl_l %0,%4\n" > > + " xor %0,%3,%0\n" > > + " xor %0,%3,%2\n" > > + " stl_c %0,%1\n" > > What an odd thing to do. > > Why don't you just save the old value? That double xor looks all kinds > of strange, and is a data dependency for no good reason that I can > see. > > Why isn't this "ldl_l + mov %0,%2 + xor + stl_c" instead? > > Not that I think alpha matters, but since I was looking through the > series, this just made me go "Whaa?"
Well, this is my first time writing Alpha assembler ;-) I stole this from ATOMIC_OP_RETURN:
"1: ldl_l %0,%1\n" \ " " #asm_op " %0,%3,%2\n" \ " " #asm_op " %0,%3,%0\n" \ " stl_c %0,%1\n" \ " beq %0,2f\n" \ ".subsection 2\n" \ "2: br 1b\n" \ ".previous" \
but yes, mov would do the trick here. Is it really faster than xor?
| |