On Tue, Jun 10, 2008 at 8:11 AM, Jakub Jelinek <[EMAIL PROTECTED]> wrote:
> On Tue, Jun 10, 2008 at 04:50:14PM +0200, Jan Hubicka wrote:
>>  1) make __m256 passed on stack on variadic functions and in registers
>>  otherwse. Then we don't need to worry about varargs changes at all.
>>  This will break unprototyped calls.
>>  2) extend rax to pass info about if __m256 registers are present and
>>  upper half needs to be saved.
>>  This will break passing __m256 arguments to functions with prologues
>>  compiled with legacy compiler that will do wild jump.  All other cases
>>  should work
>>  3) Save upper halves whenever we want to save SSE registers.  This will
>>  break calling variadic functions compiled with __m256 support in.
>>
>> I guess either 1) or 2) is fine for me, as I told earlier, I am not big
>> fan of 3).  I guess 1) is easier and probably make more sense?
>
> I vote for 1), though I think it should be passed on stack only for ...
> args.  E.g. for
> void foo (__m256 x, ...);
> void bar (__m256 x, __m256 y, __m256 z)
> {
>  foo (x, y, z);
> }
> the first argument would be passed in %ymm0, while the unnamed arguments
> y and z would be pushed to stack.
>

I agree. We will add testcases for whatever psABI extension we have
chosen.

Thanks.

-- 
H.J.

Reply via email to