On Thu, Mar 24, 2011 at 12:41 PM, Simon Chopin <chopin.si...@googlemail.com> wrote: > Hi, > > I'm currently working on trying to implement a way to use the SIMD > instructions of the SSEx family when computing a vector of complex > numbers. > > I have to say that I have never worked on compilation techniques before, > and that I only have little understanding of the vectorization problems. > > I've spent a fait amount of time reading documentation and code, and I > came to the conclusion that, at least for the multiplication and > division of complex numbers, I had to implement them as functions in the > libgcc as their scalar counterpart, __mul*c3 and __div*c3. > > I face a couple of issues here : what are the C types corresponding to > the vector types, assuming they exist ?
There are no vector of complex types and GCC internally does not handle this case as well. Instead GCC lowers complex operations to piecewise scalar operations, thus vectorization would have vectors of the complex components. There are a number of bugs in bugzilla for complex vectorization, like PR37021 or PR40770. Richard.