<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Thu, Nov 30, 2017 at 10:21 AM, Dan Olson via Phabricator <span dir="ltr"><<a href="mailto:reviews@reviews.llvm.org" target="_blank">reviews@reviews.llvm.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">dolson added a comment.<br>
<br>
Hello,<br>
<br>
In the process of upgrading from clang 3.6.1 to a newer version, I ran into this new error and thus imported the new intrinsics from intrin.h for rep movsb and friends. I see several discussions in this thread about how having the registers solely in the inputs list is not sufficient for something like "rep movsb" because the modified registers will not be clobbered, however none of these suggested changes made it into the eventual intrin.h.<br>
<br>
I found that using the versions of `__movsb` and `__stosb` that are at the head revision intrin.h produced bad code generation vs the versions with the clobbers. Note this is on PS4 under the older clang 3.6.1, but I don't see anything in this CL that would update the clobber behavior for newer versions of clang.<br>
<br>
Shouldn't the intrinsics be updated to use input/output registers or some other method of clobbering?</blockquote><div><br></div><div>Yes, they should be. I misread this thread and thought somebody had gone and fixed these, but I guess not. I sent out <a href="https://reviews.llvm.org/D40686">https://reviews.llvm.org/D40686</a>.<br></div></div></div></div>