aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorZack Weinberg <zack@codesourcery.com>2004-01-27 18:03:17 +0000
committerZack Weinberg <zack@gcc.gnu.org>2004-01-27 18:03:17 +0000
commit60ffd2fe0956983ed8a8ea30be2a3c6790408fb2 (patch)
tree98e6ff3e4849debfb568ae4898a626a6b42fc419 /gcc
parent52ad4d7b53f0798dcf610ae25199897ede9c9719 (diff)
downloadgcc-60ffd2fe0956983ed8a8ea30be2a3c6790408fb2.zip
gcc-60ffd2fe0956983ed8a8ea30be2a3c6790408fb2.tar.gz
gcc-60ffd2fe0956983ed8a8ea30be2a3c6790408fb2.tar.bz2
rtl.texi (Arithmetic): Rewrite entries for PLUS, SS_PLUS, US_PLUS, LO_SUM, MINUS, SS_MINUS, US_MINUS.
* doc/rtl.texi (Arithmetic): Rewrite entries for PLUS, SS_PLUS, US_PLUS, LO_SUM, MINUS, SS_MINUS, US_MINUS. From-SVN: r76735
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/doc/rtl.texi68
2 files changed, 40 insertions, 33 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 5a6c57b..e0eef50 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,10 @@
2004-01-27 Zack Weinberg <zack@codesourcery.com>
+ * doc/rtl.texi (Arithmetic): Rewrite entries for PLUS,
+ SS_PLUS, US_PLUS, LO_SUM, MINUS, SS_MINUS, US_MINUS.
+
+2004-01-27 Zack Weinberg <zack@codesourcery.com>
+
PR 7198
* config/ia64/ia64.md (*nmaddsf4, *nmadddf4, *nmadddf4_alts)
(*nmadddf4_trunc, *nmaddxf4, *nmaddxf4_truncsf, *nmaddxf4_truncdf)
diff --git a/gcc/doc/rtl.texi b/gcc/doc/rtl.texi
index 6fcce63..49af4f3 100644
--- a/gcc/doc/rtl.texi
+++ b/gcc/doc/rtl.texi
@@ -1749,51 +1749,53 @@ second operand.
@table @code
@findex plus
-@cindex RTL addition
+@findex ss_plus
+@findex us_plus
@cindex RTL sum
+@cindex RTL addition
+@cindex RTL addition with signed saturation
+@cindex RTL addition with unsigned saturation
@item (plus:@var{m} @var{x} @var{y})
-Represents the sum of the values represented by @var{x} and @var{y}
-carried out in machine mode @var{m}.
+@itemx (ss_plus:@var{m} @var{x} @var{y})
+@itemx (us_plus:@var{m} @var{x} @var{y})
-@findex lo_sum
-@item (lo_sum:@var{m} @var{x} @var{y})
-Like @code{plus}, except that it represents that sum of @var{x} and the
-low-order bits of @var{y}. The number of low order bits is
-machine-dependent but is normally the number of bits in a @code{Pmode}
-item minus the number of bits set by the @code{high} code
-(@pxref{Constants}).
+These three expressions all represent the sum of the values
+represented by @var{x} and @var{y} carried out in machine mode
+@var{m}. They differ in their behavior on overflow of integer modes.
+@code{plus} wraps round modulo the width of @var{m}; @code{ss_plus}
+saturates at the maximum signed value representable in @var{m};
+@code{us_plus} saturates at the maximum unsigned value.
-@var{m} should be @code{Pmode}.
+@c ??? What happens on overflow of floating point modes?
-@findex minus
-@cindex RTL subtraction
-@cindex RTL difference
-@item (minus:@var{m} @var{x} @var{y})
-Like @code{plus} but represents subtraction.
-
-@findex ss_plus
-@cindex RTL addition with signed saturation
-@item (ss_plus:@var{m} @var{x} @var{y})
+@findex lo_sum
+@item (lo_sum:@var{m} @var{x} @var{y})
-Like @code{plus}, but using signed saturation in case of an overflow.
+This expression represents the sum of @var{x} and the low-order bits
+of @var{y}. It is used with @code{high} (@pxref{Constants}) to
+represent the typical two-instruction sequence used in RISC machines
+to reference a global memory location.
-@findex us_plus
-@cindex RTL addition with unsigned saturation
-@item (us_plus:@var{m} @var{x} @var{y})
+The number of low order bits is machine-dependent but is
+normally the number of bits in a @code{Pmode} item minus the number of
+bits set by @code{high}.
-Like @code{plus}, but using unsigned saturation in case of an overflow.
+@var{m} should be @code{Pmode}.
+@findex minus
@findex ss_minus
-@cindex RTL addition with signed saturation
-@item (ss_minus:@var{m} @var{x} @var{y})
-
-Like @code{minus}, but using signed saturation in case of an overflow.
-
@findex us_minus
-@cindex RTL addition with unsigned saturation
-@item (us_minus:@var{m} @var{x} @var{y})
+@cindex RTL difference
+@cindex RTL subtraction
+@cindex RTL subtraction with signed saturation
+@cindex RTL subtraction with unsigned saturation
+@item (minus:@var{m} @var{x} @var{y})
+@itemx (ss_minus:@var{m} @var{x} @var{y})
+@itemx (us_minus:@var{m} @var{x} @var{y})
-Like @code{minus}, but using unsigned saturation in case of an overflow.
+These three expressions represent the result of subtracting @var{y}
+from @var{x}, carried out in mode @var{M}. Behavior on overflow is
+the same as for the three variants of @code{plus} (see above).
@findex compare
@cindex RTL comparison