problem in extended asm

James E Wilson wilson@specifixinc.com
Thu Aug 12 23:20:00 GMT 2004


Ankit Jain wrote:
> a simple question: why the followinf instruction
> dosent work in gcc
> asm("movq i(%1),%%mm0 \n"
>     "movq %%mm0,(%0)
>     :"=r"(x)
>     :"r"(m));           //m is an array

Always include a testcase that can be compiled.  A program fragment like 
this is a very poor bug report, as often the bug is in something you 
left out.

In this particular case, the problem is likely that you are using 
arrays, and register allocation can not assign an array to a register, 
at least not after you have referenced an element of it.  Hence, you can 
not use an 'r' constraint with an array.

Try using a vector type or a union instead of an array.
-- 
Jim Wilson, GNU Tools Support, http://www.SpecifixInc.com



More information about the Gcc mailing list