diff options
-rw-r--r-- | gas/config/tc-arm.c | 49 |
1 files changed, 3 insertions, 46 deletions
diff --git a/gas/config/tc-arm.c b/gas/config/tc-arm.c index c9e6558..21a2e2d 100644 --- a/gas/config/tc-arm.c +++ b/gas/config/tc-arm.c @@ -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': |