Arm32: leave more .bfloat16 processing to common code
authorJan Beulich <jbeulich@suse.com>
Wed, 11 Aug 2021 06:35:18 +0000 (08:35 +0200)
committerJan Beulich <jbeulich@suse.com>
Wed, 11 Aug 2021 06:35:18 +0000 (08:35 +0200)
With x86 support having been implemented by extending atof-ieee.c, avoid
unnecessary code duplication in md_atof(). This will then also allow to
take advantage of adjustments made there without needing to mirror them
here.

gas/config/tc-arm.c

index c9e65582b17a8462b4811c55b381eaf4f661b426..21a2e2d3053e8da9d2d7363d915bf3678e6b5177 100644 (file)
@@ -1247,55 +1247,12 @@ md_atof (int type, char * litP, int * sizeP)
     {
     case 'H':
     case 'h':
+    /* bfloat16, despite not being part of the IEEE specification, can also
+       be handled by atof_ieee().  */
+    case 'b':
       prec = 1;
       break;
 
-    /* If this is a bfloat16, then parse it slightly differently, as it
-       does not follow the IEEE specification for floating point numbers
-       exactly.  */
-    case 'b':
-      {
-       FLONUM_TYPE generic_float;
-
-       t = atof_ieee_detail (input_line_pointer, 1, 8, words, &generic_float);
-
-       if (t)
-         input_line_pointer = t;
-       else
-         return _("invalid floating point number");
-
-       switch (generic_float.sign)
-         {
-         /* Is +Inf.  */
-         case 'P':
-           words[0] = 0x7f80;
-           break;
-
-         /* Is -Inf.  */
-         case 'N':
-           words[0] = 0xff80;
-           break;
-
-         /* Is NaN.  */
-         /* bfloat16 has two types of NaN - quiet and signalling.
-            Quiet NaN has bit[6] == 1 && faction != 0, whereas
-            signalling NaN's have bit[0] == 0 && fraction != 0.
-            Chosen this specific encoding as it is the same form
-            as used by other IEEE 754 encodings in GAS.  */
-         case 0:
-           words[0] = 0x7fff;
-           break;
-
-         default:
-           break;
-         }
-
-       *sizeP = 2;
-
-       md_number_to_chars (litP, (valueT) words[0], sizeof (LITTLENUM_TYPE));
-
-       return NULL;
-      }
     case 'f':
     case 'F':
     case 's':