summary refs log tree commit diff
path: root/math/creal_template.c
diff options
context:
space:
mode:
authorPaul E. Murphy <murphyp@linux.vnet.ibm.com>2016-06-14 11:44:14 -0500
committerPaul E. Murphy <murphyp@linux.vnet.ibm.com>2016-08-17 14:06:03 -0500
commitce6698ea0aea863bbfb4e932494406789e4e36c1 (patch)
treefc8a53b53c2b6d459dd9b4a5042314bcad7f4482 /math/creal_template.c
parent1f645571d2db9008b3cd3d5acb9ff93357864283 (diff)
downloadglibc-ce6698ea0aea863bbfb4e932494406789e4e36c1.tar.gz
glibc-ce6698ea0aea863bbfb4e932494406789e4e36c1.tar.xz
glibc-ce6698ea0aea863bbfb4e932494406789e4e36c1.zip
Support for type-generic libm function implementations libm
This defines a new classes of libm objects.  The
<func>_template.c file which is used in conjunction
with the new makefile hooks to derive variants for
each type supported by the target machine.

The headers math-type-macros-TYPE.h are used to supply
macros to a common implementation of a function in
a file named FUNC_template.c and glued togethor via
a generated file matching existing naming in the
build directory.

This has the properties of preserving the existing
override mechanism and not requiring any arcane
build system twiddling.  Likewise, it enables machines
to override these files without any additional work.

I have verified the built objects for ppc64, x86_64,
alpha, arm, and m68k do not change in any meaningful
way with these changes using the Fedora cross toolchains.
I have verified the x86_64 and ppc64 changes still run.
Diffstat (limited to 'math/creal_template.c')
-rw-r--r--math/creal_template.c32
1 files changed, 32 insertions, 0 deletions
diff --git a/math/creal_template.c b/math/creal_template.c
new file mode 100644
index 0000000000..f840f43ebb
--- /dev/null
+++ b/math/creal_template.c
@@ -0,0 +1,32 @@
+/* Return real part of complex float type.
+   Copyright (C) 1997-2016 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1997.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#include <complex.h>
+
+FLOAT
+M_DECL_FUNC (__creal) (CFLOAT z)
+{
+  return __real__ z;
+}
+
+declare_mgen_alias (__creal, creal)
+
+#if M_LIBM_NEED_COMPAT (creal)
+declare_mgen_libm_compat (__creal, creal)
+#endif