mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-16 14:31:59 +00:00
Document llvm.umul.with.overflow indicating that it's badly broken and not intended for use.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@64104 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
171de4fa94
commit
41b485c9c3
@ -216,6 +216,7 @@
|
||||
<li><a href="#int_ssub_overflow">'<tt>llvm.ssub.with.overflow.*</tt> Intrinsics</a></li>
|
||||
<li><a href="#int_usub_overflow">'<tt>llvm.usub.with.overflow.*</tt> Intrinsics</a></li>
|
||||
<li><a href="#int_smul_overflow">'<tt>llvm.smul.with.overflow.*</tt> Intrinsics</a></li>
|
||||
<li><a href="#int_umul_overflow">'<tt>llvm.umul.with.overflow.*</tt> Intrinsics</a></li>
|
||||
</ol>
|
||||
</li>
|
||||
<li><a href="#int_debugger">Debugger intrinsics</a></li>
|
||||
@ -6170,6 +6171,59 @@ overflow.</p>
|
||||
|
||||
</div>
|
||||
|
||||
<!-- _______________________________________________________________________ -->
|
||||
<div class="doc_subsubsection">
|
||||
<a name="int_umul_overflow">'<tt>llvm.umul.with.overflow.*</tt>' Intrinsics</a>
|
||||
</div>
|
||||
|
||||
<div class="doc_text">
|
||||
|
||||
<h5>Syntax:</h5>
|
||||
|
||||
<p>This is an overloaded intrinsic. You can use <tt>llvm.umul.with.overflow</tt>
|
||||
on any integer bit width.</p>
|
||||
|
||||
<pre>
|
||||
declare {i16, i1} @llvm.umul.with.overflow.i16(i16 %a, i16 %b)
|
||||
declare {i32, i1} @llvm.umul.with.overflow.i32(i32 %a, i32 %b)
|
||||
declare {i64, i1} @llvm.umul.with.overflow.i64(i64 %a, i64 %b)
|
||||
</pre>
|
||||
|
||||
<h5>Overview:</h5>
|
||||
|
||||
<p><i><b>Warning:</b> '<tt>llvm.umul.with.overflow</tt>' is badly broken. It is
|
||||
actively being fixed, but it should not currently be used!</i></p>
|
||||
|
||||
<p>The '<tt>llvm.umul.with.overflow</tt>' family of intrinsic functions perform
|
||||
a unsigned multiplication of the two arguments, and indicate whether an overflow
|
||||
occurred during the unsigned multiplication.</p>
|
||||
|
||||
<h5>Arguments:</h5>
|
||||
|
||||
<p>The arguments (%a and %b) and the first element of the result structure may
|
||||
be of integer types of any bit width, but they must have the same bit width. The
|
||||
second element of the result structure must be of type <tt>i1</tt>. <tt>%a</tt>
|
||||
and <tt>%b</tt> are the two values that will undergo unsigned
|
||||
multiplication.</p>
|
||||
|
||||
<h5>Semantics:</h5>
|
||||
|
||||
<p>The '<tt>llvm.umul.with.overflow</tt>' family of intrinsic functions perform
|
||||
an unsigned multiplication of the two arguments. They return a structure —
|
||||
the first element of which is the multiplication, and the second element of
|
||||
which is a bit specifying if the unsigned multiplication resulted in an
|
||||
overflow.</p>
|
||||
|
||||
<h5>Examples:</h5>
|
||||
<pre>
|
||||
%res = call {i32, i1} @llvm.umul.with.overflow.i32(i32 %a, i32 %b)
|
||||
%sum = extractvalue {i32, i1} %res, 0
|
||||
%obit = extractvalue {i32, i1} %res, 1
|
||||
br i1 %obit, label %overflow, label %normal
|
||||
</pre>
|
||||
|
||||
</div>
|
||||
|
||||
<!-- ======================================================================= -->
|
||||
<div class="doc_subsection">
|
||||
<a name="int_debugger">Debugger Intrinsics</a>
|
||||
|
Loading…
x
Reference in New Issue
Block a user