Added the llvm.readport and llvm.writeport intrinsics.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12788 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
John Criswell 2004-04-09 15:23:37 +00:00
parent aee0cf3fca
commit cfd3baccce

View File

@ -101,6 +101,8 @@
<ol>
<li><a href="#i_returnaddress">'<tt>llvm.returnaddress</tt>' Intrinsic</a></li>
<li><a href="#i_frameaddress">'<tt>llvm.frameaddress</tt>' Intrinsic</a></li>
<li><a href="#i_readport">'<tt>llvm.readport</tt>' Intrinsic</a></li>
<li><a href="#i_writeport">'<tt>llvm.writeport</tt>' Intrinsic</a></li>
</ol>
</li>
<li><a href="#int_libc">Standard C Library Intrinsics</a>
@ -1996,6 +1998,95 @@ source-language caller.
</p>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<a name="i_readport">'<tt>llvm.readport</tt>' Intrinsic</a>
</div>
<div class="doc_text">
<h5>Syntax:</h5>
<pre>
call sbyte (ushort address)* %llvm.readport(ushort &lt;address&gt;)
call ubyte (ushort address)* %llvm.readport(ushort &lt;address&gt;)
call short (ushort address)* %llvm.readport(ushort &lt;address&gt;)
call ushort (ushort address)* %llvm.readport(ushort &lt;address&gt;)
call int (ushort address)* %llvm.readport(ushort &lt;address&gt;)
call uint (ushort address)* %llvm.readport(ushort &lt;address&gt;)
</pre>
<h5>Overview:</h5>
<p>
The '<tt>llvm.readport</tt>' intrinsic reads data from the specified I/O port.
</p>
<h5>Arguments:</h5>
<p>
The argument to this intrinsic indicates the I/O address from which to read
the data. The address is in the I/O address namespace; it is not a memory
location.
</p>
<h5>Semantics:</h5>
<p>
The '<tt>llvm.readport</tt>' intrinsic reads data from the I/O port specified
by <i>address</i> and returns the value. The address and return value must
be integers, but the size is dependent upon the platform upon which the
program is code generated. For example, on x86, the address must be a
ushort, and the return value must be 8, 16, or 32 bits.
</p>
</div>
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<a name="i_writeport">'<tt>llvm.writeport</tt>' Intrinsic</a>
</div>
<div class="doc_text">
<h5>Syntax:</h5>
<pre>
call void (ushort address, sbyte value)* %llvm.writeport(ushort &lt;address&gt;, sbyte &lt;value&gt;)
call void (ushort address, ubyte value)* %llvm.writeport(ushort &lt;address&gt;, ubyte &lt;value&gt;)
call void (ushort address, short value)* %llvm.writeport(ushort &lt;address&gt;, short &lt;value&gt;)
call void (ushort address, ushort value)* %llvm.writeport(ushort &lt;address&gt;, ushort &lt;value&gt;)
call void (ushort address, int value)* %llvm.writeport(ushort &lt;address&gt;, int &lt;value&gt;)
call void (ushort address, uint value)* %llvm.writeport(ushort &lt;address&gt;, uint &lt;value&gt;)
</pre>
<h5>Overview:</h5>
<p>
The '<tt>llvm.writeport</tt>' intrinsic writes data to the specified I/O port.
</p>
<h5>Arguments:</h5>
<p>
The first argument to this intrinsic indicates the I/O address to which data
should be written. The address is in the I/O address namespace; it is not a
memory location.
</p>
<p>
The second argument is the value to write to the I/O port.
</p>
<h5>Semantics:</h5>
<p>
The '<tt>llvm.writeport</tt>' intrinsic writes <i>value</i> to the I/O port
specified by <i>address</i>. The address and value must be integers, but the
size is dependent upon the platform upon which the program is code generated.
For example, on x86, the address must be a ushort, and the value written must
be 8, 16, or 32 bits in length.
</p>
</div>
<!-- ======================================================================= -->
<div class="doc_subsection">