floatformat.h: Add bfloat16 support.
authorFelix Willgerodt <felix.willgerodt@intel.com>
Mon, 17 Aug 2020 11:36:49 +0000 (13:36 +0200)
committerJoseph Myers <joseph@codesourcery.com>
Tue, 8 Sep 2020 17:38:12 +0000 (17:38 +0000)
This change is motivated by a patchset that adds bfloat16 debugging
support for new avx512 instructions to GDB. The gdb thread can be found
here: https://sourceware.org/pipermail/gdb-patches/2020-July/170820.html

include:
2020-08-17  Felix Willgerodt  <felix.willgerodt@intel.com>

* floatformat.h (floatformat_bfloat16_big): New.
(floatformat_bfloat16_little): New.

libiberty:
2020-08-17  Felix Willgerodt  <felix.willgerodt@intel.com>

* floatformat.c (floatformat_bfloat16_big): New.
(floatformat_bfloat16_little): New.

include/floatformat.h
libiberty/floatformat.c

index ce8d6d4add8e69f32519762059bfb24a64de3830..630fade044984a51dd8b1320e6888c27d2b25969 100644 (file)
@@ -133,6 +133,9 @@ extern const struct floatformat floatformat_ia64_quad_little;
 /* IBM long double (double+double).  */
 extern const struct floatformat floatformat_ibm_long_double_big;
 extern const struct floatformat floatformat_ibm_long_double_little;
+/* bfloat16.  */
+extern const struct floatformat floatformat_bfloat16_big;
+extern const struct floatformat floatformat_bfloat16_little;
 
 /* Convert from FMT to a double.
    FROM is the address of the extended float.
index 2fd5e688ec4177ca91cdf2cd4d92b3ac34ffe409..6b9b03288e29cee2713f7232e7585e8ebf5429bd 100644 (file)
@@ -389,7 +389,24 @@ const struct floatformat floatformat_ibm_long_double_little =
   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))