On Fri, Dec 01, 2023 at 10:40:37AM +0100, Peter Zijlstra wrote: > On Fri, Dec 01, 2023 at 01:19:14AM -0800, Boqun Feng wrote: > > > > > https://github.com/Amanieu/rfcs/blob/inline-asm/text/0000-inline-asm.md#asm-goto > > > > > > Reading that makes all this even worse, apparently rust can't even use > > > memops. > > > > What do you mean by "memops"? > > Above link has the below in "future possibilities": > > "Memory operands > > We could support mem as an alternative to specifying a register class > which would leave the operand in memory and instead produce a memory > address when inserted into the asm string. This would allow generating > more efficient code by taking advantage of addressing modes instead of > using an intermediate register to hold the computed address." > > Just so happens that every x86 atomic block uses memops.. and per-cpu > and ... > Oh yes, I found out Rust's asm! doesn't support specifying a memory location as input or output recently as well. I don't speak for the Rust langauge community, but I think this is something that they should improve. I understand it could be frustrating that we find out the new stuff doesn't support good old tools we use (trust me, I do!), but I believe you also understand that a higher level language can help in some places, for example, SBRM is naturally supported ;-) This answers half of the question: "Why are we even trying to use it again?". The other half is how languages are designed is different in these days: a language community may do a better job on listening to the users and the real use cases can affect the language design in return. While we are doing our own experiment, we might well give that a shot too. And at least the document admits these are "future possibilities", so they should be more motivated to implement these. It's never perfect, but we gotta start somewhere. Regards, Boqun >