On Mon, Mar 25, 2013 at 2:51 PM, dw <limegreensocks@xxxxxxxxx> 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