-#ifdef HAVE_LONG_DOUBLE
- mant_val = 63;
- bias_val = 0x3fff;
- sign = (srcval.val.high & 0x00008000) != 0;
- exponent = (srcval.val.high & 0x00007FFF) ;
- mantissa0 = srcval.val.mid;
- mantissa1 = srcval.val.low;
-#else /* no long double */
- mant_val = 52;
- bias_val = 0x3ff;
- sign = (srcval.val.high & 0x80000000) != 0;
- exponent = (srcval.val.high & 0x7FF00000) >> 20;
- mantissa0 = srcval.val.high & 0x000FFFFF;
- mantissa1 = srcval.val.low;
-#endif
-
-#ifdef HAVE_LONG_DOUBLE
- TRACEPRINTF(("val_from_float(%.8X%.8X%.8X)\n", ((int*)&l)[2], ((int*)&l)[1], ((int*)&l)[0]));/* srcval.val.high, srcval.val.mid, srcval.val.low)); */
- DEBUGPRINTF(("(%d-%.4X-%.8X%.8X)\n", sign, exponent, mantissa0, mantissa1));
-#else
- TRACEPRINTF(("val_from_float(%.8X%.8X)\n", srcval.val.high, srcval.val.low));
- DEBUGPRINTF(("(%d-%.3X-%.5X%.8X)\n", sign, exponent, mantissa0, mantissa1));
-#endif
+ if (long_double_size == 8) {
+ mant_val = 52;
+ bias_val = 0x3ff;
+ sign = (srcval.val_ld8.high & 0x80000000) != 0;
+ exponent = (srcval.val_ld8.high & 0x7FF00000) >> 20;
+ mantissa0 = srcval.val_ld8.high & 0x000FFFFF;
+ mantissa1 = srcval.val_ld8.low;
+ } else {
+ /* we assume an x86-like 80bit representation of the value... */
+ assert(sizeof(long double)==12 || sizeof(long double)==16);
+ mant_val = 63;
+ bias_val = 0x3fff;
+ sign = (srcval.val_ld12.high & 0x00008000) != 0;
+ exponent = (srcval.val_ld12.high & 0x00007FFF) ;
+ mantissa0 = srcval.val_ld12.mid;
+ mantissa1 = srcval.val_ld12.low;
+ }