[PATCH 17/18] arm64: fpsimd: Move SME save/restore inline

Mark Rutland mark.rutland at arm.com
Fri May 29 02:10:35 PDT 2026


On Tue, May 26, 2026 at 05:38:40PM +0100, Mark Rutland wrote:
> On Tue, May 26, 2026 at 04:28:17PM +0100, Mark Rutland wrote:
> > On Tue, May 26, 2026 at 03:39:56PM +0100, Vladimir Murzin wrote:
> > > Hi Mark,
> > > 
> > > On 5/26/26 15:08, Mark Rutland wrote:
> > > > On Thu, May 21, 2026 at 02:25:55PM +0100, Mark Rutland wrote:
> > > >> +static inline void __sme_save_za(struct sme_state *state, unsigned long svl)
> > > >> +{
> > > >> +	/* The <Wv> argument to STR (array vector) can only encode W12-W15 */
> > > >> +	register unsigned long v asm ("12");
> > > > Sorry, I had meant to put "x12" here, but evidently GCC and LLVM accept
> > > > "12" on its own.
> > > > 
> > > > For clarity (e.g. to match the comment) I'll change that to "w12" and
> > > > make the type unsigned int. Likewise in __sme_load_za().
> > > 
> > > I suspect you are intentionally not using "Ucj" constrain to limit register allocator,
> > > if so I'm wondering why?
> > 
> > Thanks for the suggestion; that was ignorance rather than intent.
> > 
> > I was not aware of "Ucj" as it doesn't appear on the public GCC
> > documentation:
> > 
> >   https://gcc.gnu.org/onlinedocs/gcc/Machine-Constraints.html
> > 
> > Looking at the machine description file, that's marked with '@internal',
> > so IIUC GCC folk don't seem to expect/want people to use it. That said,
> > LLVM seems to support it.
> > 
> > I'll go check that all relevant toolchains support this, and poke GCC
> > folk to see if they're happy to promote that to a public constraint.
> 
> GCC folk seem happy to make this public, which is great! I'll cross-link
> a thread here if/when patches appear.

Alex Coplan sent a patch for GCC to make this public:

  https://gcc.gnu.org/pipermail/gcc-patches/2026-May/718560.html

In v2 of the series I stuck with the register variable since the older
end of our supported compilers don't support "Ucj", but we should be
able to move to that in future as we drop support for those older
compilers.

Mark.



More information about the linux-arm-kernel mailing list