mirror of
https://github.com/RPCSX/llvm.git
synced 2025-02-21 21:41:43 +00:00

When using Visual Studio 2015, cmake now puts the native visualizers in llvm.sln, so the developer automatically sees custom visualizations. Much thanks to ariccio who provided extensive help on this change. (manual installation still needed on VS2013) git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@264601 91177308-0d34-0410-b5e6-96231b3b80d8
172 lines
8.2 KiB
XML
172 lines
8.2 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<!--
|
|
Visual Studio Native Debugging Visualizers for LLVM
|
|
|
|
For Visual Studio 2013 only, put this file into
|
|
"%USERPROFILE%\Documents\Visual Studio 2013\Visualizers" or create a symbolic link so it updates automatically.
|
|
|
|
For later versions of Visual Studio, no setup is required.
|
|
-->
|
|
<AutoVisualizer xmlns="http://schemas.microsoft.com/vstudio/debugger/natvis/2010">
|
|
|
|
<Type Name="llvm::SmallVectorImpl<*>">
|
|
<DisplayString Condition="(($T1*)EndX - ($T1*)BeginX) == 0">empty</DisplayString>
|
|
<DisplayString Condition="(($T1*)EndX - ($T1*)BeginX) != 0">{{ size={($T1*)EndX - ($T1*)BeginX} }}</DisplayString>
|
|
<Expand>
|
|
<Item Name="[size]">($T1*)EndX - ($T1*)BeginX</Item>
|
|
<Item Name="[capacity]">($T1*)CapacityX - ($T1*)BeginX</Item>
|
|
<ArrayItems>
|
|
<Size>($T1*)EndX - ($T1*)BeginX</Size>
|
|
<ValuePointer>($T1*)BeginX</ValuePointer>
|
|
</ArrayItems>
|
|
</Expand>
|
|
</Type>
|
|
|
|
<Type Name="llvm::SmallString<*>">
|
|
<DisplayString>{BeginX,s}</DisplayString>
|
|
<StringView>BeginX,s</StringView>
|
|
<Expand>
|
|
<Item Name="[size]">(char*)EndX - (char*)BeginX</Item>
|
|
<Item Name="[capacity]">(char*)CapacityX - (char*)BeginX</Item>
|
|
<ArrayItems>
|
|
<Size>(char*)EndX - (char*)BeginX</Size>
|
|
<ValuePointer>(char*)BeginX</ValuePointer>
|
|
</ArrayItems>
|
|
</Expand>
|
|
</Type>
|
|
|
|
<Type Name="llvm::StringRef">
|
|
<DisplayString>{Data,[Length]s}</DisplayString>
|
|
<StringView>Data,[Length]s</StringView>
|
|
<Expand>
|
|
<Item Name="[size]">Length</Item>
|
|
<ArrayItems>
|
|
<Size>Length</Size>
|
|
<ValuePointer>Data</ValuePointer>
|
|
</ArrayItems>
|
|
</Expand>
|
|
</Type>
|
|
|
|
<Type Name="llvm::PointerIntPair<*,*,*,*>">
|
|
<DisplayString>{IntMask}: {($T1)(Value & PointerBitMask)} [{($T3)((Value >> IntShift) & IntMask)}]</DisplayString>
|
|
<Expand>
|
|
<Item Name="[ptr]">($T1)(Value & PointerBitMask)</Item>
|
|
<Item Name="[int]">($T3)((Value >> IntShift) & IntMask)</Item>
|
|
</Expand>
|
|
</Type>
|
|
|
|
<Type Name="llvm::PointerUnion<*,*>">
|
|
<DisplayString Condition="((Val.Value >> Val.IntShift) & Val.IntMask) == 0">{"$T1", s8b}: {($T1)(Val.Value & Val.PointerBitMask)}</DisplayString>
|
|
<DisplayString Condition="((Val.Value >> Val.IntShift) & Val.IntMask) != 0">{"$T2", s8b}: {($T2)(Val.Value & Val.PointerBitMask)}</DisplayString>
|
|
<Expand>
|
|
<ExpandedItem Condition="((Val.Value >> Val.IntShift) & Val.IntMask) == 0">($T1)(Val.Value & Val.PointerBitMask)</ExpandedItem>
|
|
<ExpandedItem Condition="((Val.Value >> Val.IntShift) & Val.IntMask) != 0">($T2)(Val.Value & Val.PointerBitMask)</ExpandedItem>
|
|
</Expand>
|
|
</Type>
|
|
|
|
<Type Name="llvm::PointerUnion3<*,*,*>">
|
|
<DisplayString Condition="(Val.Val.Value & 2) != 2 && (Val.Val.Value & 1) != 1">{"$T1", s8b}: {($T1)((Val.Val.Value >> 2) << 2)}</DisplayString>
|
|
<DisplayString Condition="(Val.Val.Value & 2) == 2">{"$T2", s8b}: {($T2)((Val.Val.Value >> 2) << 2)}</DisplayString>
|
|
<DisplayString Condition="(Val.Val.Value & 1) == 1">{"$T3", s8b}: {($T3)((Val.Val.Value >> 2) << 2)}</DisplayString>
|
|
<Expand>
|
|
<ExpandedItem Condition="(Val.Val.Value & 2) != 2 && (Val.Val.Value & 1) != 1">($T1)((Val.Val.Value >> 2) << 2)</ExpandedItem>
|
|
<ExpandedItem Condition="(Val.Val.Value & 2) == 2">($T2)((Val.Val.Value >> 2) << 2)</ExpandedItem>
|
|
<ExpandedItem Condition="(Val.Val.Value & 1) == 1">($T3)((Val.Val.Value >> 2) << 2)</ExpandedItem>
|
|
</Expand>
|
|
</Type>
|
|
|
|
<Type Name="llvm::PointerUnion4<*,*,*,*>">
|
|
<DisplayString Condition="(Val.Val.Value & 3) != 3 && (Val.Val.Value & 2) != 2 && (Val.Val.Value & 1) != 1">{"$T1", s8b}: {($T1)((Val.Val.Value >> 2) << 2)}</DisplayString>
|
|
<DisplayString Condition="(Val.Val.Value & 3) != 3 && (Val.Val.Value & 2) == 2">{"$T2", s8b}: {($T2)((Val.Val.Value >> 2) << 2)}</DisplayString>
|
|
<DisplayString Condition="(Val.Val.Value & 3) != 3 && (Val.Val.Value & 1) == 1">{"$T3", s8b}: {($T3)((Val.Val.Value >> 2) << 2)}</DisplayString>
|
|
<DisplayString Condition="(Val.Val.Value & 3) == 3">{"$T4", s8b}: {($T4)((Val.Val.Value >> 2) << 2)}</DisplayString>
|
|
<Expand>
|
|
<ExpandedItem Condition="(Val.Val.Value & 3) != 3 && (Val.Val.Value & 2) != 2 && (Val.Val.Value & 1) != 1">($T1)((Val.Val.Value >> 2) << 2)</ExpandedItem>
|
|
<ExpandedItem Condition="(Val.Val.Value & 3) != 3 && (Val.Val.Value & 2) == 2">($T2)((Val.Val.Value >> 2) << 2)</ExpandedItem>
|
|
<ExpandedItem Condition="(Val.Val.Value & 3) != 3 && (Val.Val.Value & 1) == 1">($T3)((Val.Val.Value >> 2) << 2)</ExpandedItem>
|
|
<ExpandedItem Condition="(Val.Val.Value & 3) == 3">($T4)((Val.Val.Value >> 2) << 2)</ExpandedItem>
|
|
</Expand>
|
|
</Type>
|
|
|
|
<Type Name="llvm::iplist<*,*>">
|
|
<DisplayString Condition="Head == 0">{{ empty }}</DisplayString>
|
|
<DisplayString Condition="Head != 0">{{ head={Head} }}</DisplayString>
|
|
<Expand>
|
|
<LinkedListItems>
|
|
<HeadPointer>Head</HeadPointer>
|
|
<NextPointer>Next</NextPointer>
|
|
<ValueNode>this</ValueNode>
|
|
</LinkedListItems>
|
|
</Expand>
|
|
</Type>
|
|
|
|
<Type Name="llvm::IntrusiveRefCntPtr<*>">
|
|
<DisplayString Condition="Obj == 0">empty</DisplayString>
|
|
<DisplayString Condition="(Obj != 0) && (Obj->ref_cnt == 1)">RefPtr [1 ref] {*Obj}</DisplayString>
|
|
<DisplayString Condition="(Obj != 0) && (Obj->ref_cnt != 1)">RefPtr [{Obj->ref_cnt} refs] {*Obj}</DisplayString>
|
|
<Expand>
|
|
<Item Condition="Obj != 0" Name="[refs]">Obj->ref_cnt</Item>
|
|
<ExpandedItem Condition="Obj != 0">Obj</ExpandedItem>
|
|
</Expand>
|
|
</Type>
|
|
|
|
<Type Name="llvm::SmallPtrSet<*,*>">
|
|
<DisplayString Condition="CurArray == SmallArray">{{ [Small Mode] size={NumElements}, capacity={CurArraySize} }}</DisplayString>
|
|
<DisplayString Condition="CurArray != SmallArray">{{ [Big Mode] size={NumElements}, capacity={CurArraySize} }}</DisplayString>
|
|
<Expand>
|
|
<Item Name="[size]">NumElements</Item>
|
|
<Item Name="[capacity]">CurArraySize</Item>
|
|
<ArrayItems>
|
|
<Size>CurArraySize</Size>
|
|
<ValuePointer>($T1*)CurArray</ValuePointer>
|
|
</ArrayItems>
|
|
</Expand>
|
|
</Type>
|
|
|
|
<Type Name="llvm::DenseMap<*,*,*>">
|
|
<DisplayString Condition="NumEntries == 0">empty</DisplayString>
|
|
<DisplayString Condition="NumEntries != 0">{{ size={NumEntries}, buckets={NumBuckets} }}</DisplayString>
|
|
<Expand>
|
|
<Item Name="[size]">NumEntries</Item>
|
|
<Item Name="[buckets]">NumBuckets</Item>
|
|
<ArrayItems>
|
|
<Size>NumBuckets</Size>
|
|
<ValuePointer>Buckets</ValuePointer>
|
|
</ArrayItems>
|
|
</Expand>
|
|
</Type>
|
|
|
|
<Type Name="llvm::StringMap<*,*>">
|
|
<DisplayString>{{ size={NumItems}, buckets={NumBuckets} }}</DisplayString>
|
|
<Expand>
|
|
<Item Name="[size]">NumItems</Item>
|
|
<Item Name="[buckets]">NumBuckets</Item>
|
|
<ArrayItems>
|
|
<Size>NumBuckets</Size>
|
|
<ValuePointer>(MapEntryTy**)TheTable</ValuePointer>
|
|
</ArrayItems>
|
|
</Expand>
|
|
</Type>
|
|
|
|
<Type Name="llvm::StringMapEntry<*>">
|
|
<DisplayString Condition="StrLen == 0">empty</DisplayString>
|
|
<DisplayString Condition="StrLen != 0">({this+1,s}, {second})</DisplayString>
|
|
<Expand>
|
|
<Item Name="[key]">this+1,s</Item>
|
|
<Item Name="[value]" Condition="StrLen != 0">second</Item>
|
|
</Expand>
|
|
</Type>
|
|
|
|
<Type Name="llvm::Triple">
|
|
<DisplayString>{Data}</DisplayString>
|
|
</Type>
|
|
|
|
<Type Name="llvm::Optional<*>">
|
|
<DisplayString Condition="!hasVal">empty</DisplayString>
|
|
<DisplayString Condition="hasVal">{*(($T1 *)(unsigned char *)storage.buffer)}</DisplayString>
|
|
<Expand>
|
|
<Item Name="[underlying]" Condition="hasVal">*(($T1 *)(unsigned char *)storage.buffer)</Item>
|
|
</Expand>
|
|
</Type>
|
|
</AutoVisualizer>
|