[LLVMdev] Reference Manual Clarifications

Jon Sargeant delta17 at cox.net
Mon Mar 31 12:17:13 PDT 2008


Here is a patch containing all but one of the changes.  I realized that 
the remainder/modulo discussion does indeed belongs to the srem 
instruction.  The semantics of urem are obvious and need no further 
clarification.

Best Regards,
Jon

1572,1573c1572,1575
<   notation (see below).  Floating point constants must have a <a
<   href="#t_floating">floating point</a> type. </dd>
---
 >   notation (see below).  The assembler requires the exact decimal 
value of
 >   a floating-point constant.  For example, the assembler accepts 1.25 but
 >   rejects 1.3 because 1.3 is a repeating decimal in binary.  Floating 
point
 >   constants must have a <a href="#t_floating">floating point</a> 
type. </dd>
2178c2180
< program.  They require two operands, execute an operation on them, and
---
 > program.  They require two operands of the same type, execute an 
operation on them, and
2181,2182c2183
< The result value of a binary operator is not
< necessarily the same type as its operands.</p>
---
 > The result value has the same type as its operands.</p>
2332c2333
< <p>The value produced is the signed integer quotient of the two 
operands.</p>
---
 > <p>The value produced is the signed integer quotient of the two 
operands rounded towards zero.</p>
2386,2387c2387
< This instruction always performs an unsigned division to get the 
remainder,
< regardless of whether the arguments are unsigned or not.</p>
---
 > This instruction always performs an unsigned division to get the 
remainder.</p>
2458c2458,2459
< <p>This instruction returns the <i>remainder</i> of a division.</p>
---
 > <p>This instruction returns the <i>remainder</i> of a division.
 > The remainder has the same sign as the dividend.</p>
2472,2474c2473,2474
< instructions.  They require two operands, execute an operation on them,
< and produce a single value.  The resulting value of the bitwise binary
< operators is always the same type as its first operand.</p>
---
 > instructions.  They require two operands of the same type, execute an 
operation on them,
 > and produce a single value.  The resulting value is the same type as 
its operands.</p>
2499,2501c2499,2501
< <p>The value produced is <tt>var1</tt> * 2<sup><tt>var2</tt></sup>.  If
< <tt>var2</tt> is (statically or dynamically) equal to or larger than 
the number
< of bits in <tt>var1</tt>, the result is undefined.</p>
---
 > <p>The value produced is <tt>var1</tt> * 2<sup><tt>var2</tt></sup> 
mod 2<sup>n</sup>,
 > where n is the width of the result.  If <tt>var2</tt> is (statically 
or dynamically) negative or
 > equal to or larger than the number of bits in <tt>var1</tt>, the 
result is undefined.</p>
2532c2532
< shift.  If <tt>var2</tt> is (statically or dynamically) equal to or 
larger than
---
 > shift.  If <tt>var2</tt> is (statically or dynamically) negative or 
equal to or larger than
2567c2567
< of <tt>var1</tt>.  If <tt>var2</tt> is (statically or dynamically) 
equal to or
---
 > of <tt>var1</tt>.  If <tt>var2</tt> is (statically or dynamically) 
negative or equal to or



More information about the llvm-dev mailing list