From: Thomas Gleixner > Sent: 19 March 2018 15:05 > > On Mon, 19 Mar 2018, David Laight wrote: > > From: Rahul Lakkireddy > > In principle it ought to be possible to get access to one or two > > (eg) AVX registers by saving them to stack and telling the fpu > > save code where you've put them. > > No. We have functions for this and we are not adding new ad hoc magic.
I was thinking that a real API might do this... Useful also for code that needs AVX-like registers to do things like CRCs. > > OTOH, for x86, if the code always runs in process context (eg from a > > system call) then, since the ABI defines them all as caller-saved > > the AVX(2) registers, it is only necessary to ensure that the current > > FPU registers belong to the current process once. > > The registers can be set to zero by an 'invalidate' instruction on > > system call entry (hope this is done) and after use. > > Why would a system call touch the FPU registers? The kernel normally does > not use FPU instructions and the code which explicitely does has to take > care of save/restore. It would be performance madness to fiddle with the > FPU stuff unconditionally if nothing uses it. If system call entry reset the AVX registers then any FP save/restore would be faster because the AVX registers wouldn't need to be saved (and the cpu won't save them). I believe the instruction to reset the AVX registers is fast. The AVX registers only ever need saving if the process enters the kernel through an interrupt. David