diff options
| author | Yong He <yonghe@outlook.com> | 2021-01-22 13:17:28 -0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-01-22 13:17:28 -0800 |
| commit | 6601220e20be19aa26cbb90b9930d7ab6e1f2fb3 (patch) | |
| tree | a635de1ec3540c1db863d4fe9280d2d8b0292772 /source | |
| parent | 76db3366cb6cfb5432e5d26acb67e5a96224900e (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.natvis | 63 |
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 < operandCount"> + <Exec>pOperandInst = ((IRUse*)(&(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 && (nameDecoration == 0 || nameDecoration->op != Slang::kIROp_NameHintDecoration)"> + <Exec>nameDecoration = child</Exec> + </If> + <If Condition="child->op == Slang::kIROp_ImportDecoration && (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 && (nameDecoration == 0 || nameDecoration->op != Slang::kIROp_NameHintDecoration)"> + <Exec>nameDecoration = child</Exec> + </If> + <If Condition="child->op == Slang::kIROp_ImportDecoration && (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> |
