mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-06-21 02:24:17 +08:00
Arm32: leave more .bfloat16 processing to common code
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.
This commit is contained in:
@ -1247,55 +1247,12 @@ md_atof (int type, char * litP, int * sizeP)
|
|||||||
{
|
{
|
||||||
case 'H':
|
case 'H':
|
||||||
case 'h':
|
case 'h':
|
||||||
|
/* bfloat16, despite not being part of the IEEE specification, can also
|
||||||
|
be handled by atof_ieee(). */
|
||||||
|
case 'b':
|
||||||
prec = 1;
|
prec = 1;
|
||||||
break;
|
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 'F':
|
case 'F':
|
||||||
case 's':
|
case 's':
|
||||||
|
Reference in New Issue
Block a user