<div dir="ltr"><div>Both work:<br></div><div><br></div><div>#define DECLARE_ASM_REP_MOVS(Type, Movs)                                       \</div><div>  template <> void asm_rep_movs<Type>(Type * dst, Type * src, size_t size) {   \</div><div>    __asm__("rep " Movs " \n\t"                                                \</div><div>            : "+D"(dst), "+S"(src), "+c"(size) \</div><div>            : \</div><div>            : "memory");                                  \</div><div>  }</div><div><br></div><div><div>#define DECLARE_ASM_REP_MOVS(Type, Movs)                                       \</div><div>  template <> void asm_rep_movs<Type>(Type * dst, Type * src, size_t size) {   \</div><div>    __asm__("rep " Movs " \n\t"                                                \</div><div>            : "=D"(dst), "=S"(src), "=c"(size) \</div><div>            : "D"(dst), "S"(src), "c"(size) \</div><div>            : "memory");                                  \</div><div>  }</div></div></div><br><div class="gmail_quote"><div dir="ltr">On Tue, Dec 27, 2016 at 10:55 AM Akira Hatanaka via Phabricator <<a href="mailto:reviews@reviews.llvm.org">reviews@reviews.llvm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">ahatanak added a comment.<br class="gmail_msg">
<br class="gmail_msg">
I guess it doesn't build because output constraints need "=" (e.g., "=D")?<br class="gmail_msg">
<br class="gmail_msg">
Also, I think all registers ("D", "S", and "c") should be in both the output and input operands list. You can probably declare new variables and use them in the output operands  (e.g., "=D"(newDst)) or use input/output operands "+" (the former is simpler in this case, since you want to use the original values of dst and src).<br class="gmail_msg">
<br class="gmail_msg">
<br class="gmail_msg">
Repository:<br class="gmail_msg">
  rL LLVM<br class="gmail_msg">
<br class="gmail_msg">
<a href="https://reviews.llvm.org/D15075" rel="noreferrer" class="gmail_msg" target="_blank">https://reviews.llvm.org/D15075</a><br class="gmail_msg">
<br class="gmail_msg">
<br class="gmail_msg">
<br class="gmail_msg">
</blockquote></div>