</tr>
</tbody>
</table>
-<h3>Packed Types</h3>
+<h3>Vector Types</h3>
<table>
<tbody>
<tr>
</tr>
<tr>
<td><a href="#uint24_vbr">uint24_vbr</a></td>
- <td class="td_left">Type ID for Packed Types (18)</td>
+ <td class="td_left">Type ID for Vector Types (18)</td>
</tr>
<tr>
<td><a href="#uint24_vbr">uint24_vbr</a></td>
- <td class="td_left">Slot number of packed vector's element type.</td>
+ <td class="td_left">Slot number of the vector's element type.</td>
</tr>
<tr>
<td><a href="#uint32_vbr">uint32_vbr</a></td>
- <td class="td_left">The number of elements in the packed vector.</td>
+ <td class="td_left">The number of elements in the vector.</td>
</tr>
</tbody>
</table>
6=DllExport, 7=ExternWeak</td>
</tr>
<tr>
- <td><a href="#bit">bit(5-31)</a></td>
+ <td><a href="#bit">bit(5)</a></td>
+ <td class="td_left">Is Thread Local?</td>
+ </tr>
+ <tr>
+ <td><a href="#bit">bit(6-31)</a></td>
<td class="td_left">Type slot number of type for the global variable.</td>
</tr>
</tbody>
<ul>
<li><b>Bool</b>. This is written as an <a href="#uint32_vbr">uint32_vbr</a> of
value 1U or 0U.</li>
- <li><b>Signed Integers (sbyte,short,int,long)</b>. These are written as an
- <a href="#int64_vbr">int64_vbr</a> with the corresponding value.</li>
- <li><b>Unsigned Integers (ubyte,ushort,uint,ulong)</b>. These are written as
- an <a href="#uint64_vbr">uint64_vbr</a> with the corresponding value. </li>
+ <li><b>Signed Integers (sbyte,short,int,long) ≤ 64 bits</b>. These are
+ written as an <a href="#int64_vbr">int64_vbr</a> with the corresponding
+ value.</li>
+ <li><b>Unsigned Integers (ubyte,ushort,uint,ulong) ≤ 64 bits</b>. These
+ are written as an <a href="#uint64_vbr">uint64_vbr</a> with the corresponding
+ value. </li>
+ <li><b>Integers > 64 bits</b>. These are written as a length followed by a
+ series of 64-bit words. The length specifies the number of words that follow.
+ Any zero-valued high order words are elided. Words with the least significant
+ bits are written to the lowest file offsets (little endian). The length is
+ written as an <a href="#uint32_vbr">uint32_vbr</a>. Each word of the value
+ is written as an <a href="#uint64_vbr">uint64_vbr</a>.</li>
<li><b>Floating Point</b>. Both the float and double types are written
literally in binary format.</li>
<li><b>Arrays</b>. Arrays are written simply as a list of
<tr><td>Call+FastCC+TailCall</td><td>59</td><td>5</td><td>1.5</td></tr>
<tr><td>Call+FastCC</td><td>60</td><td>5</td><td>1.5</td></tr>
<tr><td>Call+CCC+TailCall</td><td>61</td><td>5</td><td>1.5</td></tr>
- <tr><td>Load+Volatile</td><td>62</td><td>3</td><td>1.3</td></tr>
- <tr><td>Store+Volatile</td><td>63</td><td>3</td><td>1.3</td></tr>
+ <tr><td>Load+Attributes</td><td>62</td><td>7</td><td>2.0</td></tr>
+ <tr><td>Store+Attributes</td><td>63</td><td>7</td><td>2.0</td></tr>
</tbody>
</table>
<p><b><a name="pi_note">* Note: </a></b>
These aren't really opcodes from an LLVM language perspective. They encode
information into other opcodes without reserving space for that information.
-For example, opcode=63 is a Volatile Store. The opcode for this
+For example, opcode=63 is an Attributed Store. The opcode for this
instruction is 25 (Store) but we encode it as 63 to indicate that is a Volatile
Store. The same is done for the calling conventions and tail calls.
In each of these entries in range 56-63, the opcode is documented as the base