Arm64: leave .bfloat16 processing to common code
authorJan Beulich <jbeulich@suse.com>
Wed, 11 Aug 2021 06:35:42 +0000 (08:35 +0200)
committerJan Beulich <jbeulich@suse.com>
Wed, 11 Aug 2021 06:35:42 +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-aarch64.c

index 2eaad63a9fa37f1b3dfa37e2f56e845631b91d60..19a5d49d09067c85aed55739e219cd2259e31f5b 100644 (file)
@@ -523,7 +523,7 @@ const char EXP_CHARS[] = "eE";
 /* As in 0f12.456  */
 /* or   0d1.2345e12  */
 
-const char FLT_CHARS[] = "rRsSfFdDxXeEpPhH";
+const char FLT_CHARS[] = "rRsSfFdDxXeEpPhHb";
 
 /* Prefix character that indicates the start of an immediate value.  */
 #define is_immediate_prefix(C) ((C) == '#')
@@ -643,54 +643,6 @@ aarch64_get_expression (expressionS *  ep,
 const char *
 md_atof (int type, char *litP, int *sizeP)
 {
-  /* If this is a bfloat16 type, then parse it slightly differently -
-     as it does not follow the IEEE standard exactly.  */
-  if (type == 'b')
-    {
-      char * t;
-      LITTLENUM_TYPE words[MAX_LITTLENUMS];
-      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.
-          Chose 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;
-    }
-
   return ieee_md_atof (type, litP, sizeP, target_big_endian);
 }