This is the mail archive of the gcc-help@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Another question re asm constraints


On Mon, Mar 25, 2013 at 2:51 PM, dw <limegreensocks@yahoo.com> wrote:
> Does specifying the + operator on outputs remove the need for listing the
> variable as an input?  For example:
>
>     __CRT_INLINE SHORT AddTest(SHORT *Addend)
>     {
>       SHORT ret = 1;
>       __asm__ __volatile__("lock\n\txaddw %0,%1 "
>     : "+r" (ret), "+m" (*Addend)
>     : "0" (ret)
>     : "cc");
>       return ret + 1;
>     }
>
> Is the "0" constraint accomplishing anything useful here

No.

> And more importantly, is the "+m" enough to ensure that any existing values
> for Addend have been written to memory?

Yes, at least from the compiler's perspective (there may be pending
writes from another processor that the compiler knows nothing about).

Ian


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]