static int
hex_float (int float_type, char *bytes)
{
- int length;
+ int length, pad = 0;
int i;
switch (float_type)
case 'x':
case 'X':
- length = 12;
+#ifdef X_PRECISION
+ length = X_PRECISION * sizeof (LITTLENUM_TYPE);
+ pad = X_PRECISION_PAD * sizeof (LITTLENUM_TYPE);
+ if (!length)
+#endif
+ length = 12;
break;
case 'p':
case 'P':
- length = 12;
+#ifdef P_PRECISION
+ length = P_PRECISION * sizeof (LITTLENUM_TYPE);
+ pad = P_PRECISION_PAD * sizeof (LITTLENUM_TYPE);
+ if (!length)
+#endif
+ length = 12;
break;
default:
memset (bytes, 0, length - i);
}
- return length;
+ memset (bytes + length, 0, pad);
+
+ return length + pad;
}
/* float_cons()
0030 00000000 0000a044 01000000 0000a044 .*
0040 00000000 0000f03f 00000000 00000000 .*
0050 ffffffff ffffffff ffffffff cccccccc .*
+ 0060 00000000 00000080 fe3f0000 00000000 .*
+ 0070 00000080 fdbf0000 00000000 00000080 .*
+ 0080 ff030000 aaaaaaaa aaaaaaaa aaaaaaaa .*
0030 00000000 0000a044 01000000 0000a044 .*
0040 00000000 0000f03f 00000000 00000000 .*
0050 ffffffff ffffffff ffffffff ffffffff .*
+ 0060 00000000 00000080 fe3f0000 00000000 .*
+ 0070 00000000 00000080 fdbf0000 00000000 .*
+ 0080 00000000 00000080 ff030000 00000000 .*
0030 00000000 0000a044 01000000 0000a044 .*
0040 00000000 0000f03f 00000000 00000000 .*
0050 ffffffff ffffffff ffffcccc cccccccc .*
+ 0060 00000000 00000080 fe3f0000 00000000 .*
+ 0070 0080fdbf 00000000 00000080 ff03aaaa .*
.ds.x 1, -1
.p2align 4,0xcc
+
+ .tfloat 0x:3ffe80
+ .dc.x 0x:bffd80
+ .dcb.x 1, 0x:03ff80
+ .p2align 4,0xaa