complex support on alpha
Richard Henderson
rth@cygnus.com
Wed Oct 1 22:34:00 GMT 1997
> The following patch will calculate number of registers for
> complex arguments correctly and compile complex-5.c correctly.
Well, it is enough to compile those examples properly, but it is
not completely correct. The problem is that complex numbers should
be treated as two distinct arguments on Alpha, which affects padding
of the arguments passed on the stack.
Have a look at the appended samples. Note the lossage in the
handling of C in f1. And the code generated for f2a and f2b
should be identical wrt g+h/d.
It was a this point I got stuck myself.
r~
typedef __complex__ float FC;
FC f1(int odd, FC a, FC b, FC c)
{
return a + b + c;
}
FC f2a(float a, float b, float c, float d, float e, float f, float g, float h)
{
return (a + c + e + g) + 1.0fi * (b + d + f + h);
}
FC f2b(FC a, FC b, FC c, FC d)
{
return a + b + c + d;
}
More information about the Gcc
mailing list