/* IEEE floating point support routines, for GDB, the GNU Debugger.
- Copyright 1991, 1994, 1999, 2000, 2003, 2005, 2006, 2010, 2012
- Free Software Foundation, Inc.
+ Copyright (C) 1991-2022 Free Software Foundation, Inc.
This file is part of GDB.
Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */
/* This is needed to pick up the NAN macro on some systems. */
+#ifndef _GNU_SOURCE
#define _GNU_SOURCE
+#endif
#ifdef HAVE_CONFIG_H
#include "config.h"
a system header, what we do if not, etc. */
#define FLOATFORMAT_CHAR_BIT 8
-/* floatformats for IEEE half, single and double, big and little endian. */
+/* floatformats for IEEE half, single, double and quad, big and little endian. */
const struct floatformat floatformat_ieee_half_big =
{
floatformat_big, 16, 0, 1, 5, 15, 31, 6, 10,
floatformat_always_valid,
NULL
};
+const struct floatformat floatformat_ieee_quad_big =
+{
+ floatformat_big, 128, 0, 1, 15, 16383, 0x7fff, 16, 112,
+ floatformat_intbit_no,
+ "floatformat_ieee_quad_big",
+ floatformat_always_valid,
+ NULL
+};
+const struct floatformat floatformat_ieee_quad_little =
+{
+ floatformat_little, 128, 0, 1, 15, 16383, 0x7fff, 16, 112,
+ floatformat_intbit_no,
+ "floatformat_ieee_quad_little",
+ floatformat_always_valid,
+ NULL
+};
/* floatformat for IEEE double, little endian byte order, with big endian word
ordering, as on the ARM. */
floatformat_always_valid,
NULL
};
-const struct floatformat floatformat_ia64_quad_big =
-{
- floatformat_big, 128, 0, 1, 15, 16383, 0x7fff, 16, 112,
- floatformat_intbit_no,
- "floatformat_ia64_quad_big",
- floatformat_always_valid,
- NULL
-};
-const struct floatformat floatformat_ia64_quad_little =
-{
- floatformat_little, 128, 0, 1, 15, 16383, 0x7fff, 16, 112,
- floatformat_intbit_no,
- "floatformat_ia64_quad_little",
- floatformat_always_valid,
- NULL
-};
static int
floatformat_ibm_long_double_is_valid (const struct floatformat *fmt,
floatformat_ibm_long_double_is_valid,
&floatformat_ieee_double_little
};
-\f
+
+const struct floatformat floatformat_bfloat16_big =
+{
+ floatformat_big, 16, 0, 1, 8, 127, 255, 9, 7,
+ floatformat_intbit_no,
+ "floatformat_bfloat16_big",
+ floatformat_always_valid,
+ NULL
+};
+
+const struct floatformat floatformat_bfloat16_little =
+{
+ floatformat_little, 16, 0, 1, 8, 127, 255, 9, 7,
+ floatformat_intbit_no,
+ "floatformat_bfloat16_little",
+ floatformat_always_valid,
+ NULL
+};
#ifndef min
#define min(a, b) ((a) < (b) ? (a) : (b))
int nan = mant_bits_set (fmt, ufrom);
/* On certain systems (such as GNU/Linux), the use of the
- INFINITY macro below may generate a warning that can not be
+ INFINITY macro below may generate a warning that cannot be
silenced due to a bug in GCC (PR preprocessor/11931). The
preprocessor fails to recognise the __extension__ keyword in
conjunction with the GNU/C99 extension for hexadecimal