<div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Mar 25, 2015 at 10:28 AM, Tim Northover <span dir="ltr"><<a href="mailto:t.p.northover@gmail.com" target="_blank">t.p.northover@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">>> Why?  i16mem here stands for the pointer, not the actual memory.  A<br>
>> store doesn't define a pointer, so why would it be in "outs"?<br>
><br>
> Then why does this "i16mem:$dst" belongs to "ins"? Is that wrong, correct?<br>
<br>
</span>Think about a typical instruction:<br>
<br>
    movw %ax, 1234(%rax, 4, %rbx)<br>
<br>
The components making up the "i16mem" operand are "1234", %rax, 4 and<br>
%rbx (+ a hidden segment register). None of those are defined/written<br>
by the instruction (but they are read). So they need to be ins.<br>
<br>
What's written is some nebulous memory location specified by those<br>
operands. This isn't modelled by LLVM's basic instructions at all<br>
(except possibly via mayLoad and mayStore).<br></blockquote><div><br></div><div>Got it, thanks!<br><br></div><div>A question: I still dont really understand why & how LLVM uses these "outs" & "ins" information from each instruction.<br></div><div>Any hint, please?<br><br></div><div>Thanks,<br></div><div>Jun<br><br><br></div></div><br></div></div>