<h5>Syntax:</h5>
<pre>
<result> = add <ty> <op1>, <op2> <i>; yields {ty}:result</i>
- <result> = signed add <ty> <op1>, <op2> <i>; yields {ty}:result</i>
- <result> = unsigned add <ty> <op1>, <op2> <i>; yields {ty}:result</i>
- <result> = unsigned signed add <ty> <op1>, <op2> <i>; yields {ty}:result</i>
+ <result> = nuw add <ty> <op1>, <op2> <i>; yields {ty}:result</i>
+ <result> = nsw add <ty> <op1>, <op2> <i>; yields {ty}:result</i>
+ <result> = nuw nsw add <ty> <op1>, <op2> <i>; yields {ty}:result</i>
</pre>
<h5>Overview:</h5>
<p>Because LLVM integers use a two's complement representation, this instruction
is appropriate for both signed and unsigned integers.</p>
-<p>If the <tt>signed</tt> and/or <tt>unsigned</tt> keywords are present,
- the result value of the <tt>add</tt> is undefined if signed and/or unsigned
- overflow, respectively, occurs.</p>
+<p><tt>nuw</tt> and <tt>nsw</tt> stand for "No Unsigned Wrap"
+ and "No Signed Wrap", respectively. If the <tt>nuw</tt> and/or
+ <tt>nsw</tt> keywords are present, the result value of the <tt>add</tt>
+ is undefined if unsigned and/or signed overflow, respectively, occurs.</p>
<h5>Example:</h5>
<pre>
<h5>Syntax:</h5>
<pre>
- <result> = sub <ty> <op1>, <op2> <i>; yields {ty}:result</i>
- <result> = signed sub <ty> <op1>, <op2> <i>; yields {ty}:result</i>
- <result> = unsigned sub <ty> <op1>, <op2> <i>; yields {ty}:result</i>
- <result> = unsigned signed sub <ty> <op1>, <op2> <i>; yields {ty}:result</i>
+ <result> = sub <ty> <op1>, <op2> <i>; yields {ty}:result</i>
+ <result> = nuw sub <ty> <op1>, <op2> <i>; yields {ty}:result</i>
+ <result> = nsw sub <ty> <op1>, <op2> <i>; yields {ty}:result</i>
+ <result> = nuw nsw sub <ty> <op1>, <op2> <i>; yields {ty}:result</i>
</pre>
<h5>Overview:</h5>
<p>Because LLVM integers use a two's complement representation, this instruction
is appropriate for both signed and unsigned integers.</p>
-<p>If the <tt>signed</tt> and/or <tt>unsigned</tt> keywords are present,
- the result value of the <tt>sub</tt> is undefined if signed and/or unsigned
- overflow, respectively, occurs.</p>
+<p><tt>nuw</tt> and <tt>nsw</tt> stand for "No Unsigned Wrap"
+ and "No Signed Wrap", respectively. If the <tt>nuw</tt> and/or
+ <tt>nsw</tt> keywords are present, the result value of the <tt>sub</tt>
+ is undefined if unsigned and/or signed overflow, respectively, occurs.</p>
<h5>Example:</h5>
<pre>
<h5>Syntax:</h5>
<pre>
- <result> = mul <ty> <op1>, <op2> <i>; yields {ty}:result</i>
- <result> = signed mul <ty> <op1>, <op2> <i>; yields {ty}:result</i>
- <result> = unsigned mul <ty> <op1>, <op2> <i>; yields {ty}:result</i>
- <result> = unsigned signed mul <ty> <op1>, <op2> <i>; yields {ty}:result</i>
+ <result> = mul <ty> <op1>, <op2> <i>; yields {ty}:result</i>
+ <result> = nuw mul <ty> <op1>, <op2> <i>; yields {ty}:result</i>
+ <result> = nsw mul <ty> <op1>, <op2> <i>; yields {ty}:result</i>
+ <result> = nuw nsw mul <ty> <op1>, <op2> <i>; yields {ty}:result</i>
</pre>
<h5>Overview:</h5>
be sign-extended or zero-extended as appropriate to the width of the full
product.</p>
-<p>If the <tt>signed</tt> and/or <tt>unsigned</tt> keywords are present,
- the result value of the <tt>mul</tt> is undefined if signed and/or unsigned
- overflow, respectively, occurs.</p>
+<p><tt>nuw</tt> and <tt>nsw</tt> stand for "No Unsigned Wrap"
+ and "No Signed Wrap", respectively. If the <tt>nuw</tt> and/or
+ <tt>nsw</tt> keywords are present, the result value of the <tt>mul</tt>
+ is undefined if unsigned and/or signed overflow, respectively, occurs.</p>
<h5>Example:</h5>
<pre>