[llvm-dev] Specifying DAG patterns in the instruction

Dylan McKay via llvm-dev llvm-dev at lists.llvm.org
Mon Feb 1 15:53:44 PST 2016


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
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20160202/6d2351dc/attachment.html>


More information about the llvm-dev mailing list