<div dir="ltr"><div><div>It is not a keyword. It is a node defined in include/llvm/Target/TargetSelectionDAG.td. You can likely find most of the definitions you're wondering about there.<br></div>In terms of its purpose, perhaps someone can elaborate on that a bit more, but there is no corresponding ISD node for this and the way I look at it is that its purpose is to help Tbl-gen infer the result type of the node (in this case the "add" node). For example, you may have an instruction that adds two i32's and produces an i64 and then another one that produces an i32 (I know this is kind of contrived in the case of addition, but you get the point). The DAGs would look identical except that the set node would have a different type.<br>However, I may be wrong about this.<br><br></div><div>Of course, "store" is quite different. That is a full fledged node and has fairly straightforward semantics - it's a store node. So for example a DAG that looks like:<br>(store i64:$src, addr:$dst)<br></div><div>actually says store the 64-bit integer $src at address $dst.<br></div><div><br></div>Nemanja<br></div><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Jun 6, 2016 at 5:16 PM, Pedro Lopes <span dir="ltr"><<a href="mailto:pedro.fraiao@gmail.com" target="_blank">pedro.fraiao@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><div><div><div><span class=""><div><div><div>Thanks, indeed it was on the LegalizeDAG.cpp and the information proved very useful.<br><br></div>I
 also realized that the customization, promotion or expansion will occur
 whenever any operand, with the same type as the type specified on the 
second argument (MVT) of setOperationAction function, appears. (Correct 
me if I'm wrong).<br><br></div>The second doubt I have regards instruction matching.<br><br></div>When I define a pattern such as:<br>[(set i32:$dst, (add (mul i32:$src1, i32:$src2), i32:$src3))]> <div><br></div></span>What is the meaning of the word "set" or "store" which appear quite often?<br></div>From what I can understand this pattern is only interest in an add node with a mul node as one operator and an immediate as the other.<br></div>Does the "set" (keyword?) translates to an output of the add node, or just another node?<br><br></div>Thanks,<br></div>Patosga</div><div class="gmail_extra"><div><div class="h5"><br><div class="gmail_quote">2016-06-06 6:22 GMT+01:00 Nemanja Ivanovic <span dir="ltr"><<a href="mailto:nemanja.i.ibm@gmail.com" target="_blank">nemanja.i.ibm@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><br>Hi Patosga,<br></div>you can control what type the operands are promoted to as follows:<br>AddPromotedToType (ISD::ADD, MVT::i1, MVT::i64);<br><div class="gmail_extra"><br></div><div class="gmail_extra">For the "Expand" case, I believe you'll find what you're looking for in the file:<br>lib/CodeGen/SelectionDAG/LegalizeDAG.cpp<br></div><div class="gmail_extra">and function SelectionDAGLegalize::ExpandNode(), but if I'm wrong here perhaps others can correct me.<br><br></div><div class="gmail_extra">Finally, MVT::f32 just states that the operand is a 32-bit single precision floating point type.<span><font color="#888888"><br></font></span></div><span><font color="#888888"><div class="gmail_extra"><br></div><div class="gmail_extra">Nemanja<br></div></font></span><div><div><div class="gmail_extra"><br></div><div class="gmail_extra"><div class="gmail_quote">On Sun, Jun 5, 2016 at 11:05 PM, Pedro Lopes via llvm-dev <span dir="ltr"><<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.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"><div dir="ltr"><div>Sorry, glad I'm in the right place.<br></div><div>Before I start, I want to state that I'm a beginer and I'm trying to develop a backend by adapting an existent target to my platform. <br></div><div><br>My first doubt is about the SelectionDAG and the TargetLowering class.  When I use, for example:<br></div><div><tt><span>setOperationAction</span></tt><span>(</span><span>ISD</span><span>::</span><span>ADD</span><span>,</span> <span>MVT</span><span>::i1</span><span>,</span><span> Promote</span><span>);<br><br></span></div><div><span>Is it correct to say that I'm promoting any operand used by the ISD::ADD node to a larger type? If so, what would that value type be?<br><br></span></div><div><span>If I use the same function with the expand as the third argument like below:<br></span><tt><span>setOperationAction</span></tt><span>(</span><span>ISD</span><span>::</span><span>FSIN</span><span>,</span> <span>MVT</span><span>::</span><span>f32</span><span>,</span> <span>Expand</span><span>);</span><span><br>What will the 
expansion look like, since I don´t provide any custom implementation of 
the n</span><span>ode? Also, what is the meaning of the MVT::f32 in this case?<br><br></span></div><div><span>Thanks,<br></span></div><div><span>Patosga</span><tt><span></span></tt><span></span></div><div><div><div class="gmail_extra"><br><div class="gmail_quote">2016-06-05 19:16 GMT+01:00 Pierre Gagelin <span dir="ltr"><<a href="mailto:Pierre.Gagelin@myport.ac.uk" target="_blank">Pierre.Gagelin@myport.ac.uk</a>></span>:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div><div>Hi Patosga,<br><br></div>You are on the right place to ask your questions and get help!<br><br>Try to be more specific with your problem. We need some details to help you =)<span><font color="#888888"><br><br></font></span></div><span><font color="#888888">Pierre<br></font></span></div><div><div><div class="gmail_extra"><br><div class="gmail_quote">On 5 June 2016 at 18:12, via llvm-dev <span dir="ltr"><<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.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">Hello sir,<br>
<br>
I'm having some problems understading how llvm works. I'm following a concrete example and visualizing the DAG and the .s output and some stuff doesn´t seem to match.<br>
<br>
I sorry to bother you but I don´t know where I can expose my doubts and I wonder if you could redirect me to some discussion place where someone might help me.<br>
<br>
Thanks,<br>
Patosga<br>
<br>
_____________________________________<br>
Sent from <a href="http://llvm.1065342.n5.nabble.com" rel="noreferrer" target="_blank">http://llvm.1065342.n5.nabble.com</a><br>
<br>
_______________________________________________<br>
LLVM Developers mailing list<br>
<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a><br>
</blockquote></div><br></div>
</div></div></blockquote></div><br><br clear="all"><br></div></div></div></div>
<br>_______________________________________________<br>
LLVM Developers mailing list<br>
<a href="mailto:llvm-dev@lists.llvm.org" target="_blank">llvm-dev@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev</a><br>
<br></blockquote></div><br></div></div></div></div>
</blockquote></div><br><br clear="all"><br></div></div><span class="HOEnZb"><font color="#888888">-- <br><div data-smartmail="gmail_signature"><div dir="ltr"><div><div><div>Cumprimentos,<br></div>José Pedro Lopes<br>------------------------------------<br></div>Best Regards,<br></div>José Pedro Lopes<br></div></div>
</font></span></div>
</blockquote></div><br></div>