This is the mail archive of the cygwin-apps mailing list for the Cygwin project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: AVX on Cygwin


Hi Achim,

On Nov 26 19:17, Achim Gratz wrote:
> 
> You may have noted that the recent gmp update makes problems on some
> machines and two of the three reports come from Broadwell CPU.  There is
> one thing that did indeed change with the update and that is use of the
> AVX ADC instruction on Broadwell/Skylake.  Is it possible that somehow
> the stack model or some register save/restore is different on Cygwin
> that would produce that problem?  I can only test on SandyBridge and
> IvyBridge for Intel and these have no problem.

Prior to the invention of the AVX stuff, a thread context structure had
a fixed size.  To hold AVX registers, the context structure became a
variable sized struct which has to be initialized with the function
InitializeContext().  It also requires an additional call to
SetXStateFeaturesMask() before being able to call GetThreadContext().
None of that is implemanted in Cygwin.

The affected scenarios are:

- sigdelayed, the function handling delayed signals, does not handle
  AVX registers,  This potentially affects almost all system calls.

- setjmp/longjmp

- Saving and restoring thread contexts during signal handling or
  in the setcontext/getcontext/swapcontext/makecontext calls
  use the CONTEXT_FULL flag which omits AVX registers.

- The mcontext_t structure has no provisions to hold AVX registers
  so they are not available in SA_SIGINFO signal handlers.

The problem with all of that is that the exposed structures are fixed
sized and have no room for extension without breaking the ABI.

So adding AVX register support is quite some work, especially in the
assembler code in the gendef script.  For that, I'd need help.
Fortunately there are not so many calls exposing contexts, only the
aforemetioned ones.

I hope this affects 64 bit only?


Corinna

-- 
Corinna Vinschen                  Please, send mails regarding Cygwin to
Cygwin Maintainer                 cygwin AT cygwin DOT com
Red Hat

Attachment: pgpSEccdupPuZ.pgp
Description: PGP signature


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]