summaryrefslogtreecommitdiffstats
path: root/source
diff options
context:
space:
mode:
authorYong He <yonghe@outlook.com>2021-01-22 13:17:28 -0800
committerGitHub <noreply@github.com>2021-01-22 13:17:28 -0800
commit6601220e20be19aa26cbb90b9930d7ab6e1f2fb3 (patch)
treea635de1ec3540c1db863d4fe9280d2d8b0292772 /source
parent76db3366cb6cfb5432e5d26acb67e5a96224900e (diff)
Further flatten IR natvis views (#1672)
* Further flatten IR natvis views * improvements * formatting Co-authored-by: Yong He <yhe@nvidia.com> Co-authored-by: Tim Foley <tfoleyNV@users.noreply.github.com>
Diffstat (limited to 'source')
-rw-r--r--source/slang/slang.natvis63
1 files changed, 57 insertions, 6 deletions
diff --git a/source/slang/slang.natvis b/source/slang/slang.natvis
index f7b50437e..bf4e325e3 100644
--- a/source/slang/slang.natvis
+++ b/source/slang/slang.natvis
@@ -96,6 +96,7 @@
</CustomListItems>
<Item Name="[value]" Condition="op == Slang::kIROp_StringLit">((IRStringLit*)this)->value.stringVal.chars,[((IRStringLit*)this)->value.stringVal.numChars]s8</Item>
<Item Name="[value]" Condition="op == Slang::kIROp_IntLit">((IRIntLit*)this)->value.intVal</Item>
+ <!--
<Synthetic Name="[operands]">
<DisplayString>{{count = {operandCount}}}</DisplayString>
<Expand>
@@ -106,16 +107,66 @@
</ArrayItems>
</Expand>
</Synthetic>
- <Item Name="[parent]">parent</Item>
+ -->
+ <CustomListItems MaxItemsPerView="10">
+ <Variable Name="index" InitialValue="0"/>
+ <Variable Name="nameDecoration" InitialValue="(IRInst*)nullptr"/>
+ <Variable Name="child" InitialValue="(IRInst*)nullptr"/>
+ <Variable Name="pOperandInst" InitialValue="(IRInst*)nullptr"/>
+ <Loop Condition="index &lt; operandCount">
+ <Exec>pOperandInst = ((IRUse*)(&amp;(typeUse) + 1 + index))->usedValue </Exec>
+ <Exec>child = pOperandInst->m_decorationsAndChildren.first</Exec>
+ <Exec>nameDecoration = 0</Exec>
+ <Loop Condition="child != 0">
+ <If Condition="child->op == Slang::kIROp_NameHintDecoration">
+ <Exec>nameDecoration = child</Exec>
+ <Break/>
+ </If>
+ <If Condition="child->op == Slang::kIROp_ExportDecoration &amp;&amp; (nameDecoration == 0 || nameDecoration->op != Slang::kIROp_NameHintDecoration)">
+ <Exec>nameDecoration = child</Exec>
+ </If>
+ <If Condition="child->op == Slang::kIROp_ImportDecoration &amp;&amp; (nameDecoration == 0 || nameDecoration->op != Slang::kIROp_NameHintDecoration)">
+ <Exec>nameDecoration = child</Exec>
+ </If>
+ <Exec>child = child->next</Exec>
+ </Loop>
+ <Item Condition="nameDecoration != 0" Name="[operand{index}] : {((Slang::IRStringLit*)(((Slang::IRUse*)(nameDecoration + 1))->usedValue))->value.stringVal.chars,[((Slang::IRStringLit*)(((Slang::IRUse*)(nameDecoration + 1))->usedValue))->value.stringVal.numChars]s8}">*pOperandInst</Item>
+ <Item Condition="nameDecoration == 0" Name="[operand{index}]">*pOperandInst</Item>
+ <Exec>index = index + 1</Exec>
+ </Loop>
+ </CustomListItems>
<Synthetic Name="[decorations/children]">
<Expand>
- <LinkedListItems>
- <HeadPointer>m_decorationsAndChildren.first</HeadPointer>
- <NextPointer>next</NextPointer>
- <ValueNode>this</ValueNode>
- </LinkedListItems>
+ <CustomListItems MaxItemsPerView="5000">
+ <Variable Name="pItem" InitialValue="m_decorationsAndChildren.first"/>
+ <Variable Name="nameDecoration" InitialValue="(IRInst*)nullptr"/>
+ <Variable Name="child" InitialValue="(IRInst*)nullptr"/>
+ <Variable Name="index" InitialValue="0"/>
+ <Loop Condition="pItem != 0">
+ <Exec>child = pItem->m_decorationsAndChildren.first </Exec>
+ <Exec>nameDecoration = 0</Exec>
+ <Loop Condition="child != 0">
+ <If Condition="child->op == Slang::kIROp_NameHintDecoration">
+ <Exec>nameDecoration = child</Exec>
+ <Break/>
+ </If>
+ <If Condition="child->op == Slang::kIROp_ExportDecoration &amp;&amp; (nameDecoration == 0 || nameDecoration->op != Slang::kIROp_NameHintDecoration)">
+ <Exec>nameDecoration = child</Exec>
+ </If>
+ <If Condition="child->op == Slang::kIROp_ImportDecoration &amp;&amp; (nameDecoration == 0 || nameDecoration->op != Slang::kIROp_NameHintDecoration)">
+ <Exec>nameDecoration = child</Exec>
+ </If>
+ <Exec>child = child->next</Exec>
+ </Loop>
+ <Item Condition="nameDecoration != 0" Name="[{index}] : {((Slang::IRStringLit*)(((Slang::IRUse*)(nameDecoration + 1))->usedValue))->value.stringVal.chars,[((Slang::IRStringLit*)(((Slang::IRUse*)(nameDecoration + 1))->usedValue))->value.stringVal.numChars]s8}">*pItem</Item>
+ <Item Condition="nameDecoration == 0">*pItem</Item>
+ <Exec>pItem = pItem->next</Exec>
+ <Exec>index = index + 1</Exec>
+ </Loop>
+ </CustomListItems>
</Expand>
</Synthetic>
+ <Item Name="[parent]">parent</Item>
<Synthetic Name="[uses]">
<Expand>
<LinkedListItems>