<li><a href="#i_memcpy">'<tt>llvm.memcpy</tt>' Intrinsic</a></li>
<li><a href="#i_memmove">'<tt>llvm.memmove</tt>' Intrinsic</a></li>
<li><a href="#i_memset">'<tt>llvm.memset</tt>' Intrinsic</a></li>
- <li><a href="#i_isnan">'<tt>llvm.isnan</tt>' Intrinsic</a></li>
<li><a href="#i_isunordered">'<tt>llvm.isunordered</tt>' Intrinsic</a></li>
</ol>
</li>
<h5>Semantics:</h5>
<p>When the '<tt>ret</tt>' instruction is executed, control flow
returns back to the calling function's context. If the caller is a "<a
- href="#i_call"><tt>call</tt></a> instruction, execution continues at
+ href="#i_call"><tt>call</tt></a>" instruction, execution continues at
the instruction after the call. If the caller was an "<a
href="#i_invoke"><tt>invoke</tt></a>" instruction, execution continues
at the beginning "normal" of the destination block. If the instruction
<p>The <tt>switch</tt> instruction specifies a table of values and
destinations. When the '<tt>switch</tt>' instruction is executed, this
-table is searched for the given value. If the value is found, the
-corresponding destination is branched to, otherwise the default value
-it transfered to.</p>
+table is searched for the given value. If the value is found, control flow is
+transfered to the corresponding destination; otherwise, control flow is
+transfered to the default destination.</p>
<h5>Implementation:</h5>
<p>Depending on properties of the target machine and the particular
<tt>switch</tt> instruction, this instruction may be code generated in different
-ways, for example as a series of chained conditional branches, or with a lookup
-table.</p>
+ways. For example, it could be generated as a series of chained conditional
+branches or with a lookup table.</p>
<h5>Example:</h5>
%RT = type { sbyte, [10 x [20 x int]], sbyte }
%ST = type { int, double, %RT }
- int* "foo"(%ST* %s) {
- %reg = getelementptr %ST* %s, int 1, uint 2, uint 1, int 5, int 13<br>
+ implementation
+
+ int* %foo(%ST* %s) {
+ entry:
+ %reg = getelementptr %ST* %s, int 1, uint 2, uint 1, int 5, int 13
ret int* %reg
}
</pre>
<p>The '<tt>llvm.va_copy</tt>' intrinsic works just like the <tt>va_copy</tt>
macro available in C. In a target-dependent way, it copies the source
<tt>va_list</tt> element into the returned list. This intrinsic is necessary
-because the <tt><a href="i_va_start">llvm.va_start</a></tt> intrinsic may be
+because the <tt><a href="#i_va_start">llvm.va_start</a></tt> intrinsic may be
arbitrarily complex and require memory allocation, for example.</p>
</div>
</div>
-
<!-- ======================================================================= -->
<div class="doc_subsection">
<a name="int_libc">Standard C Library Intrinsics</a>
</div>
-<!-- _______________________________________________________________________ -->
-<div class="doc_subsubsection">
- <a name="i_isnan">'<tt>llvm.isnan</tt>' Intrinsic</a>
-</div>
-
-<div class="doc_text">
-
-<h5>Syntax:</h5>
-<pre>
- call bool (<float or double>)* %llvm.isnan(<float or double> Val)
-</pre>
-
-<h5>Overview:</h5>
-
-<p>
-The '<tt>llvm.isnan</tt>' intrinsic returns true if the specific floating point
-value is a NAN.
-</p>
-
-<h5>Arguments:</h5>
-
-<p>
-The argument is a floating point number.
-</p>
-
-<h5>Semantics:</h5>
-
-<p>
-If the argument is a SNAN or QNAN, it returns true, otherwise false.
-</p>
-</div>
-
-
<!-- _______________________________________________________________________ -->
<div class="doc_subsubsection">
<a name="i_isunordered">'<tt>llvm.isunordered</tt>' Intrinsic</a>