<?xml version="1.0" encoding="utf-8"?>
<AutoVisualizer xmlns="http://schemas.microsoft.com/vstudio/debugger/natvis/2010">

  <!-- Automatically convert endianness for xe::endian_store<,1> -->
  <Type Name="xe::endian_store&lt;unsigned __int64, 1&gt;">
    <DisplayString>
      {(((value &amp; 0xFF00000000000000) &gt;&gt; 56) |
        ((value &amp; 0x00FF000000000000) &gt;&gt; 40) |
        ((value &amp; 0x0000FF0000000000) &gt;&gt; 24) |
        ((value &amp; 0x000000FF00000000) &gt;&gt; 8 ) |
        ((value &amp; 0x00000000FF000000) &lt;&lt; 8 ) |
        ((value &amp; 0x0000000000FF0000) &lt;&lt; 24) |
        ((value &amp; 0x000000000000FF00) &lt;&lt; 40) |
        ((value &amp; 0x00000000000000FF) &lt;&lt; 56))}
    </DisplayString>
  </Type>
  <Type Name="xe::endian_store&lt;__int64, 1&gt;">
    <DisplayString>
      {(((value &amp; 0xFF00000000000000) &gt;&gt; 56) |
        ((value &amp; 0x00FF000000000000) &gt;&gt; 40) |
        ((value &amp; 0x0000FF0000000000) &gt;&gt; 24) |
        ((value &amp; 0x000000FF00000000) &gt;&gt; 8 ) |
        ((value &amp; 0x00000000FF000000) &lt;&lt; 8 ) |
        ((value &amp; 0x0000000000FF0000) &lt;&lt; 24) |
        ((value &amp; 0x000000000000FF00) &lt;&lt; 40) |
        ((value &amp; 0x00000000000000FF) &lt;&lt; 56))}
    </DisplayString>
  </Type>

  <Type Name="xe::endian_store&lt;unsigned int, 1&gt;">
    <DisplayString>
      {(((value &amp; 0xFF000000) &gt;&gt; 24) |
        ((value &amp; 0x00FF0000) &gt;&gt;  8) |
        ((value &amp; 0x0000FF00) &lt;&lt;  8) |
        ((value &amp; 0x000000FF) &lt;&lt; 24))}
    </DisplayString>
  </Type>
  <Type Name="xe::endian_store&lt;int, 1&gt;">
    <DisplayString>
      {(((value &amp; 0xFF000000) &gt;&gt; 24) |
        ((value &amp; 0x00FF0000) &gt;&gt;  8) |
        ((value &amp; 0x0000FF00) &lt;&lt;  8) |
        ((value &amp; 0x000000FF) &lt;&lt; 24))}
    </DisplayString>
  </Type>

  <Type Name="xe::endian_store&lt;unsigned short, 1&gt;">
    <DisplayString>
      {(((value &amp; 0xFF00) &gt;&gt;  8) |
        ((value &amp; 0x00FF) &lt;&lt;  8))}
    </DisplayString>
  </Type>
  <Type Name="xe::endian_store&lt;short, 1&gt;">
    <DisplayString>
      {(((value &amp; 0xFF00) &gt;&gt;  8) |
        ((value &amp; 0x00FF) &lt;&lt;  8))}
    </DisplayString>
  </Type>

  <Type Name="xe::endian_store&lt;unsigned char, 1&gt;">
    <DisplayString>
      {value}
    </DisplayString>
  </Type>
  <Type Name="xe::endian_store&lt;char, 1&gt;">
    <DisplayString>
      {value}
    </DisplayString>
  </Type>
  
  <Type Name="xe::bf&lt;*&gt;">
    <DisplayString>
      <!-- (storage & mask()) >> position -->
      {($T1)((storage &amp; ((((value_type)~0) &gt;&gt; (8 * sizeof(value_type) - $T3)) &lt;&lt; $T2)) &gt;&gt; $T2)}
    </DisplayString>
  </Type>

</AutoVisualizer>
