[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