aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorDavid Sherwood <david.sherwood@arm.com>2015-11-25 17:12:28 +0000
committerDavid Sherwood <davids@gcc.gnu.org>2015-11-25 17:12:28 +0000
commitccb57bb09074b123d908f00820d865491fa656dd (patch)
tree9f0d2aa8a0fe20a54db2718aaed1374f98424162 /gcc
parentc2127564efc152de34ea1a15ce9b20e8ddccfc2c (diff)
downloadgcc-ccb57bb09074b123d908f00820d865491fa656dd.zip
gcc-ccb57bb09074b123d908f00820d865491fa656dd.tar.gz
gcc-ccb57bb09074b123d908f00820d865491fa656dd.tar.bz2
optabs.def: Add new optabs fmax_optab/fmin_optab.
2015-11-25 David Sherwood <david.sherwood@arm.com> * optabs.def: Add new optabs fmax_optab/fmin_optab. * internal-fn.def: Add new fmax/fmin internal functions. * doc/md.texi: Add fmin and fmax patterns. From-SVN: r230888
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/doc/md.texi9
-rw-r--r--gcc/internal-fn.def2
-rw-r--r--gcc/optabs.def4
4 files changed, 21 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index b00bfb0..c5687e5 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2015-11-25 David Sherwood <david.sherwood@arm.com>
+
+ * optabs.def: Add new optabs fmax_optab/fmin_optab.
+ * internal-fn.def: Add new fmax/fmin internal functions.
+ * doc/md.texi: Add fmin and fmax patterns.
+
2015-11-25 Jason Merrill <jason@redhat.com>
PR c++/68385
diff --git a/gcc/doc/md.texi b/gcc/doc/md.texi
index de1b58a..add8920 100644
--- a/gcc/doc/md.texi
+++ b/gcc/doc/md.texi
@@ -4980,6 +4980,15 @@ Signed minimum and maximum operations. When used with floating point,
if both operands are zeros, or if either operand is @code{NaN}, then
it is unspecified which of the two operands is returned as the result.
+@cindex @code{fmin@var{m}3} instruction pattern
+@cindex @code{fmax@var{m}3} instruction pattern
+@item @samp{fmin@var{m}3}, @samp{fmax@var{m}3}
+IEEE-conformant minimum and maximum operations. If one operand is a quiet
+@code{NaN}, then the other operand is returned. If both operands are quiet
+@code{NaN}, then a quiet @code{NaN} is returned. In the case when gcc supports
+signalling @code{NaN} (-fsignaling-nans) an invalid floating point exception is
+raised and a quiet @code{NaN} is returned.
+
@cindex @code{reduc_smin_@var{m}} instruction pattern
@cindex @code{reduc_smax_@var{m}} instruction pattern
@item @samp{reduc_smin_@var{m}}, @samp{reduc_smax_@var{m}}
diff --git a/gcc/internal-fn.def b/gcc/internal-fn.def
index 825dba1..dee9332 100644
--- a/gcc/internal-fn.def
+++ b/gcc/internal-fn.def
@@ -125,6 +125,8 @@ DEF_INTERNAL_FLT_FN (FMOD, ECF_CONST, fmod, binary)
DEF_INTERNAL_FLT_FN (POW, ECF_CONST, pow, binary)
DEF_INTERNAL_FLT_FN (REMAINDER, ECF_CONST, remainder, binary)
DEF_INTERNAL_FLT_FN (SCALB, ECF_CONST, scalb, binary)
+DEF_INTERNAL_FLT_FN (FMIN, ECF_CONST, fmin, binary)
+DEF_INTERNAL_FLT_FN (FMAX, ECF_CONST, fmax, binary)
/* FP scales. */
DEF_INTERNAL_FLT_FN (LDEXP, ECF_CONST, ldexp, binary)
diff --git a/gcc/optabs.def b/gcc/optabs.def
index c141a3c..20e4225 100644
--- a/gcc/optabs.def
+++ b/gcc/optabs.def
@@ -253,6 +253,10 @@ OPTAB_D (sin_optab, "sin$a2")
OPTAB_D (sincos_optab, "sincos$a3")
OPTAB_D (tan_optab, "tan$a2")
+/* C99 implementations of fmax/fmin. */
+OPTAB_D (fmax_optab, "fmax$a3")
+OPTAB_D (fmin_optab, "fmin$a3")
+
/* Vector reduction to a scalar. */
OPTAB_D (reduc_smax_scal_optab, "reduc_smax_scal_$a")
OPTAB_D (reduc_smin_scal_optab, "reduc_smin_scal_$a")