Complex vectorization

2011-03-24 Thread Simon Chopin
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 ?

And, also important : I understand that the processor has to be in a
certain state to use the SIMD instructions. Will it stay that way when
calling a function, thus changing partially the environment ?

Have a nice day,

Simon Chopin



signature.asc
Description: Digital signature


Re: Complex vectorization

2011-03-24 Thread Simon Chopin
On Thu, Mar 24, 2011 at 12:55:44PM +0100, Richard Guenther wrote:
> There are no vector of complex types and GCC internally does not handle
> this case as well.  Instead GCC lowers complex operations to
Yep, sorry, my mistake. I meant array of complex.
> 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.

And yet, when trying to multiply numbers, gcc says that complex isn't a
supported type. From the links you provided, part of the solution would
be to associate the complex type and the vector type of its scalar type.
While it should work for most operations, providing support for the
IMAGPART_EXPR and REALPART_EXPR, the multiplication and division
operations are implemented as separated functions of libgcc. Because of
that, they wouldn't gain from the vectorization, or I am mistaken
(again) ?

Cheers,

Simon

P.S. I am not aware of the list policy regarding the CCs, but I assumed
you were already subscribed.