[llvm-dev] Specifying DAG patterns in the instruction

Rail Shafigulin via llvm-dev llvm-dev at lists.llvm.org
Thu Feb 4 11:55:44 PST 2016


Thanks!

On Mon, Feb 1, 2016 at 3:53 PM, Dylan McKay <dylanmckay34 at gmail.com> wrote:

> Yes, that is exactly what it looks like.
>
> On Tue, Feb 2, 2016 at 11:16 AM, Rail Shafigulin <rail at esenciatech.com>
> wrote:
>
>> On Sat, Jan 30, 2016 at 5:32 PM, Dylan McKay <dylanmckay34 at gmail.com>
>> wrote:
>>
>>> TableGen, as a DSL language, is made up of records. Every def
>>> corresponds to a record. For example, TableGen has a class Register,
>>> and your backend will define records by def GPR8 : Register<...>. You
>>> are correct in saying that the record definition is one of the SDNode
>>> values. These correspond 1:1 to llvm::ISD::NodeType
>>> <http://llvm.org/docs/doxygen/html/namespacellvm_1_1ISD.html#a22ea9cec080dd5f4f47ba234c2f59110>
>>> .
>>>
>>> (DEF a, b) corresponds to
>>>
>>>     --------- a
>>>    /
>>> DEF
>>>    \
>>>     ----------b
>>>
>>> A more complicated example, regarding that a and b themselves can be
>>> nested DAGs.
>>>
>>>                      a
>>>                    /
>>>      --------- add
>>>     /              \
>>>    /                 b
>>> DEF
>>>    \                 c
>>>     \              /
>>>      ---------- sub
>>>                    \
>>>                     d
>>>
>>> And so on and so fourth.
>>>
>>
>> My next question is about the nodes of the Selection DAG. Based on what
>> I'm seeing the nodes can either be registers or they can be instructions.
>> If I understand correctly llvm::ISD::NodeType
>> <http://llvm.org/docs/doxygen/html/namespacellvm_1_1ISD.html#a22ea9cec080dd5f4f47ba234c2f59110> tells
>> me the type of the node (register, add instruction, pseudo instruction,
>> etc).
>>
>> What does a DAG set operation do? Does it create new node?
>>
>> Here is the example:
>>
>> (set GPR:$rD, (add (i32 GPR:$rA), (i32 GPR:$rB)))
>>
>> And here is what I assume this to look like:
>>
>>
>>                                  --------------- GPR:$rA
>>                                 /
>>                                /
>> GPR:$rd ----------- add
>>                                \
>>                                 \
>>                                  --------------- GRP:$rb
>>
>> Am I correct?
>>
>> Any help is appreciated.
>>
>> ‚Äč
>>>
>> --
>> Rail Shafigulin
>> Software Engineer
>> Esencia Technologies
>>
>
>


-- 
Rail Shafigulin
Software Engineer
Esencia Technologies
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20160204/ce679677/attachment.html>


More information about the llvm-dev mailing list