Subject: Re: [linux-audio-dev] [i686] xmm regs + gcc inline assembly
From: Tim Goetze (tim_AT_quitte.de)
Date: Fri Feb 13 2004 - 22:54:29 EET
[Simon Jenkins]
>>so saying "=m" (d) causes xmm0 to be written to &d, not d, as
>>intended. if &d isn't 128-bit aligned, it will segfault now.
>>even if it is, that's not where we wanted the numbers from xmm0
>>to go ...
>>
>The discrepency here is because you originally said you were trying to
>get the data into a named array of floats:
>
> float t[4];
>
>but it turns out you're actually trying to get them into some memory
>to which you have a named pointer:
>
> float *d;
>
>Now, there are a great many circumstances in which you could treat
>such names interchangeably, but this isn't one of them.
indeed it isn't, you're right. in fact, if i'm not mistaken it's the
first time ever i see this distinction make a difference.
i'm not at all convinced that gcc is doing the right thing here;
acting on the difference seems nonsensical to me.
>The following code demonstrates
[...]
point taken. thanks!
when i look into the code in question the next time (it works well now
so not much incentive), i'll probably do a complete assembler rewrite.
no more messing with my pointers, mr. gcc, thanks.
tim
This archive was generated by hypermail 2b28 : Fri Feb 13 2004 - 23:00:54 EET