[linux-audio-dev] [i686] xmm regs + gcc inline assembly

Tim Goetze tim at quitte.de
Fri Feb 13 20:54:29 UTC 2004


[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



More information about the Linux-audio-dev mailing list