summaryrefslogtreecommitdiff
path: root/meta/packages/gcc/gcc-4.1.1/ppc-sfp-long-double-gcc411-7.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta/packages/gcc/gcc-4.1.1/ppc-sfp-long-double-gcc411-7.patch')
-rw-r--r--meta/packages/gcc/gcc-4.1.1/ppc-sfp-long-double-gcc411-7.patch4271
1 files changed, 0 insertions, 4271 deletions
diff --git a/meta/packages/gcc/gcc-4.1.1/ppc-sfp-long-double-gcc411-7.patch b/meta/packages/gcc/gcc-4.1.1/ppc-sfp-long-double-gcc411-7.patch
deleted file mode 100644
index e3a87c87d..000000000
--- a/meta/packages/gcc/gcc-4.1.1/ppc-sfp-long-double-gcc411-7.patch
+++ /dev/null
@@ -1,4271 +0,0 @@
- * config/rs6000/darwin-ldouble.c: Build file for SOFT_FLOAT.
- (strong_alias): Define.
- (__gcc_qmul): Provide non-FMA for soft-float.
- (__gcc_qdiv): Same.
- (__gcc_qneg): New.
- (__gcc_qeq): New.
- (__gcc_qle): New.
- (__gcc_qge): New.
- (__gcc_qunord): New.
- (__gcc_stoq): New.
- (__gcc_dtoq): New.
- (__gcc_qtos): New.
- (__gcc_qtod): New.
- (__gcc_qtoi): New.
- (__gcc_qtou): New.
- (__gcc_itoq): New.
- (__gcc_utoq): New.
- (fmsub): New.
- * config/rs6000/rs6000.c (rs6000_emit_move): Handle TFmode
- constant for soft-float.
- (rs6000_init_libfuncs): Initialize soft-float functions.
- * config/rs6000/libgcc-ppc-glibc.ver: Version soft-float symbols.
- * config/rs6000/rs6000.md (movtf): Allow soft-float.
- (movtf_softfloat): New.
- * config/rs6000/t-ppccomm (TARGET_LIBGCC2_CFLAGS): Add
- -mlong-double-128.
- (ldblspecs): Remove.
- * config/rs6000/sysv4.h (SUBTARGET_OVERRIDE_OPTIONS): Do not warn
- about long double soft float.
-
-diff -urN gcc-4.1.1/gcc/config/rs6000/darwin-ldouble.c gcc-4.1.1-patched/gcc/config/rs6000/darwin-ldouble.c
---- gcc-4.1.1/gcc/config/rs6000/darwin-ldouble.c 2006-03-23 16:23:58.000000000 -0600
-+++ gcc-4.1.1-patched/gcc/config/rs6000/darwin-ldouble.c 2006-09-12 14:30:16.000000000 -0500
-@@ -49,7 +49,8 @@
-
- This code currently assumes big-endian. */
-
--#if (!defined (__NO_FPRS__) && !defined (__LITTLE_ENDIAN__) \
-+#if ((!defined (__NO_FPRS__) || defined (_SOFT_FLOAT)) \
-+ && !defined (__LITTLE_ENDIAN__) \
- && (defined (__MACH__) || defined (__powerpc__) || defined (_AIX)))
-
- #define fabs(x) __builtin_fabs(x)
-@@ -60,14 +61,19 @@
-
- #define nonfinite(a) unlikely (! isless (fabs (a), inf ()))
-
-+/* Define ALIASNAME as a strong alias for NAME. */
-+# define strong_alias(name, aliasname) _strong_alias(name, aliasname)
-+# define _strong_alias(name, aliasname) \
-+ extern __typeof (name) aliasname __attribute__ ((alias (#name)));
-+
- /* All these routines actually take two long doubles as parameters,
- but GCC currently generates poor code when a union is used to turn
- a long double into a pair of doubles. */
-
--extern long double __gcc_qadd (double, double, double, double);
--extern long double __gcc_qsub (double, double, double, double);
--extern long double __gcc_qmul (double, double, double, double);
--extern long double __gcc_qdiv (double, double, double, double);
-+long double __gcc_qadd (double, double, double, double);
-+long double __gcc_qsub (double, double, double, double);
-+long double __gcc_qmul (double, double, double, double);
-+long double __gcc_qdiv (double, double, double, double);
-
- #if defined __ELF__ && defined SHARED \
- && (defined __powerpc64__ || !(defined __linux__ || defined __gnu_hurd__))
-@@ -139,6 +145,10 @@
- return __gcc_qadd (a, b, -c, -d);
- }
-
-+#ifdef _SOFT_FLOAT
-+static double fmsub (double, double, double);
-+#endif
-+
- long double
- __gcc_qmul (double a, double b, double c, double d)
- {
-@@ -154,7 +164,11 @@
- /* Sum terms of two highest orders. */
-
- /* Use fused multiply-add to get low part of a * c. */
-+#ifndef _SOFT_FLOAT
- asm ("fmsub %0,%1,%2,%3" : "=f"(tau) : "f"(a), "f"(c), "f"(t));
-+#else
-+ tau = fmsub (a, c, t);
-+#endif
- v = a*d;
- w = b*c;
- tau += v + w; /* Add in other second-order terms. */
-@@ -187,7 +201,11 @@
- numerically necessary. */
-
- /* Use fused multiply-add to get low part of c * t. */
-+#ifndef _SOFT_FLOAT
- asm ("fmsub %0,%1,%2,%3" : "=f"(sigma) : "f"(c), "f"(t), "f"(s));
-+#else
-+ sigma = fmsub (c, t, s);
-+#endif
- v = a - s;
-
- tau = ((v-sigma)+w)/c; /* Correction to t. */
-@@ -201,4 +219,3959 @@
- return z.ldval;
- }
-
-+#ifdef _SOFT_FLOAT
-+
-+long double __gcc_qneg (double, double);
-+int __gcc_qeq (double, double, double, double);
-+int __gcc_qne (double, double, double, double);
-+int __gcc_qge (double, double, double, double);
-+int __gcc_qle (double, double, double, double);
-+int __gcc_qunord (double, double, double, double);
-+long double __gcc_stoq (float);
-+long double __gcc_dtoq (double);
-+float __gcc_qtos (double, double);
-+double __gcc_qtod (double, double);
-+int __gcc_qtoi (double, double);
-+unsigned int __gcc_qtou (double, double);
-+long double __gcc_itoq (int);
-+long double __gcc_utoq (unsigned int);
-+
-+extern int __eqdf2 (double, double);
-+extern int __ledf2 (double, double);
-+extern int __gedf2 (double, double);
-+extern int __unorddf2 (double, double);
-+
-+/* Negate 'long double' value and return the result. */
-+long double
-+__gcc_qneg (double a, double aa)
-+{
-+ longDblUnion x;
-+
-+ x.dval[0] = -a;
-+ x.dval[1] = -aa;
-+ return x.ldval;
-+}
-+
-+/* Compare two 'long double' values for equality. */
-+int
-+__gcc_qeq (double a, double aa, double c, double cc)
-+{
-+ if (__eqdf2 (a, c) == 0)
-+ return __eqdf2 (aa, cc);
-+ return 1;
-+}
-+
-+strong_alias (__gcc_qeq, __gcc_qne);
-+
-+/* Compare two 'long double' values for less than or equal. */
-+int
-+__gcc_qle (double a, double aa, double c, double cc)
-+{
-+ if (__eqdf2 (a, c) == 0)
-+ return __ledf2 (aa, cc);
-+ return __ledf2 (a, c);
-+}
-+
-+strong_alias (__gcc_qle, __gcc_qlt);
-+
-+/* Compare two 'long double' values for greater than or equal. */
-+int
-+__gcc_qge (double a, double aa, double c, double cc)
-+{
-+ if (__eqdf2 (a, c) == 0)
-+ return __gedf2 (aa, cc);
-+ return __gedf2 (a, c);
-+}
-+
-+strong_alias (__gcc_qge, __gcc_qgt);
-+
-+/* Compare two 'long double' values for unordered. */
-+int
-+__gcc_qunord (double a, double aa, double c, double cc)
-+{
-+ if (__eqdf2 (a, c) == 0)
-+ return __unorddf2 (aa, cc);
-+ return __unorddf2 (a, c);
-+}
-+
-+/* Convert single to long double. */
-+long double
-+__gcc_stoq (float a)
-+{
-+ longDblUnion x;
-+
-+ x.dval[0] = (double) a;
-+ x.dval[1] = 0.0;
-+
-+ return x.ldval;
-+}
-+
-+/* Convert double to long double. */
-+long double
-+__gcc_dtoq (double a)
-+{
-+ longDblUnion x;
-+
-+ x.dval[0] = a;
-+ x.dval[1] = 0.0;
-+
-+ return x.ldval;
-+}
-+
-+/* Convert long double to single. */
-+float
-+__gcc_qtos (double a, double aa __attribute__ ((__unused__)))
-+{
-+ return (float) a;
-+}
-+
-+/* Convert long double to double. */
-+double
-+__gcc_qtod (double a, double aa __attribute__ ((__unused__)))
-+{
-+ return a;
-+}
-+
-+/* Convert long double to int. */
-+int
-+__gcc_qtoi (double a, double aa)
-+{
-+ double z = a + aa;
-+ return (int) z;
-+}
-+
-+/* Convert long double to unsigned int. */
-+unsigned int
-+__gcc_qtou (double a, double aa)
-+{
-+ double z = a + aa;
-+ return (unsigned int) z;
-+}
-+
-+/* Convert int to long double. */
-+long double
-+__gcc_itoq (int a)
-+{
-+ return __gcc_dtoq ((double) a);
-+}
-+
-+/* Convert unsigned int to long double. */
-+long double
-+__gcc_utoq (unsigned int a)
-+{
-+ return __gcc_dtoq ((double) a);
-+}
-+
-+typedef int QItype __attribute__ ((mode (QI)));
-+typedef int SItype __attribute__ ((mode (SI)));
-+typedef int DItype __attribute__ ((mode (DI)));
-+typedef unsigned int UQItype __attribute__ ((mode (QI)));
-+typedef unsigned int USItype __attribute__ ((mode (SI)));
-+typedef unsigned int UDItype __attribute__ ((mode (DI)));
-+
-+typedef unsigned int UHWtype __attribute__ ((mode (HI)));
-+extern const UQItype __clz_tab[256];
-+extern void abort (void);
-+typedef float DFtype __attribute__ ((mode (DF)));
-+
-+union _FP_UNION_D
-+{
-+ DFtype flt;
-+ struct
-+ {
-+
-+ unsigned sign:1;
-+ unsigned exp:11;
-+ unsigned frac1:53 - (((unsigned long) 1 << (53 - 1) % 32) != 0) - 32;
-+ unsigned frac0:32;
-+ } bits __attribute__ ((packed));
-+};
-+typedef float TFtype __attribute__ ((mode (TF)));
-+
-+union _FP_UNION_Q
-+{
-+ TFtype flt;
-+ struct
-+ {
-+
-+ unsigned sign:1;
-+ unsigned exp:15;
-+ unsigned long frac3:113 - (((unsigned long) 1 << (113 - 1) % 32) !=
-+ 0) - (32 * 3);
-+ unsigned long frac2:32;
-+ unsigned long frac1:32;
-+ unsigned long frac0:32;
-+ } bits __attribute__ ((packed));
-+};
-+
-+static double
-+fmsub (double a, double b, double c)
-+{
-+ int _fex = 0;
-+ long A_c __attribute__ ((unused)), A_s, A_e;
-+ unsigned long A_f0, A_f1;
-+ long B_c __attribute__ ((unused)), B_s, B_e;
-+ unsigned long B_f0, B_f1;
-+ long C_c __attribute__ ((unused)), C_s, C_e;
-+ unsigned long C_f0, C_f1;
-+ long X_c __attribute__ ((unused)), X_s, X_e;
-+ unsigned long X_f[4];
-+ long Y_c __attribute__ ((unused)), Y_s, Y_e;
-+ unsigned long Y_f[4];
-+ long Z_c __attribute__ ((unused)), Z_s, Z_e;
-+ unsigned long Z_f[4];
-+ long U_c __attribute__ ((unused)), U_s, U_e;
-+ unsigned long U_f[4];
-+ long V_c __attribute__ ((unused)), V_s, V_e;
-+ unsigned long V_f[4];
-+ long R_c __attribute__ ((unused)), R_s, R_e;
-+ unsigned long R_f0, R_f1;
-+ double r;
-+ long double u, v, x, y, z;
-+
-+/* FP_INIT_ROUNDMODE */
-+ do
-+ {
-+ }
-+ while (0);
-+
-+/* FP_UNPACK_RAW_D (A, a) */
-+ do
-+ {
-+ union _FP_UNION_D _flo;
-+ _flo.flt = (a);
-+ A_f0 = _flo.bits.frac0;
-+ A_f1 = _flo.bits.frac1;
-+ A_e = _flo.bits.exp;
-+ A_s = _flo.bits.sign;
-+ }
-+ while (0);
-+
-+/* FP_UNPACK_RAW_D (B, b) */
-+ do
-+ {
-+ union _FP_UNION_D _flo;
-+ _flo.flt = (b);
-+ B_f0 = _flo.bits.frac0;
-+ B_f1 = _flo.bits.frac1;
-+ B_e = _flo.bits.exp;
-+ B_s = _flo.bits.sign;
-+ }
-+ while (0);
-+
-+/* FP_UNPACK_RAW_D (C, c) */
-+ do
-+ {
-+ union _FP_UNION_D _flo;
-+ _flo.flt = (c);
-+ C_f0 = _flo.bits.frac0;
-+ C_f1 = _flo.bits.frac1;
-+ C_e = _flo.bits.exp;
-+ C_s = _flo.bits.sign;
-+ }
-+ while (0);
-+
-+ /* Extend double to quad. */
-+/* FP_EXTEND(Q,D,4,2,X,A) */
-+ do
-+ {
-+ if (113 < 53 || (32767 - 16383 < 2047 - 1023) || 16383 < 1023 + 53 - 1)
-+ abort ();
-+ X_s = A_s;
-+ do
-+ {
-+ X_f[0] = A_f0;
-+ X_f[1] = A_f1;
-+ X_f[2] = X_f[3] = 0;
-+ }
-+ while (0);
-+ if ((((A_e + 1) & 2047) > 1))
-+ {
-+ X_e = A_e + 16383 - 1023;
-+ do
-+ {
-+ long _up, _down, _skip, _i;
-+ _skip = ((113 - 53)) / 32;
-+ _up = ((113 - 53)) % 32;
-+ _down = 32 - _up;
-+ if (!_up)
-+ for (_i = 3; _i >= _skip; --_i)
-+ X_f[_i] = X_f[_i - _skip];
-+ else
-+ {
-+ for (_i = 3; _i > _skip; --_i)
-+ X_f[_i] =
-+ X_f[_i - _skip] << _up | X_f[_i - _skip - 1] >> _down;
-+ X_f[_i--] = X_f[0] << _up;
-+ }
-+ for (; _i >= 0; --_i)
-+ X_f[_i] = 0;
-+ }
-+ while (0);
-+ }
-+ else
-+ {
-+ if (A_e == 0)
-+ {
-+ if (((A_f1 | A_f0) == 0))
-+ X_e = 0;
-+ else
-+ {
-+ int _lz;
-+ _fex |= (0);
-+ do
-+ {
-+ if (A_f1)
-+ do
-+ {
-+ if (sizeof (unsigned long) ==
-+ sizeof (unsigned int))
-+ _lz = __builtin_clz (A_f1);
-+ else if (sizeof (unsigned long) ==
-+ sizeof (unsigned long))
-+ _lz = __builtin_clzl (A_f1);
-+ else if (sizeof (unsigned long) ==
-+ sizeof (unsigned long long))
-+ _lz = __builtin_clzll (A_f1);
-+ else
-+ abort ();
-+ }
-+ while (0);
-+ else
-+ {
-+ do
-+ {
-+ if (sizeof (unsigned long) ==
-+ sizeof (unsigned int))
-+ _lz = __builtin_clz (A_f0);
-+ else if (sizeof (unsigned long) ==
-+ sizeof (unsigned long))
-+ _lz = __builtin_clzl (A_f0);
-+ else if (sizeof (unsigned long) ==
-+ sizeof (unsigned long long))
-+ _lz = __builtin_clzll (A_f0);
-+ else
-+ abort ();
-+ }
-+ while (0);
-+ _lz += 32;
-+ }
-+ }
-+ while (0);
-+ do
-+ {
-+ long _up, _down, _skip, _i;
-+ _skip = (_lz + 113 - (2 * 32)) / 32;
-+ _up = (_lz + 113 - (2 * 32)) % 32;
-+ _down = 32 - _up;
-+ if (!_up)
-+ for (_i = 3; _i >= _skip; --_i)
-+ X_f[_i] = X_f[_i - _skip];
-+ else
-+ {
-+ for (_i = 3; _i > _skip; --_i)
-+ X_f[_i] =
-+ X_f[_i - _skip] << _up | X_f[_i - _skip -
-+ 1] >> _down;
-+ X_f[_i--] = X_f[0] << _up;
-+ }
-+ for (; _i >= 0; --_i)
-+ X_f[_i] = 0;
-+ }
-+ while (0);
-+ X_e = (16383 - 1023 + 1 + ((2 * 32) - 53) - _lz);
-+ }
-+ }
-+ else
-+ {
-+ X_e = 32767;
-+ if (!((A_f1 | A_f0) == 0))
-+ {
-+ if (!((A_f1) & ((unsigned long) 1 << (53 - 2) % 32)))
-+ _fex |= (0);
-+ do
-+ {
-+ long _up, _down, _skip, _i;
-+ _skip = ((113 - 53)) / 32;
-+ _up = ((113 - 53)) % 32;
-+ _down = 32 - _up;
-+ if (!_up)
-+ for (_i = 3; _i >= _skip; --_i)
-+ X_f[_i] = X_f[_i - _skip];
-+ else
-+ {
-+ for (_i = 3; _i > _skip; --_i)
-+ X_f[_i] =
-+ X_f[_i - _skip] << _up | X_f[_i - _skip -
-+ 1] >> _down;
-+ X_f[_i--] = X_f[0] << _up;
-+ }
-+ for (; _i >= 0; --_i)
-+ X_f[_i] = 0;
-+ }
-+ while (0);
-+ }
-+ }
-+ }
-+ }
-+ while (0);
-+
-+/* FP_EXTEND(Q,D,4,2,Y,B) */
-+ do
-+ {
-+ if (113 < 53 || (32767 - 16383 < 2047 - 1023) || 16383 < 1023 + 53 - 1)
-+ abort ();
-+ Y_s = B_s;
-+ do
-+ {
-+ Y_f[0] = B_f0;
-+ Y_f[1] = B_f1;
-+ Y_f[2] = Y_f[3] = 0;
-+ }
-+ while (0);
-+ if ((((B_e + 1) & 2047) > 1))
-+ {
-+ Y_e = B_e + 16383 - 1023;
-+ do
-+ {
-+ long _up, _down, _skip, _i;
-+ _skip = ((113 - 53)) / 32;
-+ _up = ((113 - 53)) % 32;
-+ _down = 32 - _up;
-+ if (!_up)
-+ for (_i = 3; _i >= _skip; --_i)
-+ Y_f[_i] = Y_f[_i - _skip];
-+ else
-+ {
-+ for (_i = 3; _i > _skip; --_i)
-+ Y_f[_i] =
-+ Y_f[_i - _skip] << _up | Y_f[_i - _skip - 1] >> _down;
-+ Y_f[_i--] = Y_f[0] << _up;
-+ }
-+ for (; _i >= 0; --_i)
-+ Y_f[_i] = 0;
-+ }
-+ while (0);
-+ }
-+ else
-+ {
-+ if (B_e == 0)
-+ {
-+ if (((B_f1 | B_f0) == 0))
-+ Y_e = 0;
-+ else
-+ {
-+ int _lz;
-+ _fex |= (0);
-+ do
-+ {
-+ if (B_f1)
-+ do
-+ {
-+ if (sizeof (unsigned long) ==
-+ sizeof (unsigned int))
-+ _lz = __builtin_clz (B_f1);
-+ else if (sizeof (unsigned long) ==
-+ sizeof (unsigned long))
-+ _lz = __builtin_clzl (B_f1);
-+ else if (sizeof (unsigned long) ==
-+ sizeof (unsigned long long))
-+ _lz = __builtin_clzll (B_f1);
-+ else
-+ abort ();
-+ }
-+ while (0);
-+ else
-+ {
-+ do
-+ {
-+ if (sizeof (unsigned long) ==
-+ sizeof (unsigned int))
-+ _lz = __builtin_clz (B_f0);
-+ else if (sizeof (unsigned long) ==
-+ sizeof (unsigned long))
-+ _lz = __builtin_clzl (B_f0);
-+ else if (sizeof (unsigned long) ==
-+ sizeof (unsigned long long))
-+ _lz = __builtin_clzll (B_f0);
-+ else
-+ abort ();
-+ }
-+ while (0);
-+ _lz += 32;
-+ }
-+ }
-+ while (0);
-+ do
-+ {
-+ long _up, _down, _skip, _i;
-+ _skip = (_lz + 113 - (2 * 32)) / 32;
-+ _up = (_lz + 113 - (2 * 32)) % 32;
-+ _down = 32 - _up;
-+ if (!_up)
-+ for (_i = 3; _i >= _skip; --_i)
-+ Y_f[_i] = Y_f[_i - _skip];
-+ else
-+ {
-+ for (_i = 3; _i > _skip; --_i)
-+ Y_f[_i] =
-+ Y_f[_i - _skip] << _up | Y_f[_i - _skip -
-+ 1] >> _down;
-+ Y_f[_i--] = Y_f[0] << _up;
-+ }
-+ for (; _i >= 0; --_i)
-+ Y_f[_i] = 0;
-+ }
-+ while (0);
-+ Y_e = (16383 - 1023 + 1 + ((2 * 32) - 53) - _lz);
-+ }
-+ }
-+ else
-+ {
-+ Y_e = 32767;
-+ if (!((B_f1 | B_f0) == 0))
-+ {
-+ if (!((B_f1) & ((unsigned long) 1 << (53 - 2) % 32)))
-+ _fex |= (0);
-+ do
-+ {
-+ long _up, _down, _skip, _i;
-+ _skip = ((113 - 53)) / 32;
-+ _up = ((113 - 53)) % 32;
-+ _down = 32 - _up;
-+ if (!_up)
-+ for (_i = 3; _i >= _skip; --_i)
-+ Y_f[_i] = Y_f[_i - _skip];
-+ else
-+ {
-+ for (_i = 3; _i > _skip; --_i)
-+ Y_f[_i] =
-+ Y_f[_i - _skip] << _up | Y_f[_i - _skip -
-+ 1] >> _down;
-+ Y_f[_i--] = Y_f[0] << _up;
-+ }
-+ for (; _i >= 0; --_i)
-+ Y_f[_i] = 0;
-+ }
-+ while (0);
-+ }
-+ }
-+ }
-+ }
-+ while (0);
-+
-+/* FP_EXTEND(Q,D,4,2,Z,C) */
-+ do
-+ {
-+ if (113 < 53 || (32767 - 16383 < 2047 - 1023) || 16383 < 1023 + 53 - 1)
-+ abort ();
-+ Z_s = C_s;
-+ do
-+ {
-+ Z_f[0] = C_f0;
-+ Z_f[1] = C_f1;
-+ Z_f[2] = Z_f[3] = 0;
-+ }
-+ while (0);
-+ if ((((C_e + 1) & 2047) > 1))
-+ {
-+ Z_e = C_e + 16383 - 1023;
-+ do
-+ {
-+ long _up, _down, _skip, _i;
-+ _skip = ((113 - 53)) / 32;
-+ _up = ((113 - 53)) % 32;
-+ _down = 32 - _up;
-+ if (!_up)
-+ for (_i = 3; _i >= _skip; --_i)
-+ Z_f[_i] = Z_f[_i - _skip];
-+ else
-+ {
-+ for (_i = 3; _i > _skip; --_i)
-+ Z_f[_i] =
-+ Z_f[_i - _skip] << _up | Z_f[_i - _skip - 1] >> _down;
-+ Z_f[_i--] = Z_f[0] << _up;
-+ }
-+ for (; _i >= 0; --_i)
-+ Z_f[_i] = 0;
-+ }
-+ while (0);
-+ }
-+ else
-+ {
-+ if (C_e == 0)
-+ {
-+ if (((C_f1 | C_f0) == 0))
-+ Z_e = 0;
-+ else
-+ {
-+ int _lz;
-+ _fex |= (0);
-+ do
-+ {
-+ if (C_f1)
-+ do
-+ {
-+ if (sizeof (unsigned long) ==
-+ sizeof (unsigned int))
-+ _lz = __builtin_clz (C_f1);
-+ else if (sizeof (unsigned long) ==
-+ sizeof (unsigned long))
-+ _lz = __builtin_clzl (C_f1);
-+ else if (sizeof (unsigned long) ==
-+ sizeof (unsigned long long))
-+ _lz = __builtin_clzll (C_f1);
-+ else
-+ abort ();
-+ }
-+ while (0);
-+ else
-+ {
-+ do
-+ {
-+ if (sizeof (unsigned long) ==
-+ sizeof (unsigned int))
-+ _lz = __builtin_clz (C_f0);
-+ else if (sizeof (unsigned long) ==
-+ sizeof (unsigned long))
-+ _lz = __builtin_clzl (C_f0);
-+ else if (sizeof (unsigned long) ==
-+ sizeof (unsigned long long))
-+ _lz = __builtin_clzll (C_f0);
-+ else
-+ abort ();
-+ }
-+ while (0);
-+ _lz += 32;
-+ }
-+ }
-+ while (0);
-+ do
-+ {
-+ long _up, _down, _skip, _i;
-+ _skip = (_lz + 113 - (2 * 32)) / 32;
-+ _up = (_lz + 113 - (2 * 32)) % 32;
-+ _down = 32 - _up;
-+ if (!_up)
-+ for (_i = 3; _i >= _skip; --_i)
-+ Z_f[_i] = Z_f[_i - _skip];
-+ else
-+ {
-+ for (_i = 3; _i > _skip; --_i)
-+ Z_f[_i] =
-+ Z_f[_i - _skip] << _up | Z_f[_i - _skip -
-+ 1] >> _down;
-+ Z_f[_i--] = Z_f[0] << _up;
-+ }
-+ for (; _i >= 0; --_i)
-+ Z_f[_i] = 0;
-+ }
-+ while (0);
-+ Z_e = (16383 - 1023 + 1 + ((2 * 32) - 53) - _lz);
-+ }
-+ }
-+ else
-+ {
-+ Z_e = 32767;
-+ if (!((C_f1 | C_f0) == 0))
-+ {
-+ if (!((C_f1) & ((unsigned long) 1 << (53 - 2) % 32)))
-+ _fex |= (0);
-+ do
-+ {
-+ long _up, _down, _skip, _i;
-+ _skip = ((113 - 53)) / 32;
-+ _up = ((113 - 53)) % 32;
-+ _down = 32 - _up;
-+ if (!_up)
-+ for (_i = 3; _i >= _skip; --_i)
-+ Z_f[_i] = Z_f[_i - _skip];
-+ else
-+ {
-+ for (_i = 3; _i > _skip; --_i)
-+ Z_f[_i] =
-+ Z_f[_i - _skip] << _up | Z_f[_i - _skip -
-+ 1] >> _down;
-+ Z_f[_i--] = Z_f[0] << _up;
-+ }
-+ for (; _i >= 0; --_i)
-+ Z_f[_i] = 0;
-+ }
-+ while (0);
-+ }
-+ }
-+ }
-+ }
-+ while (0);
-+
-+/* FP_PACK_RAW_Q(x,X) */
-+ do
-+ {
-+ union _FP_UNION_Q _flo;
-+ _flo.bits.frac0 = X_f[0];
-+ _flo.bits.frac1 = X_f[1];
-+ _flo.bits.frac2 = X_f[2];
-+ _flo.bits.frac3 = X_f[3];
-+ _flo.bits.exp = X_e;
-+ _flo.bits.sign = X_s;
-+ (x) = _flo.flt;
-+ }
-+ while (0);
-+
-+/* FP_PACK_RAW_Q(y,Y) */
-+ do
-+ {
-+ union _FP_UNION_Q _flo;
-+ _flo.bits.frac0 = Y_f[0];
-+ _flo.bits.frac1 = Y_f[1];
-+ _flo.bits.frac2 = Y_f[2];
-+ _flo.bits.frac3 = Y_f[3];
-+ _flo.bits.exp = Y_e;
-+ _flo.bits.sign = Y_s;
-+ (y) = _flo.flt;
-+ }
-+ while (0);
-+
-+/* FP_PACK_RAW_Q(z,Z) */
-+ do
-+ {
-+ union _FP_UNION_Q _flo;
-+ _flo.bits.frac0 = Z_f[0];
-+ _flo.bits.frac1 = Z_f[1];
-+ _flo.bits.frac2 = Z_f[2];
-+ _flo.bits.frac3 = Z_f[3];
-+ _flo.bits.exp = Z_e;
-+ _flo.bits.sign = Z_s;
-+ (z) = _flo.flt;
-+ }
-+ while (0);
-+
-+/* FP_HANDLE_EXCEPTIONS */
-+ do
-+ {
-+ }
-+ while (0);
-+
-+ /* Multiply. */
-+/* FP_INIT_ROUNDMODE */
-+ do
-+ {
-+ }
-+ while (0);
-+
-+/* FP_UNPACK_Q(X,x) */
-+ do
-+ {
-+ do
-+ {
-+ union _FP_UNION_Q _flo;
-+ _flo.flt = (x);
-+ X_f[0] = _flo.bits.frac0;
-+ X_f[1] = _flo.bits.frac1;
-+ X_f[2] = _flo.bits.frac2;
-+ X_f[3] = _flo.bits.frac3;
-+ X_e = _flo.bits.exp;
-+ X_s = _flo.bits.sign;
-+ }
-+ while (0);
-+ do
-+ {
-+ switch (X_e)
-+ {
-+ default:
-+ (X_f[3]) |= ((unsigned long) 1 << (113 - 1) % 32);
-+ do
-+ {
-+ long _up, _down, _skip, _i;
-+ _skip = (3) / 32;
-+ _up = (3) % 32;
-+ _down = 32 - _up;
-+ if (!_up)
-+ for (_i = 3; _i >= _skip; --_i)
-+ X_f[_i] = X_f[_i - _skip];
-+ else
-+ {
-+ for (_i = 3; _i > _skip; --_i)
-+ X_f[_i] =
-+ X_f[_i - _skip] << _up | X_f[_i - _skip -
-+ 1] >> _down;
-+ X_f[_i--] = X_f[0] << _up;
-+ }
-+ for (; _i >= 0; --_i)
-+ X_f[_i] = 0;
-+ }
-+ while (0);
-+ X_e -= 16383;
-+ X_c = 0;
-+ break;
-+ case 0:
-+ if (((X_f[0] | X_f[1] | X_f[2] | X_f[3]) == 0))
-+ X_c = 1;
-+ else
-+ {
-+ long _shift;
-+ do
-+ {
-+ if (X_f[3])
-+ {
-+ do
-+ {
-+ if (sizeof (unsigned long) ==
-+ sizeof (unsigned int))
-+ _shift = __builtin_clz (X_f[3]);
-+ else if (sizeof (unsigned long) ==
-+ sizeof (unsigned long))
-+ _shift = __builtin_clzl (X_f[3]);
-+ else if (sizeof (unsigned long) ==
-+ sizeof (unsigned long long))
-+ _shift = __builtin_clzll (X_f[3]);
-+ else
-+ abort ();
-+ }
-+ while (0);
-+ }
-+ else if (X_f[2])
-+ {
-+ do
-+ {
-+ if (sizeof (unsigned long) ==
-+ sizeof (unsigned int))
-+ _shift = __builtin_clz (X_f[2]);
-+ else if (sizeof (unsigned long) ==
-+ sizeof (unsigned long))
-+ _shift = __builtin_clzl (X_f[2]);
-+ else if (sizeof (unsigned long) ==
-+ sizeof (unsigned long long))
-+ _shift = __builtin_clzll (X_f[2]);
-+ else
-+ abort ();
-+ }
-+ while (0);
-+ _shift += 32;
-+ }
-+ else if (X_f[1])
-+ {
-+ do
-+ {
-+ if (sizeof (unsigned long) ==
-+ sizeof (unsigned int))
-+ _shift = __builtin_clz (X_f[1]);
-+ else if (sizeof (unsigned long) ==
-+ sizeof (unsigned long))
-+ _shift = __builtin_clzl (X_f[1]);
-+ else if (sizeof (unsigned long) ==
-+ sizeof (unsigned long long))
-+ _shift = __builtin_clzll (X_f[1]);
-+ else
-+ abort ();
-+ }
-+ while (0);
-+ _shift += 32 * 2;
-+ }
-+ else
-+ {
-+ do
-+ {
-+ if (sizeof (unsigned long) ==
-+ sizeof (unsigned int))
-+ _shift = __builtin_clz (X_f[0]);
-+ else if (sizeof (unsigned long) ==
-+ sizeof (unsigned long))
-+ _shift = __builtin_clzl (X_f[0]);
-+ else if (sizeof (unsigned long) ==
-+ sizeof (unsigned long long))
-+ _shift = __builtin_clzll (X_f[0]);
-+ else
-+ abort ();
-+ }
-+ while (0);
-+ _shift += 32 * 3;
-+ }
-+ }
-+ while (0);
-+ _shift -= ((4 * 32) - 113);
-+ do
-+ {
-+ long _up, _down, _skip, _i;
-+ _skip = ((_shift + 3)) / 32;
-+ _up = ((_shift + 3)) % 32;
-+ _down = 32 - _up;
-+ if (!_up)
-+ for (_i = 3; _i >= _skip; --_i)
-+ X_f[_i] = X_f[_i - _skip];
-+ else
-+ {
-+ for (_i = 3; _i > _skip; --_i)
-+ X_f[_i] =
-+ X_f[_i - _skip] << _up | X_f[_i - _skip -
-+ 1] >> _down;
-+ X_f[_i--] = X_f[0] << _up;
-+ }
-+ for (; _i >= 0; --_i)
-+ X_f[_i] = 0;
-+ }
-+ while (0);
-+ X_e -= 16383 - 1 + _shift;
-+ X_c = 0;
-+ _fex |= (0);
-+ }
-+ break;
-+ case 32767:
-+ if (((X_f[0] | X_f[1] | X_f[2] | X_f[3]) == 0))
-+ X_c = 2;
-+ else
-+ {
-+ X_c = 3;
-+ if (!((X_f[3]) & ((unsigned long) 1 << (113 - 2) % 32)))
-+ _fex |= (0);
-+ } break;
-+ }
-+ }
-+ while (0);
-+ }
-+ while (0);
-+
-+/* FP_UNPACK_Q(Y,y) */
-+ do
-+ {
-+ do
-+ {
-+ union _FP_UNION_Q _flo;
-+ _flo.flt = (y);
-+ Y_f[0] = _flo.bits.frac0;
-+ Y_f[1] = _flo.bits.frac1;
-+ Y_f[2] = _flo.bits.frac2;
-+ Y_f[3] = _flo.bits.frac3;
-+ Y_e = _flo.bits.exp;
-+ Y_s = _flo.bits.sign;
-+ }
-+ while (0);
-+ do
-+ {
-+ switch (Y_e)
-+ {
-+ default:
-+ (Y_f[3]) |= ((unsigned long) 1 << (113 - 1) % 32);
-+ do
-+ {
-+ long _up, _down, _skip, _i;
-+ _skip = (3) / 32;
-+ _up = (3) % 32;
-+ _down = 32 - _up;
-+ if (!_up)
-+ for (_i = 3; _i >= _skip; --_i)
-+ Y_f[_i] = Y_f[_i - _skip];
-+ else
-+ {
-+ for (_i = 3; _i > _skip; --_i)
-+ Y_f[_i] =
-+ Y_f[_i - _skip] << _up | Y_f[_i - _skip -
-+ 1] >> _down;
-+ Y_f[_i--] = Y_f[0] << _up;
-+ }
-+ for (; _i >= 0; --_i)
-+ Y_f[_i] = 0;
-+ }
-+ while (0);
-+ Y_e -= 16383;
-+ Y_c = 0;
-+ break;
-+ case 0:
-+ if (((Y_f[0] | Y_f[1] | Y_f[2] | Y_f[3]) == 0))
-+ Y_c = 1;
-+ else
-+ {
-+ long _shift;
-+ do
-+ {
-+ if (Y_f[3])
-+ {
-+ do
-+ {
-+ if (sizeof (unsigned long) ==
-+ sizeof (unsigned int))
-+ _shift = __builtin_clz (Y_f[3]);
-+ else if (sizeof (unsigned long) ==
-+ sizeof (unsigned long))
-+ _shift = __builtin_clzl (Y_f[3]);
-+ else if (sizeof (unsigned long) ==
-+ sizeof (unsigned long long))
-+ _shift = __builtin_clzll (Y_f[3]);
-+ else
-+ abort ();
-+ }
-+ while (0);
-+ }
-+ else if (Y_f[2])
-+ {
-+ do
-+ {
-+ if (sizeof (unsigned long) ==
-+ sizeof (unsigned int))
-+ _shift = __builtin_clz (Y_f[2]);
-+ else if (sizeof (unsigned long) ==
-+ sizeof (unsigned long))
-+ _shift = __builtin_clzl (Y_f[2]);
-+ else if (sizeof (unsigned long) ==
-+ sizeof (unsigned long long))
-+ _shift = __builtin_clzll (Y_f[2]);
-+ else
-+ abort ();
-+ }
-+ while (0);
-+ _shift += 32;
-+ }
-+ else if (Y_f[1])
-+ {
-+ do
-+ {
-+ if (sizeof (unsigned long) ==
-+ sizeof (unsigned int))
-+ _shift = __builtin_clz (Y_f[1]);
-+ else if (sizeof (unsigned long) ==
-+ sizeof (unsigned long))
-+ _shift = __builtin_clzl (Y_f[1]);
-+ else if (sizeof (unsigned long) ==
-+ sizeof (unsigned long long))
-+ _shift = __builtin_clzll (Y_f[1]);
-+ else
-+ abort ();
-+ }
-+ while (0);
-+ _shift += 32 * 2;
-+ }
-+ else
-+ {
-+ do
-+ {
-+ if (sizeof (unsigned long) ==
-+ sizeof (unsigned int))
-+ _shift = __builtin_clz (Y_f[0]);
-+ else if (sizeof (unsigned long) ==
-+ sizeof (unsigned long))
-+ _shift = __builtin_clzl (Y_f[0]);
-+ else if (sizeof (unsigned long) ==
-+ sizeof (unsigned long long))
-+ _shift = __builtin_clzll (Y_f[0]);
-+ else
-+ abort ();
-+ }
-+ while (0);
-+ _shift += 32 * 3;
-+ }
-+ }
-+ while (0);
-+ _shift -= ((4 * 32) - 113);
-+ do
-+ {
-+ long _up, _down, _skip, _i;
-+ _skip = ((_shift + 3)) / 32;
-+ _up = ((_shift + 3)) % 32;
-+ _down = 32 - _up;
-+ if (!_up)
-+ for (_i = 3; _i >= _skip; --_i)
-+ Y_f[_i] = Y_f[_i - _skip];
-+ else
-+ {
-+ for (_i = 3; _i > _skip; --_i)
-+ Y_f[_i] =
-+ Y_f[_i - _skip] << _up | Y_f[_i - _skip -
-+ 1] >> _down;
-+ Y_f[_i--] = Y_f[0] << _up;
-+ }
-+ for (; _i >= 0; --_i)
-+ Y_f[_i] = 0;
-+ }
-+ while (0);
-+ Y_e -= 16383 - 1 + _shift;
-+ Y_c = 0;
-+ _fex |= (0);
-+ }
-+ break;
-+ case 32767:
-+ if (((Y_f[0] | Y_f[1] | Y_f[2] | Y_f[3]) == 0))
-+ Y_c = 2;
-+ else
-+ {
-+ Y_c = 3;
-+ if (!((Y_f[3]) & ((unsigned long) 1 << (113 - 2) % 32)))
-+ _fex |= (0);
-+ } break;
-+ }
-+ }
-+ while (0);
-+ }
-+ while (0);
-+
-+/* FP_MUL_Q(U,X,Y) */
-+ do
-+ {
-+ U_s = X_s ^ Y_s;
-+ switch ((((X_c) << 2) | (Y_c)))
-+ {
-+ case (((0) << 2) | (0)):
-+ U_c = 0;
-+ U_e = X_e + Y_e + 1;
-+ do
-+ {
-+ unsigned long _z_f[8];
-+ unsigned long _b_f0, _b_f1;
-+ unsigned long _c_f0, _c_f1;
-+ unsigned long _d_f0, _d_f1;
-+ unsigned long _e_f0, _e_f1;
-+ unsigned long _f_f0, _f_f1;
-+ do
-+ {
-+ USItype __m0 = (X_f[0]), __m1 = (Y_f[0]);
-+ __asm__ ("mulhwu %0,%1,%2": "=r" ((_z_f[1])):"%r" (X_f[0]),
-+ "r" (Y_f
-+ [0]));
-+ ((_z_f[0])) = __m0 * __m1;
-+ }
-+ while (0);
-+ do
-+ {
-+ USItype __m0 = (X_f[0]), __m1 = (Y_f[1]);
-+ __asm__ ("mulhwu %0,%1,%2": "=r" (_b_f1):"%r" (X_f[0]),
-+ "r" (Y_f
-+ [1]));
-+ (_b_f0) = __m0 * __m1;
-+ }
-+ while (0);
-+ do
-+ {
-+ USItype __m0 = (X_f[1]), __m1 = (Y_f[0]);
-+ __asm__ ("mulhwu %0,%1,%2": "=r" (_c_f1):"%r" (X_f[1]),
-+ "r" (Y_f
-+ [0]));
-+ (_c_f0) = __m0 * __m1;
-+ }
-+ while (0);
-+ do
-+ {
-+ USItype __m0 = (X_f[1]), __m1 = (Y_f[1]);
-+ __asm__ ("mulhwu %0,%1,%2": "=r" (_d_f1):"%r" (X_f[1]),
-+ "r" (Y_f
-+ [1]));
-+ (_d_f0) = __m0 * __m1;
-+ }
-+ while (0);
-+ do
-+ {
-+ USItype __m0 = (X_f[0]), __m1 = (Y_f[2]);
-+ __asm__ ("mulhwu %0,%1,%2": "=r" (_e_f1):"%r" (X_f[0]),
-+ "r" (Y_f
-+ [2]));
-+ (_e_f0) = __m0 * __m1;
-+ }
-+ while (0);
-+ do
-+ {
-+ USItype __m0 = (X_f[2]), __m1 = (Y_f[0]);
-+ __asm__ ("mulhwu %0,%1,%2": "=r" (_f_f1):"%r" (X_f[2]),
-+ "r" (Y_f
-+ [0]));
-+ (_f_f0) = __m0 * __m1;
-+ }
-+ while (0);
-+ do
-+ {
-+ unsigned long _c1, _c2;
-+ (_z_f[1]) = _b_f0 + (_z_f[1]);
-+ _c1 = (_z_f[1]) < _b_f0;
-+ (_z_f[2]) = _b_f1 + 0;
-+ _c2 = (_z_f[2]) < _b_f1;
-+ (_z_f[2]) += _c1;
-+ _c2 |= (_z_f[2]) < _c1;
-+ (_z_f[3]) = 0 + 0 + _c2;
-+ }
-+ while (0);
-+ do
-+ {
-+ unsigned long _c1, _c2;
-+ (_z_f[1]) = _c_f0 + (_z_f[1]);
-+ _c1 = (_z_f[1]) < _c_f0;
-+ (_z_f[2]) = _c_f1 + (_z_f[2]);
-+ _c2 = (_z_f[2]) < _c_f1;
-+ (_z_f[2]) += _c1;
-+ _c2 |= (_z_f[2]) < _c1;
-+ (_z_f[3]) = 0 + (_z_f[3]) + _c2;
-+ }
-+ while (0);
-+ do
-+ {
-+ unsigned long _c1, _c2;
-+ (_z_f[2]) = _d_f0 + (_z_f[2]);
-+ _c1 = (_z_f[2]) < _d_f0;
-+ (_z_f[3]) = _d_f1 + (_z_f[3]);
-+ _c2 = (_z_f[3]) < _d_f1;
-+ (_z_f[3]) += _c1;
-+ _c2 |= (_z_f[3]) < _c1;
-+ (_z_f[4]) = 0 + 0 + _c2;
-+ }
-+ while (0);
-+ do
-+ {
-+ unsigned long _c1, _c2;
-+ (_z_f[2]) = _e_f0 + (_z_f[2]);
-+ _c1 = (_z_f[2]) < _e_f0;
-+ (_z_f[3]) = _e_f1 + (_z_f[3]);
-+ _c2 = (_z_f[3]) < _e_f1;
-+ (_z_f[3]) += _c1;
-+ _c2 |= (_z_f[3]) < _c1;
-+ (_z_f[4]) = 0 + (_z_f[4]) + _c2;
-+ }
-+ while (0);
-+ do
-+ {
-+ unsigned long _c1, _c2;
-+ (_z_f[2]) = _f_f0 + (_z_f[2]);
-+ _c1 = (_z_f[2]) < _f_f0;
-+ (_z_f[3]) = _f_f1 + (_z_f[3]);
-+ _c2 = (_z_f[3]) < _f_f1;
-+ (_z_f[3]) += _c1;
-+ _c2 |= (_z_f[3]) < _c1;
-+ (_z_f[4]) = 0 + (_z_f[4]) + _c2;
-+ }
-+ while (0);
-+ do
-+ {
-+ USItype __m0 = (X_f[0]), __m1 = (Y_f[3]);
-+ __asm__ ("mulhwu %0,%1,%2": "=r" (_b_f1):"%r" (X_f[0]),
-+ "r" (Y_f
-+ [3]));
-+ (_b_f0) = __m0 * __m1;
-+ }
-+ while (0);
-+ do
-+ {
-+ USItype __m0 = (X_f[3]), __m1 = (Y_f[0]);
-+ __asm__ ("mulhwu %0,%1,%2": "=r" (_c_f1):"%r" (X_f[3]),
-+ "r" (Y_f
-+ [0]));
-+ (_c_f0) = __m0 * __m1;
-+ }
-+ while (0);
-+ do
-+ {
-+ USItype __m0 = (X_f[1]), __m1 = (Y_f[2]);
-+ __asm__ ("mulhwu %0,%1,%2": "=r" (_d_f1):"%r" (X_f[1]),
-+ "r" (Y_f
-+ [2]));
-+ (_d_f0) = __m0 * __m1;
-+ }
-+ while (0);
-+ do
-+ {
-+ USItype __m0 = (X_f[2]), __m1 = (Y_f[1]);
-+ __asm__ ("mulhwu %0,%1,%2": "=r" (_e_f1):"%r" (X_f[2]),
-+ "r" (Y_f
-+ [1]));
-+ (_e_f0) = __m0 * __m1;
-+ }
-+ while (0);
-+ do
-+ {
-+ unsigned long _c1, _c2;
-+ (_z_f[3]) = _b_f0 + (_z_f[3]);
-+ _c1 = (_z_f[3]) < _b_f0;
-+ (_z_f[4]) = _b_f1 + (_z_f[4]);
-+ _c2 = (_z_f[4]) < _b_f1;
-+ (_z_f[4]) += _c1;
-+ _c2 |= (_z_f[4]) < _c1;
-+ (_z_f[5]) = 0 + 0 + _c2;
-+ }
-+ while (0);
-+ do
-+ {
-+ unsigned long _c1, _c2;
-+ (_z_f[3]) = _c_f0 + (_z_f[3]);
-+ _c1 = (_z_f[3]) < _c_f0;
-+ (_z_f[4]) = _c_f1 + (_z_f[4]);
-+ _c2 = (_z_f[4]) < _c_f1;
-+ (_z_f[4]) += _c1;
-+ _c2 |= (_z_f[4]) < _c1;
-+ (_z_f[5]) = 0 + (_z_f[5]) + _c2;
-+ }
-+ while (0);
-+ do
-+ {
-+ unsigned long _c1, _c2;
-+ (_z_f[3]) = _d_f0 + (_z_f[3]);
-+ _c1 = (_z_f[3]) < _d_f0;
-+ (_z_f[4]) = _d_f1 + (_z_f[4]);
-+ _c2 = (_z_f[4]) < _d_f1;
-+ (_z_f[4]) += _c1;
-+ _c2 |= (_z_f[4]) < _c1;
-+ (_z_f[5]) = 0 + (_z_f[5]) + _c2;
-+ }
-+ while (0);
-+ do
-+ {
-+ unsigned long _c1, _c2;
-+ (_z_f[3]) = _e_f0 + (_z_f[3]);
-+ _c1 = (_z_f[3]) < _e_f0;
-+ (_z_f[4]) = _e_f1 + (_z_f[4]);
-+ _c2 = (_z_f[4]) < _e_f1;
-+ (_z_f[4]) += _c1;
-+ _c2 |= (_z_f[4]) < _c1;
-+ (_z_f[5]) = 0 + (_z_f[5]) + _c2;
-+ }
-+ while (0);
-+ do
-+ {
-+ USItype __m0 = (X_f[2]), __m1 = (Y_f[2]);
-+ __asm__ ("mulhwu %0,%1,%2": "=r" (_b_f1):"%r" (X_f[2]),
-+ "r" (Y_f
-+ [2]));
-+ (_b_f0) = __m0 * __m1;
-+ }
-+ while (0);
-+ do
-+ {
-+ USItype __m0 = (X_f[1]), __m1 = (Y_f[3]);
-+ __asm__ ("mulhwu %0,%1,%2": "=r" (_c_f1):"%r" (X_f[1]),
-+ "r" (Y_f
-+ [3]));
-+ (_c_f0) = __m0 * __m1;
-+ }
-+ while (0);
-+ do
-+ {
-+ USItype __m0 = (X_f[3]), __m1 = (Y_f[1]);
-+ __asm__ ("mulhwu %0,%1,%2": "=r" (_d_f1):"%r" (X_f[3]),
-+ "r" (Y_f
-+ [1]));
-+ (_d_f0) = __m0 * __m1;
-+ }
-+ while (0);
-+ do
-+ {
-+ USItype __m0 = (X_f[2]), __m1 = (Y_f[3]);
-+ __asm__ ("mulhwu %0,%1,%2": "=r" (_e_f1):"%r" (X_f[2]),
-+ "r" (Y_f
-+ [3]));
-+ (_e_f0) = __m0 * __m1;
-+ }
-+ while (0);
-+ do
-+ {
-+ USItype __m0 = (X_f[3]), __m1 = (Y_f[2]);
-+ __asm__ ("mulhwu %0,%1,%2": "=r" (_f_f1):"%r" (X_f[3]),
-+ "r" (Y_f
-+ [2]));
-+ (_f_f0) = __m0 * __m1;
-+ }
-+ while (0);
-+ do
-+ {
-+ unsigned long _c1, _c2;
-+ (_z_f[4]) = _b_f0 + (_z_f[4]);
-+ _c1 = (_z_f[4]) < _b_f0;
-+ (_z_f[5]) = _b_f1 + (_z_f[5]);
-+ _c2 = (_z_f[5]) < _b_f1;
-+ (_z_f[5]) += _c1;
-+ _c2 |= (_z_f[5]) < _c1;
-+ (_z_f[6]) = 0 + 0 + _c2;
-+ }
-+ while (0);
-+ do
-+ {
-+ unsigned long _c1, _c2;
-+ (_z_f[4]) = _c_f0 + (_z_f[4]);
-+ _c1 = (_z_f[4]) < _c_f0;
-+ (_z_f[5]) = _c_f1 + (_z_f[5]);
-+ _c2 = (_z_f[5]) < _c_f1;
-+ (_z_f[5]) += _c1;
-+ _c2 |= (_z_f[5]) < _c1;
-+ (_z_f[6]) = 0 + (_z_f[6]) + _c2;
-+ }
-+ while (0);
-+ do
-+ {
-+ unsigned long _c1, _c2;
-+ (_z_f[4]) = _d_f0 + (_z_f[4]);
-+ _c1 = (_z_f[4]) < _d_f0;
-+ (_z_f[5]) = _d_f1 + (_z_f[5]);
-+ _c2 = (_z_f[5]) < _d_f1;
-+ (_z_f[5]) += _c1;
-+ _c2 |= (_z_f[5]) < _c1;
-+ (_z_f[6]) = 0 + (_z_f[6]) + _c2;
-+ }
-+ while (0);
-+ do
-+ {
-+ unsigned long _c1, _c2;
-+ (_z_f[5]) = _e_f0 + (_z_f[5]);
-+ _c1 = (_z_f[5]) < _e_f0;
-+ (_z_f[6]) = _e_f1 + (_z_f[6]);
-+ _c2 = (_z_f[6]) < _e_f1;
-+ (_z_f[6]) += _c1;
-+ _c2 |= (_z_f[6]) < _c1;
-+ (_z_f[7]) = 0 + 0 + _c2;
-+ }
-+ while (0);
-+ do
-+ {
-+ unsigned long _c1, _c2;
-+ (_z_f[5]) = _f_f0 + (_z_f[5]);
-+ _c1 = (_z_f[5]) < _f_f0;
-+ (_z_f[6]) = _f_f1 + (_z_f[6]);
-+ _c2 = (_z_f[6]) < _f_f1;
-+ (_z_f[6]) += _c1;
-+ _c2 |= (_z_f[6]) < _c1;
-+ (_z_f[7]) = 0 + (_z_f[7]) + _c2;
-+ }
-+ while (0);
-+ do
-+ {
-+ USItype __m0 = (X_f[3]), __m1 = (Y_f[3]);
-+ __asm__ ("mulhwu %0,%1,%2": "=r" (_b_f1):"%r" (X_f[3]),
-+ "r" (Y_f
-+ [3]));
-+ (_b_f0) = __m0 * __m1;
-+ }
-+ while (0);
-+ do
-+ {
-+ if (__builtin_constant_p ((_z_f[7])) && ((_z_f[7])) == 0)
-+ __asm__ ("{a%I4|add%I4c} %1,%3,%4\n\t{aze|addze} %0,%2": "=r" ((_z_f[7])), "=&r" ((_z_f[6])):"r" (_b_f1), "%r" (_b_f0),
-+ "rI" ((_z_f
-+ [6])));
-+ else if (__builtin_constant_p ((_z_f[7]))
-+ && ((_z_f[7])) == ~(USItype) 0)
-+ __asm__ ("{a%I4|add%I4c} %1,%3,%4\n\t{ame|addme} %0,%2": "=r" ((_z_f[7])), "=&r" ((_z_f[6])):"r" (_b_f1), "%r" (_b_f0),
-+ "rI" ((_z_f
-+ [6])));
-+ else
-+ __asm__ ("{a%I5|add%I5c} %1,%4,%5\n\t{ae|adde} %0,%2,%3": "=r" ((_z_f[7])), "=&r" ((_z_f[6])):"%r" (_b_f1), "r" ((_z_f[7])), "%r" (_b_f0),
-+ "rI" ((_z_f
-+ [6])));
-+ }
-+ while (0);
-+ do
-+ {
-+ long _up, _down, _skip, _i;
-+ unsigned long _s;
-+ _skip = ((3 + 113) - 1) / 32;
-+ _down = ((3 + 113) - 1) % 32;
-+ _up = 32 - _down;
-+ for (_s = _i = 0; _i < _skip; ++_i)
-+ _s |= _z_f[_i];
-+ if (!_down)
-+ for (_i = 0; _i <= 7 - _skip; ++_i)
-+ _z_f[_i] = _z_f[_i + _skip];
-+ else
-+ {
-+ _s |= _z_f[_i] << _up;
-+ for (_i = 0; _i < 7 - _skip; ++_i)
-+ _z_f[_i] =
-+ _z_f[_i + _skip] >> _down | _z_f[_i + _skip +
-+ 1] << _up;
-+ _z_f[_i++] = _z_f[7] >> _down;
-+ }
-+ for (; _i < 8; ++_i)
-+ _z_f[_i] = 0;
-+ _z_f[0] |= (_s != 0);
-+ }
-+ while (0);
-+ (U_f[3] = (_z_f[3]), U_f[2] = (_z_f[2]), U_f[1] =
-+ (_z_f[1]), U_f[0] = (_z_f[0]));
-+ }
-+ while (0);
-+ if (((U_f[3]) & ((unsigned long) 1 << ((3 + 113) % 32))))
-+ do
-+ {
-+ int _sticky;
-+ do
-+ {
-+ long _up, _down, _skip, _i;
-+ unsigned long _s;
-+ _skip = (1) / 32;
-+ _down = (1) % 32;
-+ _up = 32 - _down;
-+ for (_s = _i = 0; _i < _skip; ++_i)
-+ _s |= U_f[_i];
-+ if (!_down)
-+ for (_i = 0; _i <= 3 - _skip; ++_i)
-+ U_f[_i] = U_f[_i + _skip];
-+ else
-+ {
-+ _s |= U_f[_i] << _up;
-+ for (_i = 0; _i < 3 - _skip; ++_i)
-+ U_f[_i] =
-+ U_f[_i + _skip] >> _down | U_f[_i + _skip +
-+ 1] << _up;
-+ U_f[_i++] = U_f[3] >> _down;
-+ }
-+ for (; _i < 4; ++_i)
-+ U_f[_i] = 0;
-+ _sticky = (_s != 0);
-+ }
-+ while (0);
-+ U_f[0] |= _sticky;
-+ }
-+ while (0);
-+ else
-+ U_e--;
-+ break;
-+ case (((3) << 2) | (3)):
-+ do
-+ {
-+ if (((X_f[3]) & ((unsigned long) 1 << (113 - 2) % 32))
-+ && !((Y_f[3]) & ((unsigned long) 1 << (113 - 2) % 32)))
-+ {
-+ U_s = Y_s;
-+ (U_f[0] = Y_f[0], U_f[1] = Y_f[1], U_f[2] = Y_f[2], U_f[3] =
-+ Y_f[3]);
-+ }
-+ else
-+ {
-+ U_s = X_s;
-+ (U_f[0] = X_f[0], U_f[1] = X_f[1], U_f[2] = X_f[2], U_f[3] =
-+ X_f[3]);
-+ }
-+ U_c = 3;
-+ }
-+ while (0);
-+ break;
-+ case (((3) << 2) | (0)):
-+ case (((3) << 2) | (2)):
-+ case (((3) << 2) | (1)):
-+ U_s = X_s;
-+ case (((2) << 2) | (2)):
-+ case (((2) << 2) | (0)):
-+ case (((1) << 2) | (0)):
-+ case (((1) << 2) | (1)):
-+ (U_f[0] = X_f[0], U_f[1] = X_f[1], U_f[2] = X_f[2], U_f[3] =
-+ X_f[3]);
-+ U_c = X_c;
-+ break;
-+ case (((0) << 2) | (3)):
-+ case (((2) << 2) | (3)):
-+ case (((1) << 2) | (3)):
-+ U_s = Y_s;
-+ case (((0) << 2) | (2)):
-+ case (((0) << 2) | (1)):
-+ (U_f[0] = Y_f[0], U_f[1] = Y_f[1], U_f[2] = Y_f[2], U_f[3] =
-+ Y_f[3]);
-+ U_c = Y_c;
-+ break;
-+ case (((2) << 2) | (1)):
-+ case (((1) << 2) | (2)):
-+ U_s = 0;
-+ U_c = 3;
-+ (U_f[3] =
-+ ((((unsigned long) 1 << (113 - 2) % 32) << 1) - 1), U_f[2] =
-+ -1, U_f[1] = -1, U_f[0] = -1);
-+ _fex |= (0);
-+ break;
-+ default:
-+ abort ();
-+ }
-+ }
-+ while (0);
-+
-+/* FP_PACK_Q(u,U) */
-+ do
-+ {
-+ do
-+ {
-+ switch (U_c)
-+ {
-+ case 0:
-+ U_e += 16383;
-+ if (U_e > 0)
-+ {
-+ do
-+ {
-+ if ((U_f[0]) & 7)
-+ _fex |= (0);
-+ switch (0)
-+ {
-+ case 0:
-+ do
-+ {
-+ if (((U_f[0]) & 15) != ((unsigned long) 1 << 2))
-+ do
-+ {
-+ unsigned long _t;
-+ _t =
-+ ((U_f[0] +=
-+ ((unsigned long) 1 << 2)) <
-+ ((unsigned long) 1 << 2));
-+ U_f[1] += _t;
-+ _t = (U_f[1] < _t);
-+ U_f[2] += _t;
-+ _t = (U_f[2] < _t);
-+ U_f[3] += _t;
-+ }
-+ while (0);
-+ }
-+ while (0);
-+ break;
-+ case 1:
-+ (void) 0;
-+ break;
-+ case 2:
-+ do
-+ {
-+ if (!U_s && ((U_f[0]) & 7))
-+ do
-+ {
-+ unsigned long _t;
-+ _t =
-+ ((U_f[0] +=
-+ ((unsigned long) 1 << 3)) <
-+ ((unsigned long) 1 << 3));
-+ U_f[1] += _t;
-+ _t = (U_f[1] < _t);
-+ U_f[2] += _t;
-+ _t = (U_f[2] < _t);
-+ U_f[3] += _t;
-+ }
-+ while (0);
-+ }
-+ while (0);
-+ break;
-+ case 3:
-+ do
-+ {
-+ if (U_s && ((U_f[0]) & 7))
-+ do
-+ {
-+ unsigned long _t;
-+ _t =
-+ ((U_f[0] +=
-+ ((unsigned long) 1 << 3)) <
-+ ((unsigned long) 1 << 3));
-+ U_f[1] += _t;
-+ _t = (U_f[1] < _t);
-+ U_f[2] += _t;
-+ _t = (U_f[2] < _t);
-+ U_f[3] += _t;
-+ }
-+ while (0);
-+ }
-+ while (0);
-+ break;
-+ }
-+ }
-+ while (0);
-+ if (((U_f[3]) & ((unsigned long) 1 << ((3 + 113) % 32))))
-+ {
-+ ((U_f[3]) &= ~((unsigned long) 1 << ((3 + 113) % 32)));
-+ U_e++;
-+ }
-+ do
-+ {
-+ long _up, _down, _skip, _i;
-+ _skip = (3) / 32;
-+ _down = (3) % 32;
-+ _up = 32 - _down;
-+ if (!_down)
-+ for (_i = 0; _i <= 3 - _skip; ++_i)
-+ U_f[_i] = U_f[_i + _skip];
-+ else
-+ {
-+ for (_i = 0; _i < 3 - _skip; ++_i)
-+ U_f[_i] =
-+ U_f[_i + _skip] >> _down | U_f[_i + _skip +
-+ 1] << _up;
-+ U_f[_i++] = U_f[3] >> _down;
-+ }
-+ for (; _i < 4; ++_i)
-+ U_f[_i] = 0;
-+ }
-+ while (0);
-+ if (U_e >= 32767)
-+ {
-+ switch (0)
-+ {
-+ case 0:
-+ U_c = 2;
-+ break;
-+ case 2:
-+ if (!U_s)
-+ U_c = 2;
-+ break;
-+ case 3:
-+ if (U_s)
-+ U_c = 2;
-+ break;
-+ }
-+ if (U_c == 2)
-+ {
-+ U_e = 32767;
-+ (U_f[3] = 0, U_f[2] = 0, U_f[1] = 0, U_f[0] = 0);
-+ }
-+ else
-+ {
-+ U_e = 32767 - 1;
-+ (U_f[3] = (~(signed long) 0), U_f[2] =
-+ (~(signed long) 0), U_f[1] =
-+ (~(signed long) 0), U_f[0] = (~(signed long) 0));
-+ } _fex |= (0);
-+ _fex |= (0);
-+ }
-+ }
-+ else
-+ {
-+ U_e = -U_e + 1;
-+ if (U_e <= (3 + 113))
-+ {
-+ do
-+ {
-+ int _sticky;
-+ do
-+ {
-+ long _up, _down, _skip, _i;
-+ unsigned long _s;
-+ _skip = (U_e) / 32;
-+ _down = (U_e) % 32;
-+ _up = 32 - _down;
-+ for (_s = _i = 0; _i < _skip; ++_i)
-+ _s |= U_f[_i];
-+ if (!_down)
-+ for (_i = 0; _i <= 3 - _skip; ++_i)
-+ U_f[_i] = U_f[_i + _skip];
-+ else
-+ {
-+ _s |= U_f[_i] << _up;
-+ for (_i = 0; _i < 3 - _skip; ++_i)
-+ U_f[_i] =
-+ U_f[_i + _skip] >> _down | U_f[_i +
-+ _skip +
-+ 1] <<
-+ _up;
-+ U_f[_i++] = U_f[3] >> _down;
-+ }
-+ for (; _i < 4; ++_i)
-+ U_f[_i] = 0;
-+ _sticky = (_s != 0);
-+ }
-+ while (0);
-+ U_f[0] |= _sticky;
-+ }
-+ while (0);
-+ do
-+ {
-+ if ((U_f[0]) & 7)
-+ _fex |= (0);
-+ switch (0)
-+ {
-+ case 0:
-+ do
-+ {
-+ if (((U_f[0]) & 15) !=
-+ ((unsigned long) 1 << 2))
-+ do
-+ {
-+ unsigned long _t;
-+ _t =
-+ ((U_f[0] +=
-+ ((unsigned long) 1 << 2)) <
-+ ((unsigned long) 1 << 2));
-+ U_f[1] += _t;
-+ _t = (U_f[1] < _t);
-+ U_f[2] += _t;
-+ _t = (U_f[2] < _t);
-+ U_f[3] += _t;
-+ }
-+ while (0);
-+ }
-+ while (0);
-+ break;
-+ case 1:
-+ (void) 0;
-+ break;
-+ case 2:
-+ do
-+ {
-+ if (!U_s && ((U_f[0]) & 7))
-+ do
-+ {
-+ unsigned long _t;
-+ _t =
-+ ((U_f[0] +=
-+ ((unsigned long) 1 << 3)) <
-+ ((unsigned long) 1 << 3));
-+ U_f[1] += _t;
-+ _t = (U_f[1] < _t);
-+ U_f[2] += _t;
-+ _t = (U_f[2] < _t);
-+ U_f[3] += _t;
-+ }
-+ while (0);
-+ }
-+ while (0);
-+ break;
-+ case 3:
-+ do
-+ {
-+ if (U_s && ((U_f[0]) & 7))
-+ do
-+ {
-+ unsigned long _t;
-+ _t =
-+ ((U_f[0] +=
-+ ((unsigned long) 1 << 3)) <
-+ ((unsigned long) 1 << 3));
-+ U_f[1] += _t;
-+ _t = (U_f[1] < _t);
-+ U_f[2] += _t;
-+ _t = (U_f[2] < _t);
-+ U_f[3] += _t;
-+ }
-+ while (0);
-+ }
-+ while (0);
-+ break;
-+ }
-+ }
-+ while (0);
-+ if ((U_f[3]) &
-+ (((unsigned long) 1 << ((3 + 113) % 32)) >> 1))
-+ {
-+ U_e = 1;
-+ (U_f[3] = 0, U_f[2] = 0, U_f[1] = 0, U_f[0] = 0);
-+ }
-+ else
-+ {
-+ U_e = 0;
-+ do
-+ {
-+ long _up, _down, _skip, _i;
-+ _skip = (3) / 32;
-+ _down = (3) % 32;
-+ _up = 32 - _down;
-+ if (!_down)
-+ for (_i = 0; _i <= 3 - _skip; ++_i)
-+ U_f[_i] = U_f[_i + _skip];
-+ else
-+ {
-+ for (_i = 0; _i < 3 - _skip; ++_i)
-+ U_f[_i] =
-+ U_f[_i + _skip] >> _down | U_f[_i +
-+ _skip +
-+ 1] <<
-+ _up;
-+ U_f[_i++] = U_f[3] >> _down;
-+ }
-+ for (; _i < 4; ++_i)
-+ U_f[_i] = 0;
-+ }
-+ while (0);
-+ _fex |= (0);
-+ }
-+ }
-+ else
-+ {
-+ U_e = 0;
-+ if (!((U_f[0] | U_f[1] | U_f[2] | U_f[3]) == 0))
-+ {
-+ (U_f[3] = 0, U_f[2] = 0, U_f[1] = 0, U_f[0] = 1);
-+ do
-+ {
-+ if ((U_f[0]) & 7)
-+ _fex |= (0);
-+ switch (0)
-+ {
-+ case 0:
-+ do
-+ {
-+ if (((U_f[0]) & 15) !=
-+ ((unsigned long) 1 << 2))
-+ do
-+ {
-+ unsigned long _t;
-+ _t =
-+ ((U_f[0] +=
-+ ((unsigned long) 1 << 2)) <
-+ ((unsigned long) 1 << 2));
-+ U_f[1] += _t;
-+ _t = (U_f[1] < _t);
-+ U_f[2] += _t;
-+ _t = (U_f[2] < _t);
-+ U_f[3] += _t;
-+ }
-+ while (0);
-+ }
-+ while (0);
-+ break;
-+ case 1:
-+ (void) 0;
-+ break;
-+ case 2:
-+ do
-+ {
-+ if (!U_s && ((U_f[0]) & 7))
-+ do
-+ {
-+ unsigned long _t;
-+ _t =
-+ ((U_f[0] +=
-+ ((unsigned long) 1 << 3)) <
-+ ((unsigned long) 1 << 3));
-+ U_f[1] += _t;
-+ _t = (U_f[1] < _t);
-+ U_f[2] += _t;
-+ _t = (U_f[2] < _t);
-+ U_f[3] += _t;
-+ }
-+ while (0);
-+ }
-+ while (0);
-+ break;
-+ case 3:
-+ do
-+ {
-+ if (U_s && ((U_f[0]) & 7))
-+ do
-+ {
-+ unsigned long _t;
-+ _t =
-+ ((U_f[0] +=
-+ ((unsigned long) 1 << 3)) <
-+ ((unsigned long) 1 << 3));
-+ U_f[1] += _t;
-+ _t = (U_f[1] < _t);
-+ U_f[2] += _t;
-+ _t = (U_f[2] < _t);
-+ U_f[3] += _t;
-+ }
-+ while (0);
-+ }
-+ while (0);
-+ break;
-+ }
-+ }
-+ while (0);
-+ (U_f[0]) >>= (3);
-+ }
-+ _fex |= (0);
-+ }
-+ }
-+ break;
-+ case 1:
-+ U_e = 0;
-+ (U_f[3] = 0, U_f[2] = 0, U_f[1] = 0, U_f[0] = 0);
-+ break;
-+ case 2:
-+ U_e = 32767;
-+ (U_f[3] = 0, U_f[2] = 0, U_f[1] = 0, U_f[0] = 0);
-+ break;
-+ case 3:
-+ U_e = 32767;
-+ if (!1)
-+ {
-+ (U_f[3] =
-+ ((((unsigned long) 1 << (113 - 2) % 32) << 1) - 1),
-+ U_f[2] = -1, U_f[1] = -1, U_f[0] = -1);
-+ U_s = 0;
-+ }
-+ else
-+ (U_f[3]) |= ((unsigned long) 1 << (113 - 2) % 32);
-+ break;
-+ }
-+ }
-+ while (0);
-+ do
-+ {
-+ union _FP_UNION_Q _flo;
-+ _flo.bits.frac0 = U_f[0];
-+ _flo.bits.frac1 = U_f[1];
-+ _flo.bits.frac2 = U_f[2];
-+ _flo.bits.frac3 = U_f[3];
-+ _flo.bits.exp = U_e;
-+ _flo.bits.sign = U_s;
-+ (u) = _flo.flt;
-+ }
-+ while (0);
-+ }
-+ while (0);
-+
-+/* FP_HANDLE_EXCEPTIONS */
-+ do
-+ {
-+ }
-+ while (0);
-+
-+ /* Subtract. */
-+/* FP_INIT_ROUNDMODE */
-+ do
-+ {
-+ }
-+ while (0);
-+
-+/* FP_UNPACK_SEMIRAW_Q(U,u) */
-+ do
-+ {
-+ do
-+ {
-+ union _FP_UNION_Q _flo;
-+ _flo.flt = (u);
-+ U_f[0] = _flo.bits.frac0;
-+ U_f[1] = _flo.bits.frac1;
-+ U_f[2] = _flo.bits.frac2;
-+ U_f[3] = _flo.bits.frac3;
-+ U_e = _flo.bits.exp;
-+ U_s = _flo.bits.sign;
-+ }
-+ while (0);
-+ do
-+ {
-+ long _up, _down, _skip, _i;
-+ _skip = (3) / 32;
-+ _up = (3) % 32;
-+ _down = 32 - _up;
-+ if (!_up)
-+ for (_i = 3; _i >= _skip; --_i)
-+ U_f[_i] = U_f[_i - _skip];
-+ else
-+ {
-+ for (_i = 3; _i > _skip; --_i)
-+ U_f[_i] =
-+ U_f[_i - _skip] << _up | U_f[_i - _skip - 1] >> _down;
-+ U_f[_i--] = U_f[0] << _up;
-+ }
-+ for (; _i >= 0; --_i)
-+ U_f[_i] = 0;
-+ }
-+ while (0);
-+ }
-+ while (0);
-+
-+/* FP_UNPACK_SEMIRAW_Q(Z,z) */
-+ do
-+ {
-+ do
-+ {
-+ union _FP_UNION_Q _flo;
-+ _flo.flt = (z);
-+ Z_f[0] = _flo.bits.frac0;
-+ Z_f[1] = _flo.bits.frac1;
-+ Z_f[2] = _flo.bits.frac2;
-+ Z_f[3] = _flo.bits.frac3;
-+ Z_e = _flo.bits.exp;
-+ Z_s = _flo.bits.sign;
-+ }
-+ while (0);
-+ do
-+ {
-+ long _up, _down, _skip, _i;
-+ _skip = (3) / 32;
-+ _up = (3) % 32;
-+ _down = 32 - _up;
-+ if (!_up)
-+ for (_i = 3; _i >= _skip; --_i)
-+ Z_f[_i] = Z_f[_i - _skip];
-+ else
-+ {
-+ for (_i = 3; _i > _skip; --_i)
-+ Z_f[_i] =
-+ Z_f[_i - _skip] << _up | Z_f[_i - _skip - 1] >> _down;
-+ Z_f[_i--] = Z_f[0] << _up;
-+ }
-+ for (; _i >= 0; --_i)
-+ Z_f[_i] = 0;
-+ }
-+ while (0);
-+ }
-+ while (0);
-+
-+/* FP_SUB_Q(V,U,Z) */
-+ do
-+ {
-+ if (!(Z_e == 32767 && !((Z_f[0] | Z_f[1] | Z_f[2] | Z_f[3]) == 0)))
-+ Z_s ^= 1;
-+ do
-+ {
-+ if (U_s == Z_s)
-+ {
-+ V_s = U_s;
-+ int ediff = U_e - Z_e;
-+ if (ediff > 0)
-+ {
-+ V_e = U_e;
-+ if (Z_e == 0)
-+ {
-+ if (((Z_f[0] | Z_f[1] | Z_f[2] | Z_f[3]) == 0))
-+ {
-+ do
-+ {
-+ if (U_e == 32767
-+ && !((U_f[0] | U_f[1] | U_f[2] | U_f[3]) ==
-+ 0)
-+ && !((U_f[3]) &
-+ ((unsigned long) 1 << (113 - 2 + 3) %
-+ 32)))
-+ _fex |= (0);
-+ }
-+ while (0);
-+ (V_f[0] = U_f[0], V_f[1] = U_f[1], V_f[2] =
-+ U_f[2], V_f[3] = U_f[3]);
-+ goto add_done;
-+ }
-+ else
-+ {
-+ _fex |= (0);
-+ ediff--;
-+ if (ediff == 0)
-+ {
-+ do
-+ {
-+ unsigned long _c1, _c2, _c3;
-+ V_f[0] = U_f[0] + Z_f[0];
-+ _c1 = V_f[0] < U_f[0];
-+ V_f[1] = U_f[1] + Z_f[1];
-+ _c2 = V_f[1] < U_f[1];
-+ V_f[1] += _c1;
-+ _c2 |= V_f[1] < _c1;
-+ V_f[2] = U_f[2] + Z_f[2];
-+ _c3 = V_f[2] < U_f[2];
-+ V_f[2] += _c2;
-+ _c3 |= V_f[2] < _c2;
-+ V_f[3] = U_f[3] + Z_f[3] + _c3;
-+ }
-+ while (0);
-+ goto add3;
-+ }
-+ if (U_e == 32767)
-+ {
-+ do
-+ {
-+ if (U_e == 32767
-+ && !((U_f[0] | U_f[1] | U_f[2] | U_f[3])
-+ == 0)
-+ && !((U_f[3]) &
-+ ((unsigned long) 1 << (113 - 2 + 3)
-+ % 32)))
-+ _fex |= (0);
-+ }
-+ while (0);
-+ (V_f[0] = U_f[0], V_f[1] = U_f[1], V_f[2] =
-+ U_f[2], V_f[3] = U_f[3]);
-+ goto add_done;
-+ }
-+ goto add1;
-+ }
-+ }
-+ else if (U_e == 32767)
-+ {
-+ do
-+ {
-+ if (U_e == 32767
-+ && !((U_f[0] | U_f[1] | U_f[2] | U_f[3]) == 0)
-+ && !((U_f[3]) &
-+ ((unsigned long) 1 << (113 - 2 + 3) % 32)))
-+ _fex |= (0);
-+ }
-+ while (0);
-+ (V_f[0] = U_f[0], V_f[1] = U_f[1], V_f[2] =
-+ U_f[2], V_f[3] = U_f[3]);
-+ goto add_done;
-+ }
-+ (Z_f[3]) |= ((unsigned long) 1 << (113 - 1 + 3) % 32);
-+ add1:if (ediff <= (3 + 113))
-+ do
-+ {
-+ int _sticky;
-+ do
-+ {
-+ long _up, _down, _skip, _i;
-+ unsigned long _s;
-+ _skip = (ediff) / 32;
-+ _down = (ediff) % 32;
-+ _up = 32 - _down;
-+ for (_s = _i = 0; _i < _skip; ++_i)
-+ _s |= Z_f[_i];
-+ if (!_down)
-+ for (_i = 0; _i <= 3 - _skip; ++_i)
-+ Z_f[_i] = Z_f[_i + _skip];
-+ else
-+ {
-+ _s |= Z_f[_i] << _up;
-+ for (_i = 0; _i < 3 - _skip; ++_i)
-+ Z_f[_i] =
-+ Z_f[_i + _skip] >> _down | Z_f[_i +
-+ _skip +
-+ 1] << _up;
-+ Z_f[_i++] = Z_f[3] >> _down;
-+ }
-+ for (; _i < 4; ++_i)
-+ Z_f[_i] = 0;
-+ _sticky = (_s != 0);
-+ }
-+ while (0);
-+ Z_f[0] |= _sticky;
-+ }
-+ while (0);
-+ else if (!((Z_f[0] | Z_f[1] | Z_f[2] | Z_f[3]) == 0))
-+ (Z_f[3] = 0, Z_f[2] = 0, Z_f[1] = 0, Z_f[0] = 1);
-+ do
-+ {
-+ unsigned long _c1, _c2, _c3;
-+ V_f[0] = U_f[0] + Z_f[0];
-+ _c1 = V_f[0] < U_f[0];
-+ V_f[1] = U_f[1] + Z_f[1];
-+ _c2 = V_f[1] < U_f[1];
-+ V_f[1] += _c1;
-+ _c2 |= V_f[1] < _c1;
-+ V_f[2] = U_f[2] + Z_f[2];
-+ _c3 = V_f[2] < U_f[2];
-+ V_f[2] += _c2;
-+ _c3 |= V_f[2] < _c2;
-+ V_f[3] = U_f[3] + Z_f[3] + _c3;
-+ }
-+ while (0);
-+ }
-+ else if (ediff < 0)
-+ {
-+ ediff = -ediff;
-+ V_e = Z_e;
-+ if (U_e == 0)
-+ {
-+ if (((U_f[0] | U_f[1] | U_f[2] | U_f[3]) == 0))
-+ {
-+ do
-+ {
-+ if (Z_e == 32767
-+ && !((Z_f[0] | Z_f[1] | Z_f[2] | Z_f[3]) ==
-+ 0)
-+ && !((Z_f[3]) &
-+ ((unsigned long) 1 << (113 - 2 + 3) %
-+ 32)))
-+ _fex |= (0);
-+ }
-+ while (0);
-+ (V_f[0] = Z_f[0], V_f[1] = Z_f[1], V_f[2] =
-+ Z_f[2], V_f[3] = Z_f[3]);
-+ goto add_done;
-+ }
-+ else
-+ {
-+ _fex |= (0);
-+ ediff--;
-+ if (ediff == 0)
-+ {
-+ do
-+ {
-+ unsigned long _c1, _c2, _c3;
-+ V_f[0] = Z_f[0] + U_f[0];
-+ _c1 = V_f[0] < Z_f[0];
-+ V_f[1] = Z_f[1] + U_f[1];
-+ _c2 = V_f[1] < Z_f[1];
-+ V_f[1] += _c1;
-+ _c2 |= V_f[1] < _c1;
-+ V_f[2] = Z_f[2] + U_f[2];
-+ _c3 = V_f[2] < Z_f[2];
-+ V_f[2] += _c2;
-+ _c3 |= V_f[2] < _c2;
-+ V_f[3] = Z_f[3] + U_f[3] + _c3;
-+ }
-+ while (0);
-+ goto add3;
-+ }
-+ if (Z_e == 32767)
-+ {
-+ do
-+ {
-+ if (Z_e == 32767
-+ && !((Z_f[0] | Z_f[1] | Z_f[2] | Z_f[3])
-+ == 0)
-+ && !((Z_f[3]) &
-+ ((unsigned long) 1 << (113 - 2 + 3)
-+ % 32)))
-+ _fex |= (0);
-+ }
-+ while (0);
-+ (V_f[0] = Z_f[0], V_f[1] = Z_f[1], V_f[2] =
-+ Z_f[2], V_f[3] = Z_f[3]);
-+ goto add_done;
-+ }
-+ goto add2;
-+ }
-+ }
-+ else if (Z_e == 32767)
-+ {
-+ do
-+ {
-+ if (Z_e == 32767
-+ && !((Z_f[0] | Z_f[1] | Z_f[2] | Z_f[3]) == 0)
-+ && !((Z_f[3]) &
-+ ((unsigned long) 1 << (113 - 2 + 3) % 32)))
-+ _fex |= (0);
-+ }
-+ while (0);
-+ (V_f[0] = Z_f[0], V_f[1] = Z_f[1], V_f[2] =
-+ Z_f[2], V_f[3] = Z_f[3]);
-+ goto add_done;
-+ }
-+ (U_f[3]) |= ((unsigned long) 1 << (113 - 1 + 3) % 32);
-+ add2:if (ediff <= (3 + 113))
-+ do
-+ {
-+ int _sticky;
-+ do
-+ {
-+ long _up, _down, _skip, _i;
-+ unsigned long _s;
-+ _skip = (ediff) / 32;
-+ _down = (ediff) % 32;
-+ _up = 32 - _down;
-+ for (_s = _i = 0; _i < _skip; ++_i)
-+ _s |= U_f[_i];
-+ if (!_down)
-+ for (_i = 0; _i <= 3 - _skip; ++_i)
-+ U_f[_i] = U_f[_i + _skip];
-+ else
-+ {
-+ _s |= U_f[_i] << _up;
-+ for (_i = 0; _i < 3 - _skip; ++_i)
-+ U_f[_i] =
-+ U_f[_i + _skip] >> _down | U_f[_i +
-+ _skip +
-+ 1] << _up;
-+ U_f[_i++] = U_f[3] >> _down;
-+ }
-+ for (; _i < 4; ++_i)
-+ U_f[_i] = 0;
-+ _sticky = (_s != 0);
-+ }
-+ while (0);
-+ U_f[0] |= _sticky;
-+ }
-+ while (0);
-+ else if (!((U_f[0] | U_f[1] | U_f[2] | U_f[3]) == 0))
-+ (U_f[3] = 0, U_f[2] = 0, U_f[1] = 0, U_f[0] = 1);
-+ do
-+ {
-+ unsigned long _c1, _c2, _c3;
-+ V_f[0] = Z_f[0] + U_f[0];
-+ _c1 = V_f[0] < Z_f[0];
-+ V_f[1] = Z_f[1] + U_f[1];
-+ _c2 = V_f[1] < Z_f[1];
-+ V_f[1] += _c1;
-+ _c2 |= V_f[1] < _c1;
-+ V_f[2] = Z_f[2] + U_f[2];
-+ _c3 = V_f[2] < Z_f[2];
-+ V_f[2] += _c2;
-+ _c3 |= V_f[2] < _c2;
-+ V_f[3] = Z_f[3] + U_f[3] + _c3;
-+ }
-+ while (0);
-+ }
-+ else
-+ {
-+ if (!(((U_e + 1) & 32767) > 1))
-+ {
-+ if (U_e == 0)
-+ {
-+ V_e = 0;
-+ if (((U_f[0] | U_f[1] | U_f[2] | U_f[3]) == 0))
-+ {
-+ if (!((Z_f[0] | Z_f[1] | Z_f[2] | Z_f[3]) == 0))
-+ _fex |= (0);
-+ (V_f[0] = Z_f[0], V_f[1] = Z_f[1], V_f[2] =
-+ Z_f[2], V_f[3] = Z_f[3]);
-+ goto add_done;
-+ }
-+ else if (((Z_f[0] | Z_f[1] | Z_f[2] | Z_f[3]) == 0))
-+ {
-+ _fex |= (0);
-+ (V_f[0] = U_f[0], V_f[1] = U_f[1], V_f[2] =
-+ U_f[2], V_f[3] = U_f[3]);
-+ goto add_done;
-+ }
-+ else
-+ {
-+ _fex |= (0);
-+ do
-+ {
-+ unsigned long _c1, _c2, _c3;
-+ V_f[0] = U_f[0] + Z_f[0];
-+ _c1 = V_f[0] < U_f[0];
-+ V_f[1] = U_f[1] + Z_f[1];
-+ _c2 = V_f[1] < U_f[1];
-+ V_f[1] += _c1;
-+ _c2 |= V_f[1] < _c1;
-+ V_f[2] = U_f[2] + Z_f[2];
-+ _c3 = V_f[2] < U_f[2];
-+ V_f[2] += _c2;
-+ _c3 |= V_f[2] < _c2;
-+ V_f[3] = U_f[3] + Z_f[3] + _c3;
-+ }
-+ while (0);
-+ if ((V_f[3]) &
-+ ((unsigned long) 1 << (113 - 1 + 3) % 32))
-+ {
-+ (V_f[3]) &=
-+ ~(unsigned long) ((unsigned long) 1 <<
-+ (113 - 1 + 3) % 32);
-+ V_e = 1;
-+ }
-+ goto add_done;
-+ }
-+ }
-+ else
-+ {
-+ do
-+ {
-+ if (U_e == 32767
-+ && !((U_f[0] | U_f[1] | U_f[2] | U_f[3]) ==
-+ 0)
-+ && !((U_f[3]) &
-+ ((unsigned long) 1 << (113 - 2 + 3) %
-+ 32)))
-+ _fex |= (0);
-+ }
-+ while (0);
-+ do
-+ {
-+ if (Z_e == 32767
-+ && !((Z_f[0] | Z_f[1] | Z_f[2] | Z_f[3]) ==
-+ 0)
-+ && !((Z_f[3]) &
-+ ((unsigned long) 1 << (113 - 2 + 3) %
-+ 32)))
-+ _fex |= (0);
-+ }
-+ while (0);
-+ V_e = 32767;
-+ if (((U_f[0] | U_f[1] | U_f[2] | U_f[3]) == 0))
-+ (V_f[0] = Z_f[0], V_f[1] = Z_f[1], V_f[2] =
-+ Z_f[2], V_f[3] = Z_f[3]);
-+ else if (((Z_f[0] | Z_f[1] | Z_f[2] | Z_f[3]) == 0))
-+ (V_f[0] = U_f[0], V_f[1] = U_f[1], V_f[2] =
-+ U_f[2], V_f[3] = U_f[3]);
-+ else
-+ do
-+ {
-+ do
-+ {
-+ long _up, _down, _skip, _i;
-+ _skip = (3) / 32;
-+ _down = (3) % 32;
-+ _up = 32 - _down;
-+ if (!_down)
-+ for (_i = 0; _i <= 3 - _skip; ++_i)
-+ U_f[_i] = U_f[_i + _skip];
-+ else
-+ {
-+ for (_i = 0; _i < 3 - _skip; ++_i)
-+ U_f[_i] =
-+ U_f[_i +
-+ _skip] >> _down | U_f[_i +
-+ _skip +
-+ 1] <<
-+ _up;
-+ U_f[_i++] = U_f[3] >> _down;
-+ }
-+ for (; _i < 4; ++_i)
-+ U_f[_i] = 0;
-+ }
-+ while (0);
-+ do
-+ {
-+ long _up, _down, _skip, _i;
-+ _skip = (3) / 32;
-+ _down = (3) % 32;
-+ _up = 32 - _down;
-+ if (!_down)
-+ for (_i = 0; _i <= 3 - _skip; ++_i)
-+ Z_f[_i] = Z_f[_i + _skip];
-+ else
-+ {
-+ for (_i = 0; _i < 3 - _skip; ++_i)
-+ Z_f[_i] =
-+ Z_f[_i +
-+ _skip] >> _down | Z_f[_i +
-+ _skip +
-+ 1] <<
-+ _up;
-+ Z_f[_i++] = Z_f[3] >> _down;
-+ }
-+ for (; _i < 4; ++_i)
-+ Z_f[_i] = 0;
-+ }
-+ while (0);
-+ do
-+ {
-+ if (((U_f[3]) &
-+ ((unsigned long) 1 << (113 - 2) %
-+ 32))
-+ && !((Z_f[3]) &
-+ ((unsigned long) 1 << (113 - 2) %
-+ 32)))
-+ {
-+ V_s = Z_s;
-+ (V_f[0] = Z_f[0], V_f[1] =
-+ Z_f[1], V_f[2] = Z_f[2], V_f[3] =
-+ Z_f[3]);
-+ }
-+ else
-+ {
-+ V_s = U_s;
-+ (V_f[0] = U_f[0], V_f[1] =
-+ U_f[1], V_f[2] = U_f[2], V_f[3] =
-+ U_f[3]);
-+ }
-+ V_c = 3;
-+ }
-+ while (0);
-+ do
-+ {
-+ long _up, _down, _skip, _i;
-+ _skip = (3) / 32;
-+ _up = (3) % 32;
-+ _down = 32 - _up;
-+ if (!_up)
-+ for (_i = 3; _i >= _skip; --_i)
-+ V_f[_i] = V_f[_i - _skip];
-+ else
-+ {
-+ for (_i = 3; _i > _skip; --_i)
-+ V_f[_i] =
-+ V_f[_i - _skip] << _up | V_f[_i -
-+ _skip
-+ -
-+ 1] >>
-+ _down;
-+ V_f[_i--] = V_f[0] << _up;
-+ }
-+ for (; _i >= 0; --_i)
-+ V_f[_i] = 0;
-+ }
-+ while (0);
-+ }
-+ while (0);
-+ goto add_done;
-+ }
-+ }
-+ do
-+ {
-+ unsigned long _c1, _c2, _c3;
-+ V_f[0] = U_f[0] + Z_f[0];
-+ _c1 = V_f[0] < U_f[0];
-+ V_f[1] = U_f[1] + Z_f[1];
-+ _c2 = V_f[1] < U_f[1];
-+ V_f[1] += _c1;
-+ _c2 |= V_f[1] < _c1;
-+ V_f[2] = U_f[2] + Z_f[2];
-+ _c3 = V_f[2] < U_f[2];
-+ V_f[2] += _c2;
-+ _c3 |= V_f[2] < _c2;
-+ V_f[3] = U_f[3] + Z_f[3] + _c3;
-+ }
-+ while (0);
-+ V_e = U_e + 1;
-+ do
-+ {
-+ int _sticky;
-+ do
-+ {
-+ long _up, _down, _skip, _i;
-+ unsigned long _s;
-+ _skip = (1) / 32;
-+ _down = (1) % 32;
-+ _up = 32 - _down;
-+ for (_s = _i = 0; _i < _skip; ++_i)
-+ _s |= V_f[_i];
-+ if (!_down)
-+ for (_i = 0; _i <= 3 - _skip; ++_i)
-+ V_f[_i] = V_f[_i + _skip];
-+ else
-+ {
-+ _s |= V_f[_i] << _up;
-+ for (_i = 0; _i < 3 - _skip; ++_i)
-+ V_f[_i] =
-+ V_f[_i + _skip] >> _down | V_f[_i + _skip +
-+ 1] << _up;
-+ V_f[_i++] = V_f[3] >> _down;
-+ }
-+ for (; _i < 4; ++_i)
-+ V_f[_i] = 0;
-+ _sticky = (_s != 0);
-+ }
-+ while (0);
-+ V_f[0] |= _sticky;
-+ }
-+ while (0);
-+ if (V_e == 32767)
-+ do
-+ {
-+ if (0 == 0 || (0 == 2 && !V_s) || (0 == 3 && V_s))
-+ {
-+ V_e = 32767;
-+ (V_f[3] = 0, V_f[2] = 0, V_f[1] = 0, V_f[0] = 0);
-+ }
-+ else
-+ {
-+ V_e = 32767 - 1;
-+ _fex |= (0);
-+ _fex |= (0);
-+ (V_f[3] = (~(signed long) 0), V_f[2] =
-+ (~(signed long) 0), V_f[1] =
-+ (~(signed long) 0), V_f[0] = (~(signed long) 0));
-+ }
-+ }
-+ while (0);
-+ goto add_done;
-+ }
-+ add3:if ((V_f[3]) &
-+ ((unsigned long) 1 << (113 - 1 + 3) % 32))
-+ {
-+ (V_f[3]) &=
-+ ~(unsigned long) ((unsigned long) 1 << (113 - 1 + 3) %
-+ 32);
-+ V_e++;
-+ do
-+ {
-+ int _sticky;
-+ do
-+ {
-+ long _up, _down, _skip, _i;
-+ unsigned long _s;
-+ _skip = (1) / 32;
-+ _down = (1) % 32;
-+ _up = 32 - _down;
-+ for (_s = _i = 0; _i < _skip; ++_i)
-+ _s |= V_f[_i];
-+ if (!_down)
-+ for (_i = 0; _i <= 3 - _skip; ++_i)
-+ V_f[_i] = V_f[_i + _skip];
-+ else
-+ {
-+ _s |= V_f[_i] << _up;
-+ for (_i = 0; _i < 3 - _skip; ++_i)
-+ V_f[_i] =
-+ V_f[_i + _skip] >> _down | V_f[_i + _skip +
-+ 1] << _up;
-+ V_f[_i++] = V_f[3] >> _down;
-+ }
-+ for (; _i < 4; ++_i)
-+ V_f[_i] = 0;
-+ _sticky = (_s != 0);
-+ }
-+ while (0);
-+ V_f[0] |= _sticky;
-+ }
-+ while (0);
-+ if (V_e == 32767)
-+ do
-+ {
-+ if (0 == 0 || (0 == 2 && !V_s) || (0 == 3 && V_s))
-+ {
-+ V_e = 32767;
-+ (V_f[3] = 0, V_f[2] = 0, V_f[1] = 0, V_f[0] = 0);
-+ }
-+ else
-+ {
-+ V_e = 32767 - 1;
-+ _fex |= (0);
-+ _fex |= (0);
-+ (V_f[3] = (~(signed long) 0), V_f[2] =
-+ (~(signed long) 0), V_f[1] =
-+ (~(signed long) 0), V_f[0] = (~(signed long) 0));
-+ }
-+ }
-+ while (0);
-+ }
-+ add_done:;
-+ }
-+ else
-+ {
-+ int ediff = U_e - Z_e;
-+ if (ediff > 0)
-+ {
-+ V_e = U_e;
-+ V_s = U_s;
-+ if (Z_e == 0)
-+ {
-+ if (((Z_f[0] | Z_f[1] | Z_f[2] | Z_f[3]) == 0))
-+ {
-+ do
-+ {
-+ if (U_e == 32767
-+ && !((U_f[0] | U_f[1] | U_f[2] | U_f[3]) ==
-+ 0)
-+ && !((U_f[3]) &
-+ ((unsigned long) 1 << (113 - 2 + 3) %
-+ 32)))
-+ _fex |= (0);
-+ }
-+ while (0);
-+ (V_f[0] = U_f[0], V_f[1] = U_f[1], V_f[2] =
-+ U_f[2], V_f[3] = U_f[3]);
-+ goto sub_done;
-+ }
-+ else
-+ {
-+ _fex |= (0);
-+ ediff--;
-+ if (ediff == 0)
-+ {
-+ do
-+ {
-+ unsigned long _c1, _c2, _c3;
-+ V_f[0] = U_f[0] - Z_f[0];
-+ _c1 = V_f[0] > U_f[0];
-+ V_f[1] = U_f[1] - Z_f[1];
-+ _c2 = V_f[1] > U_f[1];
-+ V_f[1] -= _c1;
-+ _c2 |= _c1 && (Z_f[1] == U_f[1]);
-+ V_f[2] = U_f[2] - Z_f[2];
-+ _c3 = V_f[2] > U_f[2];
-+ V_f[2] -= _c2;
-+ _c3 |= _c2 && (Z_f[2] == U_f[2]);
-+ V_f[3] = U_f[3] - Z_f[3] - _c3;
-+ }
-+ while (0);
-+ goto sub3;
-+ }
-+ if (U_e == 32767)
-+ {
-+ do
-+ {
-+ if (U_e == 32767
-+ && !((U_f[0] | U_f[1] | U_f[2] | U_f[3])
-+ == 0)
-+ && !((U_f[3]) &
-+ ((unsigned long) 1 << (113 - 2 + 3)
-+ % 32)))
-+ _fex |= (0);
-+ }
-+ while (0);
-+ (V_f[0] = U_f[0], V_f[1] = U_f[1], V_f[2] =
-+ U_f[2], V_f[3] = U_f[3]);
-+ goto sub_done;
-+ }
-+ goto sub1;
-+ }
-+ }
-+ else if (U_e == 32767)
-+ {
-+ do
-+ {
-+ if (U_e == 32767
-+ && !((U_f[0] | U_f[1] | U_f[2] | U_f[3]) == 0)
-+ && !((U_f[3]) &
-+ ((unsigned long) 1 << (113 - 2 + 3) % 32)))
-+ _fex |= (0);
-+ }
-+ while (0);
-+ (V_f[0] = U_f[0], V_f[1] = U_f[1], V_f[2] =
-+ U_f[2], V_f[3] = U_f[3]);
-+ goto sub_done;
-+ }
-+ (Z_f[3]) |= ((unsigned long) 1 << (113 - 1 + 3) % 32);
-+ sub1:if (ediff <= (3 + 113))
-+ do
-+ {
-+ int _sticky;
-+ do
-+ {
-+ long _up, _down, _skip, _i;
-+ unsigned long _s;
-+ _skip = (ediff) / 32;
-+ _down = (ediff) % 32;
-+ _up = 32 - _down;
-+ for (_s = _i = 0; _i < _skip; ++_i)
-+ _s |= Z_f[_i];
-+ if (!_down)
-+ for (_i = 0; _i <= 3 - _skip; ++_i)
-+ Z_f[_i] = Z_f[_i + _skip];
-+ else
-+ {
-+ _s |= Z_f[_i] << _up;
-+ for (_i = 0; _i < 3 - _skip; ++_i)
-+ Z_f[_i] =
-+ Z_f[_i + _skip] >> _down | Z_f[_i +
-+ _skip +
-+ 1] << _up;
-+ Z_f[_i++] = Z_f[3] >> _down;
-+ }
-+ for (; _i < 4; ++_i)
-+ Z_f[_i] = 0;
-+ _sticky = (_s != 0);
-+ }
-+ while (0);
-+ Z_f[0] |= _sticky;
-+ }
-+ while (0);
-+ else if (!((Z_f[0] | Z_f[1] | Z_f[2] | Z_f[3]) == 0))
-+ (Z_f[3] = 0, Z_f[2] = 0, Z_f[1] = 0, Z_f[0] = 1);
-+ do
-+ {
-+ unsigned long _c1, _c2, _c3;
-+ V_f[0] = U_f[0] - Z_f[0];
-+ _c1 = V_f[0] > U_f[0];
-+ V_f[1] = U_f[1] - Z_f[1];
-+ _c2 = V_f[1] > U_f[1];
-+ V_f[1] -= _c1;
-+ _c2 |= _c1 && (Z_f[1] == U_f[1]);
-+ V_f[2] = U_f[2] - Z_f[2];
-+ _c3 = V_f[2] > U_f[2];
-+ V_f[2] -= _c2;
-+ _c3 |= _c2 && (Z_f[2] == U_f[2]);
-+ V_f[3] = U_f[3] - Z_f[3] - _c3;
-+ }
-+ while (0);
-+ }
-+ else if (ediff < 0)
-+ {
-+ ediff = -ediff;
-+ V_e = Z_e;
-+ V_s = Z_s;
-+ if (U_e == 0)
-+ {
-+ if (((U_f[0] | U_f[1] | U_f[2] | U_f[3]) == 0))
-+ {
-+ do
-+ {
-+ if (Z_e == 32767
-+ && !((Z_f[0] | Z_f[1] | Z_f[2] | Z_f[3]) ==
-+ 0)
-+ && !((Z_f[3]) &
-+ ((unsigned long) 1 << (113 - 2 + 3) %
-+ 32)))
-+ _fex |= (0);
-+ }
-+ while (0);
-+ (V_f[0] = Z_f[0], V_f[1] = Z_f[1], V_f[2] =
-+ Z_f[2], V_f[3] = Z_f[3]);
-+ goto sub_done;
-+ }
-+ else
-+ {
-+ _fex |= (0);
-+ ediff--;
-+ if (ediff == 0)
-+ {
-+ do
-+ {
-+ unsigned long _c1, _c2, _c3;
-+ V_f[0] = Z_f[0] - U_f[0];
-+ _c1 = V_f[0] > Z_f[0];
-+ V_f[1] = Z_f[1] - U_f[1];
-+ _c2 = V_f[1] > Z_f[1];
-+ V_f[1] -= _c1;
-+ _c2 |= _c1 && (U_f[1] == Z_f[1]);
-+ V_f[2] = Z_f[2] - U_f[2];
-+ _c3 = V_f[2] > Z_f[2];
-+ V_f[2] -= _c2;
-+ _c3 |= _c2 && (U_f[2] == Z_f[2]);
-+ V_f[3] = Z_f[3] - U_f[3] - _c3;
-+ }
-+ while (0);
-+ goto sub3;
-+ }
-+ if (Z_e == 32767)
-+ {
-+ do
-+ {
-+ if (Z_e == 32767
-+ && !((Z_f[0] | Z_f[1] | Z_f[2] | Z_f[3])
-+ == 0)
-+ && !((Z_f[3]) &
-+ ((unsigned long) 1 << (113 - 2 + 3)
-+ % 32)))
-+ _fex |= (0);
-+ }
-+ while (0);
-+ (V_f[0] = Z_f[0], V_f[1] = Z_f[1], V_f[2] =
-+ Z_f[2], V_f[3] = Z_f[3]);
-+ goto sub_done;
-+ }
-+ goto sub2;
-+ }
-+ }
-+ else if (Z_e == 32767)
-+ {
-+ do
-+ {
-+ if (Z_e == 32767
-+ && !((Z_f[0] | Z_f[1] | Z_f[2] | Z_f[3]) == 0)
-+ && !((Z_f[3]) &
-+ ((unsigned long) 1 << (113 - 2 + 3) % 32)))
-+ _fex |= (0);
-+ }
-+ while (0);
-+ (V_f[0] = Z_f[0], V_f[1] = Z_f[1], V_f[2] =
-+ Z_f[2], V_f[3] = Z_f[3]);
-+ goto sub_done;
-+ }
-+ (U_f[3]) |= ((unsigned long) 1 << (113 - 1 + 3) % 32);
-+ sub2:if (ediff <= (3 + 113))
-+ do
-+ {
-+ int _sticky;
-+ do
-+ {
-+ long _up, _down, _skip, _i;
-+ unsigned long _s;
-+ _skip = (ediff) / 32;
-+ _down = (ediff) % 32;
-+ _up = 32 - _down;
-+ for (_s = _i = 0; _i < _skip; ++_i)
-+ _s |= U_f[_i];
-+ if (!_down)
-+ for (_i = 0; _i <= 3 - _skip; ++_i)
-+ U_f[_i] = U_f[_i + _skip];
-+ else
-+ {
-+ _s |= U_f[_i] << _up;
-+ for (_i = 0; _i < 3 - _skip; ++_i)
-+ U_f[_i] =
-+ U_f[_i + _skip] >> _down | U_f[_i +
-+ _skip +
-+ 1] << _up;
-+ U_f[_i++] = U_f[3] >> _down;
-+ }
-+ for (; _i < 4; ++_i)
-+ U_f[_i] = 0;
-+ _sticky = (_s != 0);
-+ }
-+ while (0);
-+ U_f[0] |= _sticky;
-+ }
-+ while (0);
-+ else if (!((U_f[0] | U_f[1] | U_f[2] | U_f[3]) == 0))
-+ (U_f[3] = 0, U_f[2] = 0, U_f[1] = 0, U_f[0] = 1);
-+ do
-+ {
-+ unsigned long _c1, _c2, _c3;
-+ V_f[0] = Z_f[0] - U_f[0];
-+ _c1 = V_f[0] > Z_f[0];
-+ V_f[1] = Z_f[1] - U_f[1];
-+ _c2 = V_f[1] > Z_f[1];
-+ V_f[1] -= _c1;
-+ _c2 |= _c1 && (U_f[1] == Z_f[1]);
-+ V_f[2] = Z_f[2] - U_f[2];
-+ _c3 = V_f[2] > Z_f[2];
-+ V_f[2] -= _c2;
-+ _c3 |= _c2 && (U_f[2] == Z_f[2]);
-+ V_f[3] = Z_f[3] - U_f[3] - _c3;
-+ }
-+ while (0);
-+ }
-+ else
-+ {
-+ if (!(((U_e + 1) & 32767) > 1))
-+ {
-+ if (U_e == 0)
-+ {
-+ V_e = 0;
-+ if (((U_f[0] | U_f[1] | U_f[2] | U_f[3]) == 0))
-+ {
-+ (V_f[0] = Z_f[0], V_f[1] = Z_f[1], V_f[2] =
-+ Z_f[2], V_f[3] = Z_f[3]);
-+ if (((Z_f[0] | Z_f[1] | Z_f[2] | Z_f[3]) == 0))
-+ V_s = (0 == 3);
-+ else
-+ {
-+ _fex |= (0);
-+ V_s = Z_s;
-+ }
-+ goto sub_done;
-+ }
-+ else if (((Z_f[0] | Z_f[1] | Z_f[2] | Z_f[3]) == 0))
-+ {
-+ _fex |= (0);
-+ (V_f[0] = U_f[0], V_f[1] = U_f[1], V_f[2] =
-+ U_f[2], V_f[3] = U_f[3]);
-+ V_s = U_s;
-+ goto sub_done;
-+ }
-+ else
-+ {
-+ _fex |= (0);
-+ do
-+ {
-+ unsigned long _c1, _c2, _c3;
-+ V_f[0] = U_f[0] - Z_f[0];
-+ _c1 = V_f[0] > U_f[0];
-+ V_f[1] = U_f[1] - Z_f[1];
-+ _c2 = V_f[1] > U_f[1];
-+ V_f[1] -= _c1;
-+ _c2 |= _c1 && (Z_f[1] == U_f[1]);
-+ V_f[2] = U_f[2] - Z_f[2];
-+ _c3 = V_f[2] > U_f[2];
-+ V_f[2] -= _c2;
-+ _c3 |= _c2 && (Z_f[2] == U_f[2]);
-+ V_f[3] = U_f[3] - Z_f[3] - _c3;
-+ }
-+ while (0);
-+ V_s = U_s;
-+ if ((V_f[3]) &
-+ ((unsigned long) 1 << (113 - 1 + 3) % 32))
-+ {
-+ do
-+ {
-+ unsigned long _c1, _c2, _c3;
-+ V_f[0] = Z_f[0] - U_f[0];
-+ _c1 = V_f[0] > Z_f[0];
-+ V_f[1] = Z_f[1] - U_f[1];
-+ _c2 = V_f[1] > Z_f[1];
-+ V_f[1] -= _c1;
-+ _c2 |= _c1 && (U_f[1] == Z_f[1]);
-+ V_f[2] = Z_f[2] - U_f[2];
-+ _c3 = V_f[2] > Z_f[2];
-+ V_f[2] -= _c2;
-+ _c3 |= _c2 && (U_f[2] == Z_f[2]);
-+ V_f[3] = Z_f[3] - U_f[3] - _c3;
-+ }
-+ while (0);
-+ V_s = Z_s;
-+ }
-+ else
-+ if (((V_f[0] | V_f[1] | V_f[2] | V_f[3]) ==
-+ 0))
-+ V_s = (0 == 3);
-+ goto sub_done;
-+ }
-+ }
-+ else
-+ {
-+ do
-+ {
-+ if (U_e == 32767
-+ && !((U_f[0] | U_f[1] | U_f[2] | U_f[3]) ==
-+ 0)
-+ && !((U_f[3]) &
-+ ((unsigned long) 1 << (113 - 2 + 3) %
-+ 32)))
-+ _fex |= (0);
-+ }
-+ while (0);
-+ do
-+ {
-+ if (Z_e == 32767
-+ && !((Z_f[0] | Z_f[1] | Z_f[2] | Z_f[3]) ==
-+ 0)
-+ && !((Z_f[3]) &
-+ ((unsigned long) 1 << (113 - 2 + 3) %
-+ 32)))
-+ _fex |= (0);
-+ }
-+ while (0);
-+ V_e = 32767;
-+ if (((U_f[0] | U_f[1] | U_f[2] | U_f[3]) == 0))
-+ {
-+ if (((Z_f[0] | Z_f[1] | Z_f[2] | Z_f[3]) == 0))
-+ {
-+ V_s = 0;
-+ (V_f[3] =
-+ ((((unsigned long) 1 << (113 - 2) %
-+ 32) << 1) - 1), V_f[2] = -1, V_f[1] =
-+ -1, V_f[0] = -1);
-+ do
-+ {
-+ long _up, _down, _skip, _i;
-+ _skip = (3) / 32;
-+ _up = (3) % 32;
-+ _down = 32 - _up;
-+ if (!_up)
-+ for (_i = 3; _i >= _skip; --_i)
-+ V_f[_i] = V_f[_i - _skip];
-+ else
-+ {
-+ for (_i = 3; _i > _skip; --_i)
-+ V_f[_i] =
-+ V_f[_i -
-+ _skip] << _up | V_f[_i -
-+ _skip -
-+ 1] >>
-+ _down;
-+ V_f[_i--] = V_f[0] << _up;
-+ }
-+ for (; _i >= 0; --_i)
-+ V_f[_i] = 0;
-+ }
-+ while (0);
-+ _fex |= (0);
-+ }
-+ else
-+ {
-+ V_s = Z_s;
-+ (V_f[0] = Z_f[0], V_f[1] = Z_f[1], V_f[2] =
-+ Z_f[2], V_f[3] = Z_f[3]);
-+ }
-+ }
-+ else
-+ {
-+ if (((Z_f[0] | Z_f[1] | Z_f[2] | Z_f[3]) == 0))
-+ {
-+ V_s = U_s;
-+ (V_f[0] = U_f[0], V_f[1] = U_f[1], V_f[2] =
-+ U_f[2], V_f[3] = U_f[3]);
-+ }
-+ else
-+ {
-+ do
-+ {
-+ do
-+ {
-+ long _up, _down, _skip, _i;
-+ _skip = (3) / 32;
-+ _down = (3) % 32;
-+ _up = 32 - _down;
-+ if (!_down)
-+ for (_i = 0; _i <= 3 - _skip;
-+ ++_i)
-+ U_f[_i] = U_f[_i + _skip];
-+ else
-+ {
-+ for (_i = 0; _i < 3 - _skip;
-+ ++_i)
-+ U_f[_i] =
-+ U_f[_i +
-+ _skip] >> _down | U_f[_i
-+ +
-+ _skip
-+ +
-+ 1]
-+ << _up;
-+ U_f[_i++] = U_f[3] >> _down;
-+ }
-+ for (; _i < 4; ++_i)
-+ U_f[_i] = 0;
-+ }
-+ while (0);
-+ do
-+ {
-+ long _up, _down, _skip, _i;
-+ _skip = (3) / 32;
-+ _down = (3) % 32;
-+ _up = 32 - _down;
-+ if (!_down)
-+ for (_i = 0; _i <= 3 - _skip;
-+ ++_i)
-+ Z_f[_i] = Z_f[_i + _skip];
-+ else
-+ {
-+ for (_i = 0; _i < 3 - _skip;
-+ ++_i)
-+ Z_f[_i] =
-+ Z_f[_i +
-+ _skip] >> _down | Z_f[_i
-+ +
-+ _skip
-+ +
-+ 1]
-+ << _up;
-+ Z_f[_i++] = Z_f[3] >> _down;
-+ }
-+ for (; _i < 4; ++_i)
-+ Z_f[_i] = 0;
-+ }
-+ while (0);
-+ do
-+ {
-+ if (((U_f[3]) &
-+ ((unsigned long) 1 << (113 - 2)
-+ % 32))
-+ && !((Z_f[3]) &
-+ ((unsigned long) 1 <<
-+ (113 - 2) % 32)))
-+ {
-+ V_s = Z_s;
-+ (V_f[0] = Z_f[0], V_f[1] =
-+ Z_f[1], V_f[2] =
-+ Z_f[2], V_f[3] = Z_f[3]);
-+ }
-+ else
-+ {
-+ V_s = U_s;
-+ (V_f[0] = U_f[0], V_f[1] =
-+ U_f[1], V_f[2] =
-+ U_f[2], V_f[3] = U_f[3]);
-+ }
-+ V_c = 3;
-+ }
-+ while (0);
-+ do
-+ {
-+ long _up, _down, _skip, _i;
-+ _skip = (3) / 32;
-+ _up = (3) % 32;
-+ _down = 32 - _up;
-+ if (!_up)
-+ for (_i = 3; _i >= _skip; --_i)
-+ V_f[_i] = V_f[_i - _skip];
-+ else
-+ {
-+ for (_i = 3; _i > _skip; --_i)
-+ V_f[_i] =
-+ V_f[_i -
-+ _skip] << _up | V_f[_i -
-+ _skip
-+ -
-+ 1]
-+ >> _down;
-+ V_f[_i--] = V_f[0] << _up;
-+ }
-+ for (; _i >= 0; --_i)
-+ V_f[_i] = 0;
-+ }
-+ while (0);
-+ }
-+ while (0);
-+ }
-+ }
-+ goto sub_done;
-+ }
-+ }
-+ V_e = U_e;
-+ do
-+ {
-+ unsigned long _c1, _c2, _c3;
-+ V_f[0] = U_f[0] - Z_f[0];
-+ _c1 = V_f[0] > U_f[0];
-+ V_f[1] = U_f[1] - Z_f[1];
-+ _c2 = V_f[1] > U_f[1];
-+ V_f[1] -= _c1;
-+ _c2 |= _c1 && (Z_f[1] == U_f[1]);
-+ V_f[2] = U_f[2] - Z_f[2];
-+ _c3 = V_f[2] > U_f[2];
-+ V_f[2] -= _c2;
-+ _c3 |= _c2 && (Z_f[2] == U_f[2]);
-+ V_f[3] = U_f[3] - Z_f[3] - _c3;
-+ }
-+ while (0);
-+ V_s = U_s;
-+ if ((V_f[3]) & ((unsigned long) 1 << (113 - 1 + 3) % 32))
-+ {
-+ do
-+ {
-+ unsigned long _c1, _c2, _c3;
-+ V_f[0] = Z_f[0] - U_f[0];
-+ _c1 = V_f[0] > Z_f[0];
-+ V_f[1] = Z_f[1] - U_f[1];
-+ _c2 = V_f[1] > Z_f[1];
-+ V_f[1] -= _c1;
-+ _c2 |= _c1 && (U_f[1] == Z_f[1]);
-+ V_f[2] = Z_f[2] - U_f[2];
-+ _c3 = V_f[2] > Z_f[2];
-+ V_f[2] -= _c2;
-+ _c3 |= _c2 && (U_f[2] == Z_f[2]);
-+ V_f[3] = Z_f[3] - U_f[3] - _c3;
-+ }
-+ while (0);
-+ V_s = Z_s;
-+ }
-+ else if (((V_f[0] | V_f[1] | V_f[2] | V_f[3]) == 0))
-+ {
-+ V_e = 0;
-+ V_s = (0 == 3);
-+ goto sub_done;
-+ }
-+ goto norm;
-+ }
-+ sub3:if ((V_f[3]) &
-+ ((unsigned long) 1 << (113 - 1 + 3) % 32))
-+ {
-+ int diff;
-+ (V_f[3]) &= ((unsigned long) 1 << (113 - 1 + 3) % 32) - 1;
-+ norm:do
-+ {
-+ if (V_f[3])
-+ {
-+ do
-+ {
-+ if (sizeof (unsigned long) ==
-+ sizeof (unsigned int))
-+ diff = __builtin_clz (V_f[3]);
-+ else if (sizeof (unsigned long) ==
-+ sizeof (unsigned long))
-+ diff = __builtin_clzl (V_f[3]);
-+ else if (sizeof (unsigned long) ==
-+ sizeof (unsigned long long))
-+ diff = __builtin_clzll (V_f[3]);
-+ else
-+ abort ();
-+ }
-+ while (0);
-+ }
-+ else if (V_f[2])
-+ {
-+ do
-+ {
-+ if (sizeof (unsigned long) ==
-+ sizeof (unsigned int))
-+ diff = __builtin_clz (V_f[2]);
-+ else if (sizeof (unsigned long) ==
-+ sizeof (unsigned long))
-+ diff = __builtin_clzl (V_f[2]);
-+ else if (sizeof (unsigned long) ==
-+ sizeof (unsigned long long))
-+ diff = __builtin_clzll (V_f[2]);
-+ else
-+ abort ();
-+ }
-+ while (0);
-+ diff += 32;
-+ }
-+ else if (V_f[1])
-+ {
-+ do
-+ {
-+ if (sizeof (unsigned long) ==
-+ sizeof (unsigned int))
-+ diff = __builtin_clz (V_f[1]);
-+ else if (sizeof (unsigned long) ==
-+ sizeof (unsigned long))
-+ diff = __builtin_clzl (V_f[1]);
-+ else if (sizeof (unsigned long) ==
-+ sizeof (unsigned long long))
-+ diff = __builtin_clzll (V_f[1]);
-+ else
-+ abort ();
-+ }
-+ while (0);
-+ diff += 32 * 2;
-+ }
-+ else
-+ {
-+ do
-+ {
-+ if (sizeof (unsigned long) ==
-+ sizeof (unsigned int))
-+ diff = __builtin_clz (V_f[0]);
-+ else if (sizeof (unsigned long) ==
-+ sizeof (unsigned long))
-+ diff = __builtin_clzl (V_f[0]);
-+ else if (sizeof (unsigned long) ==
-+ sizeof (unsigned long long))
-+ diff = __builtin_clzll (V_f[0]);
-+ else
-+ abort ();
-+ }
-+ while (0);
-+ diff += 32 * 3;
-+ }
-+ }
-+ while (0);
-+ diff -= ((4 * 32) - (3 + 113));
-+ do
-+ {
-+ long _up, _down, _skip, _i;
-+ _skip = (diff) / 32;
-+ _up = (diff) % 32;
-+ _down = 32 - _up;
-+ if (!_up)
-+ for (_i = 3; _i >= _skip; --_i)
-+ V_f[_i] = V_f[_i - _skip];
-+ else
-+ {
-+ for (_i = 3; _i > _skip; --_i)
-+ V_f[_i] =
-+ V_f[_i - _skip] << _up | V_f[_i - _skip -
-+ 1] >> _down;
-+ V_f[_i--] = V_f[0] << _up;
-+ }
-+ for (; _i >= 0; --_i)
-+ V_f[_i] = 0;
-+ }
-+ while (0);
-+ if (V_e <= diff)
-+ {
-+ diff = diff - V_e + 1;
-+ do
-+ {
-+ int _sticky;
-+ do
-+ {
-+ long _up, _down, _skip, _i;
-+ unsigned long _s;
-+ _skip = (diff) / 32;
-+ _down = (diff) % 32;
-+ _up = 32 - _down;
-+ for (_s = _i = 0; _i < _skip; ++_i)
-+ _s |= V_f[_i];
-+ if (!_down)
-+ for (_i = 0; _i <= 3 - _skip; ++_i)
-+ V_f[_i] = V_f[_i + _skip];
-+ else
-+ {
-+ _s |= V_f[_i] << _up;
-+ for (_i = 0; _i < 3 - _skip; ++_i)
-+ V_f[_i] =
-+ V_f[_i + _skip] >> _down | V_f[_i +
-+ _skip +
-+ 1] <<
-+ _up;
-+ V_f[_i++] = V_f[3] >> _down;
-+ }
-+ for (; _i < 4; ++_i)
-+ V_f[_i] = 0;
-+ _sticky = (_s != 0);
-+ }
-+ while (0);
-+ V_f[0] |= _sticky;
-+ }
-+ while (0);
-+ V_e = 0;
-+ }
-+ else
-+ {
-+ V_e -= diff;
-+ (V_f[3]) &=
-+ ~(unsigned long) ((unsigned long) 1 << (113 - 1 + 3) %
-+ 32);
-+ }
-+ }
-+ sub_done:;
-+ }
-+ }
-+ while (0);
-+ }
-+ while (0);
-+
-+/* FP_PACK_SEMIRAW_Q(v,V) */
-+ do
-+ {
-+ do
-+ {
-+ do
-+ {
-+ if ((V_f[0]) & 7)
-+ _fex |= (0);
-+ switch (0)
-+ {
-+ case 0:
-+ do
-+ {
-+ if (((V_f[0]) & 15) != ((unsigned long) 1 << 2))
-+ do
-+ {
-+ unsigned long _t;
-+ _t =
-+ ((V_f[0] +=
-+ ((unsigned long) 1 << 2)) <
-+ ((unsigned long) 1 << 2));
-+ V_f[1] += _t;
-+ _t = (V_f[1] < _t);
-+ V_f[2] += _t;
-+ _t = (V_f[2] < _t);
-+ V_f[3] += _t;
-+ }
-+ while (0);
-+ }
-+ while (0);
-+ break;
-+ case 1:
-+ (void) 0;
-+ break;
-+ case 2:
-+ do
-+ {
-+ if (!V_s && ((V_f[0]) & 7))
-+ do
-+ {
-+ unsigned long _t;
-+ _t =
-+ ((V_f[0] +=
-+ ((unsigned long) 1 << 3)) <
-+ ((unsigned long) 1 << 3));
-+ V_f[1] += _t;
-+ _t = (V_f[1] < _t);
-+ V_f[2] += _t;
-+ _t = (V_f[2] < _t);
-+ V_f[3] += _t;
-+ }
-+ while (0);
-+ }
-+ while (0);
-+ break;
-+ case 3:
-+ do
-+ {
-+ if (V_s && ((V_f[0]) & 7))
-+ do
-+ {
-+ unsigned long _t;
-+ _t =
-+ ((V_f[0] +=
-+ ((unsigned long) 1 << 3)) <
-+ ((unsigned long) 1 << 3));
-+ V_f[1] += _t;
-+ _t = (V_f[1] < _t);
-+ V_f[2] += _t;
-+ _t = (V_f[2] < _t);
-+ V_f[3] += _t;
-+ }
-+ while (0);
-+ }
-+ while (0);
-+ break;
-+ }
-+ }
-+ while (0);
-+ if ((V_f[3]) & (((unsigned long) 1 << ((3 + 113) % 32)) >> 1))
-+ {
-+ (V_f[3]) &= ~(((unsigned long) 1 << ((3 + 113) % 32)) >> 1);
-+ V_e++;
-+ if (V_e == 32767)
-+ do
-+ {
-+ if (0 == 0 || (0 == 2 && !V_s) || (0 == 3 && V_s))
-+ {
-+ V_e = 32767;
-+ (V_f[3] = 0, V_f[2] = 0, V_f[1] = 0, V_f[0] = 0);
-+ }
-+ else
-+ {
-+ V_e = 32767 - 1;
-+ _fex |= (0);
-+ _fex |= (0);
-+ (V_f[3] = (~(signed long) 0), V_f[2] =
-+ (~(signed long) 0), V_f[1] =
-+ (~(signed long) 0), V_f[0] = (~(signed long) 0));
-+ }
-+ }
-+ while (0);
-+ }
-+ do
-+ {
-+ long _up, _down, _skip, _i;
-+ _skip = (3) / 32;
-+ _down = (3) % 32;
-+ _up = 32 - _down;
-+ if (!_down)
-+ for (_i = 0; _i <= 3 - _skip; ++_i)
-+ V_f[_i] = V_f[_i + _skip];
-+ else
-+ {
-+ for (_i = 0; _i < 3 - _skip; ++_i)
-+ V_f[_i] =
-+ V_f[_i + _skip] >> _down | V_f[_i + _skip + 1] << _up;
-+ V_f[_i++] = V_f[3] >> _down;
-+ }
-+ for (; _i < 4; ++_i)
-+ V_f[_i] = 0;
-+ }
-+ while (0);
-+ if (!(((V_e + 1) & 32767) > 1)
-+ && !((V_f[0] | V_f[1] | V_f[2] | V_f[3]) == 0))
-+ {
-+ if (V_e == 0)
-+ _fex |= (0);
-+ else
-+ {
-+ if (!1)
-+ {
-+ (V_f[3] =
-+ ((((unsigned long) 1 << (113 - 2) % 32) << 1) - 1),
-+ V_f[2] = -1, V_f[1] = -1, V_f[0] = -1);
-+ V_s = 0;
-+ }
-+ else
-+ (V_f[3]) |= ((unsigned long) 1 << (113 - 2) % 32);
-+ }
-+ }
-+ }
-+ while (0);
-+ do
-+ {
-+ union _FP_UNION_Q _flo;
-+ _flo.bits.frac0 = V_f[0];
-+ _flo.bits.frac1 = V_f[1];
-+ _flo.bits.frac2 = V_f[2];
-+ _flo.bits.frac3 = V_f[3];
-+ _flo.bits.exp = V_e;
-+ _flo.bits.sign = V_s;
-+ (v) = _flo.flt;
-+ }
-+ while (0);
-+ }
-+ while (0);
-+
-+/* FP_HANDLE_EXCEPTIONS */
-+ do
-+ {
-+ }
-+ while (0);
-+
-+ /* Truncate quad to double. */
-+/* FP_INIT_ROUNDMODE */
-+ do
-+ {
-+ }
-+ while (0);
-+
-+/* FP_UNPACK_SEMIRAW_Q(V,v) */
-+ do
-+ {
-+ do
-+ {
-+ union _FP_UNION_Q _flo;
-+ _flo.flt = (v);
-+ V_f[0] = _flo.bits.frac0;
-+ V_f[1] = _flo.bits.frac1;
-+ V_f[2] = _flo.bits.frac2;
-+ V_f[3] = _flo.bits.frac3;
-+ V_e = _flo.bits.exp;
-+ V_s = _flo.bits.sign;
-+ }
-+ while (0);
-+ do
-+ {
-+ long _up, _down, _skip, _i;
-+ _skip = (3) / 32;
-+ _up = (3) % 32;
-+ _down = 32 - _up;
-+ if (!_up)
-+ for (_i = 3; _i >= _skip; --_i)
-+ V_f[_i] = V_f[_i - _skip];
-+ else
-+ {
-+ for (_i = 3; _i > _skip; --_i)
-+ V_f[_i] =
-+ V_f[_i - _skip] << _up | V_f[_i - _skip - 1] >> _down;
-+ V_f[_i--] = V_f[0] << _up;
-+ }
-+ for (; _i >= 0; --_i)
-+ V_f[_i] = 0;
-+ }
-+ while (0);
-+ }
-+ while (0);
-+
-+/* FP_TRUNC(D,Q,2,4,R,V) */
-+ do
-+ {
-+ if (113 < 53 || 16383 < 1023 + 53 - 1)
-+ abort ();
-+ R_s = V_s;
-+ if ((((V_e + 1) & 32767) > 1))
-+ {
-+ R_e = V_e + 1023 - 16383;
-+ if (R_e >= 2047)
-+ do
-+ {
-+ if (0 == 0 || (0 == 2 && !R_s) || (0 == 3 && R_s))
-+ {
-+ R_e = 2047;
-+ (R_f0 = 0, R_f1 = 0);
-+ }
-+ else
-+ {
-+ R_e = 2047 - 1;
-+ _fex |= (0);
-+ _fex |= (0);
-+ (R_f0 = (~(signed long) 0), R_f1 = (~(signed long) 0));
-+ }
-+ }
-+ while (0);
-+ else
-+ {
-+ if (R_e <= 0)
-+ {
-+ if (R_e <= 1 - 53)
-+ (V_f[3] = 0, V_f[2] = 0, V_f[1] = 0, V_f[0] = 0);
-+ else
-+ {
-+ (V_f[3]) |= ((unsigned long) 1 << (113 - 1 + 3) % 32);
-+ do
-+ {
-+ int _sticky;
-+ do
-+ {
-+ long _up, _down, _skip, _i;
-+ unsigned long _s;
-+ _skip = (((3 + 113) - (3 + 53) + 1 - R_e)) / 32;
-+ _down = (((3 + 113) - (3 + 53) + 1 - R_e)) % 32;
-+ _up = 32 - _down;
-+ for (_s = _i = 0; _i < _skip; ++_i)
-+ _s |= V_f[_i];
-+ if (!_down)
-+ for (_i = 0; _i <= 3 - _skip; ++_i)
-+ V_f[_i] = V_f[_i + _skip];
-+ else
-+ {
-+ _s |= V_f[_i] << _up;
-+ for (_i = 0; _i < 3 - _skip; ++_i)
-+ V_f[_i] =
-+ V_f[_i + _skip] >> _down | V_f[_i +
-+ _skip +
-+ 1] <<
-+ _up;
-+ V_f[_i++] = V_f[3] >> _down;
-+ }
-+ for (; _i < 4; ++_i)
-+ V_f[_i] = 0;
-+ _sticky = (_s != 0);
-+ }
-+ while (0);
-+ V_f[0] |= _sticky;
-+ }
-+ while (0);
-+ }
-+ R_e = 0;
-+ }
-+ else
-+ do
-+ {
-+ int _sticky;
-+ do
-+ {
-+ long _up, _down, _skip, _i;
-+ unsigned long _s;
-+ _skip = (((3 + 113) - (3 + 53))) / 32;
-+ _down = (((3 + 113) - (3 + 53))) % 32;
-+ _up = 32 - _down;
-+ for (_s = _i = 0; _i < _skip; ++_i)
-+ _s |= V_f[_i];
-+ if (!_down)
-+ for (_i = 0; _i <= 3 - _skip; ++_i)
-+ V_f[_i] = V_f[_i + _skip];
-+ else
-+ {
-+ _s |= V_f[_i] << _up;
-+ for (_i = 0; _i < 3 - _skip; ++_i)
-+ V_f[_i] =
-+ V_f[_i + _skip] >> _down | V_f[_i + _skip +
-+ 1] << _up;
-+ V_f[_i++] = V_f[3] >> _down;
-+ }
-+ for (; _i < 4; ++_i)
-+ V_f[_i] = 0;
-+ _sticky = (_s != 0);
-+ }
-+ while (0);
-+ V_f[0] |= _sticky;
-+ }
-+ while (0);
-+ do
-+ {
-+ R_f0 = V_f[0];
-+ R_f1 = V_f[1];
-+ }
-+ while (0);
-+ }
-+ }
-+ else
-+ {
-+ if (V_e == 0)
-+ {
-+ R_e = 0;
-+ (R_f0 = 0, R_f1 = 0);
-+ if (!((V_f[0] | V_f[1] | V_f[2] | V_f[3]) == 0))
-+ {
-+ _fex |= (0);
-+ _fex |= (0);
-+ }
-+ }
-+ else
-+ {
-+ R_e = 2047;
-+ if (((V_f[0] | V_f[1] | V_f[2] | V_f[3]) == 0))
-+ (R_f0 = 0, R_f1 = 0);
-+ else
-+ {
-+ do
-+ {
-+ if (V_e == 32767
-+ && !((V_f[0] | V_f[1] | V_f[2] | V_f[3]) == 0)
-+ && !((V_f[3]) &
-+ ((unsigned long) 1 << (113 - 2 + 3) % 32)))
-+ _fex |= (0);
-+ }
-+ while (0);
-+ do
-+ {
-+ long _up, _down, _skip, _i;
-+ _skip = (((3 + 113) - (3 + 53))) / 32;
-+ _down = (((3 + 113) - (3 + 53))) % 32;
-+ _up = 32 - _down;
-+ if (!_down)
-+ for (_i = 0; _i <= 3 - _skip; ++_i)
-+ V_f[_i] = V_f[_i + _skip];
-+ else
-+ {
-+ for (_i = 0; _i < 3 - _skip; ++_i)
-+ V_f[_i] =
-+ V_f[_i + _skip] >> _down | V_f[_i + _skip +
-+ 1] << _up;
-+ V_f[_i++] = V_f[3] >> _down;
-+ }
-+ for (; _i < 4; ++_i)
-+ V_f[_i] = 0;
-+ }
-+ while (0);
-+ do
-+ {
-+ R_f0 = V_f[0];
-+ R_f1 = V_f[1];
-+ }
-+ while (0);
-+ (R_f1) |= ((unsigned long) 1 << (53 - 2 + 3) % 32);
-+ }
-+ }
-+ }
-+ }
-+ while (0);
-+
-+/* FP_PACK_SEMIRAW_D(r,R) */
-+ do
-+ {
-+ do
-+ {
-+ do
-+ {
-+ if ((R_f0) & 7)
-+ _fex |= (0);
-+ switch (0)
-+ {
-+ case 0:
-+ do
-+ {
-+ if (((R_f0) & 15) != ((unsigned long) 1 << 2))
-+ do
-+ {
-+ if (__builtin_constant_p (0) && (0) == 0)
-+ __asm__ ("{a%I4|add%I4c} %1,%3,%4\n\t{aze|addze} %0,%2": "=r" (R_f1), "=&r" (R_f0):"r" (R_f1), "%r" (R_f0),
-+ "rI" (((unsigned long) 1 <<
-+ 2)));
-+ else if (__builtin_constant_p (0)
-+ && (0) == ~(USItype) 0)
-+ __asm__ ("{a%I4|add%I4c} %1,%3,%4\n\t{ame|addme} %0,%2": "=r" (R_f1), "=&r" (R_f0):"r" (R_f1), "%r" (R_f0),
-+ "rI" (((unsigned long) 1 <<
-+ 2)));
-+ else
-+ __asm__ ("{a%I5|add%I5c} %1,%4,%5\n\t{ae|adde} %0,%2,%3": "=r" (R_f1), "=&r" (R_f0):"%r" (R_f1), "r" (0), "%r" (R_f0),
-+ "rI" (((unsigned long) 1 <<
-+ 2)));
-+ }
-+ while (0);
-+ }
-+ while (0);
-+ break;
-+ case 1:
-+ (void) 0;
-+ break;
-+ case 2:
-+ do
-+ {
-+ if (!R_s && ((R_f0) & 7))
-+ do
-+ {
-+ if (__builtin_constant_p (0) && (0) == 0)
-+ __asm__ ("{a%I4|add%I4c} %1,%3,%4\n\t{aze|addze} %0,%2": "=r" (R_f1), "=&r" (R_f0):"r" (R_f1), "%r" (R_f0),
-+ "rI" (((unsigned long) 1 <<
-+ 3)));
-+ else if (__builtin_constant_p (0)
-+ && (0) == ~(USItype) 0)
-+ __asm__ ("{a%I4|add%I4c} %1,%3,%4\n\t{ame|addme} %0,%2": "=r" (R_f1), "=&r" (R_f0):"r" (R_f1), "%r" (R_f0),
-+ "rI" (((unsigned long) 1 <<
-+ 3)));
-+ else
-+ __asm__ ("{a%I5|add%I5c} %1,%4,%5\n\t{ae|adde} %0,%2,%3": "=r" (R_f1), "=&r" (R_f0):"%r" (R_f1), "r" (0), "%r" (R_f0),
-+ "rI" (((unsigned long) 1 <<
-+ 3)));
-+ }
-+ while (0);
-+ }
-+ while (0);
-+ break;
-+ case 3:
-+ do
-+ {
-+ if (R_s && ((R_f0) & 7))
-+ do
-+ {
-+ if (__builtin_constant_p (0) && (0) == 0)
-+ __asm__ ("{a%I4|add%I4c} %1,%3,%4\n\t{aze|addze} %0,%2": "=r" (R_f1), "=&r" (R_f0):"r" (R_f1), "%r" (R_f0),
-+ "rI" (((unsigned long) 1 <<
-+ 3)));
-+ else if (__builtin_constant_p (0)
-+ && (0) == ~(USItype) 0)
-+ __asm__ ("{a%I4|add%I4c} %1,%3,%4\n\t{ame|addme} %0,%2": "=r" (R_f1), "=&r" (R_f0):"r" (R_f1), "%r" (R_f0),
-+ "rI" (((unsigned long) 1 <<
-+ 3)));
-+ else
-+ __asm__ ("{a%I5|add%I5c} %1,%4,%5\n\t{ae|adde} %0,%2,%3": "=r" (R_f1), "=&r" (R_f0):"%r" (R_f1), "r" (0), "%r" (R_f0),
-+ "rI" (((unsigned long) 1 <<
-+ 3)));
-+ }
-+ while (0);
-+ }
-+ while (0);
-+ break;
-+ }
-+ }
-+ while (0);
-+ if ((R_f1) & (((unsigned long) 1 << (3 + 53) % 32) >> 1))
-+ {
-+ (R_f1) &= ~(((unsigned long) 1 << (3 + 53) % 32) >> 1);
-+ R_e++;
-+ if (R_e == 2047)
-+ do
-+ {
-+ if (0 == 0 || (0 == 2 && !R_s) || (0 == 3 && R_s))
-+ {
-+ R_e = 2047;
-+ (R_f0 = 0, R_f1 = 0);
-+ }
-+ else
-+ {
-+ R_e = 2047 - 1;
-+ _fex |= (0);
-+ _fex |= (0);
-+ (R_f0 = (~(signed long) 0), R_f1 =
-+ (~(signed long) 0));
-+ }
-+ }
-+ while (0);
-+ }
-+ (void) (((3) < 32) ? (
-+ {
-+ R_f0 = R_f0 >> (3) | R_f1 << (32 - (3)); R_f1 >>= (3);}):(
-+ {
-+ R_f0 = R_f1 >> ((3) - 32); R_f1 = 0;}));
-+ if (!(((R_e + 1) & 2047) > 1) && !((R_f1 | R_f0) == 0))
-+ {
-+ if (R_e == 0)
-+ _fex |= (0);
-+ else
-+ {
-+ if (!1)
-+ {
-+ (R_f0 = -1, R_f1 =
-+ ((((unsigned long) 1 << (53 - 2) % 32) << 1) - 1));
-+ R_s = 0;
-+ }
-+ else
-+ (R_f1) |= ((unsigned long) 1 << (53 - 2) % 32);
-+ }
-+ }
-+ }
-+ while (0);
-+ do
-+ {
-+ union _FP_UNION_D _flo;
-+ _flo.bits.frac0 = R_f0;
-+ _flo.bits.frac1 = R_f1;
-+ _flo.bits.exp = R_e;
-+ _flo.bits.sign = R_s;
-+ (r) = _flo.flt;
-+ }
-+ while (0);
-+ }
-+ while (0);
-+
-+/* FP_HANDLE_EXCEPTIONS */
-+ do
-+ {
-+ }
-+ while (0);
-+
-+ return r;
-+}
-+
-+
-+#endif
-+
- #endif
-diff -urN gcc42-trunc-20060802/gcc/config/rs6000/libgcc-ppc-glibc.ver gcc42-patched-20060802/gcc/config/rs6000/libgcc-ppc-glibc.ver
---- gcc42-trunc-20060802/gcc/config/rs6000/libgcc-ppc-glibc.ver 2006-08-02 11:07:16.000000000 -0500
-+++ gcc42-patched-20060802/gcc/config/rs6000/libgcc-ppc-glibc.ver 2006-09-01 08:28:29.000000000 -0500
-@@ -21,11 +21,32 @@
- %else
- GCC_3.4.4 {
- %endif
-+%else
-+GCC_4.2.0 {
-+%endif
-
- # long double support
- __gcc_qadd
- __gcc_qsub
- __gcc_qmul
- __gcc_qdiv
--}
-+
-+%ifdef _SOFT_FLOAT
-+ __gcc_qneg
-+ __gcc_qeq
-+ __gcc_qne
-+ __gcc_ggt
-+ __gcc_qge
-+ __gcc_qlt
-+ __gcc_qle
-+ __gcc_qunord
-+ __gcc_stoq
-+ __gcc_dtoq
-+ __gcc_qtos
-+ __gcc_qtod
-+ __gcc_qtoi
-+ __gcc_qtou
-+ __gcc_itoq
-+ __gcc_utoq
- %endif
-+}
-diff -urN gcc42-trunc-20060802/gcc/config/rs6000/rs6000.c gcc42-patched-20060802/gcc/config/rs6000/rs6000.c
---- gcc42-trunc-20060802/gcc/config/rs6000/rs6000.c 2006-08-02 11:07:16.000000000 -0500
-+++ gcc42-patched-20060802/gcc/config/rs6000/rs6000.c 2006-09-01 08:28:29.000000000 -0500
-@@ -4016,8 +4016,7 @@
-
- /* 128-bit constant floating-point values on Darwin should really be
- loaded as two parts. */
-- if (!TARGET_IEEEQUAD
-- && TARGET_HARD_FLOAT && TARGET_FPRS && TARGET_LONG_DOUBLE_128
-+ if (!TARGET_IEEEQUAD && TARGET_LONG_DOUBLE_128
- && mode == TFmode && GET_CODE (operands[1]) == CONST_DOUBLE)
- {
- /* DImode is used, not DFmode, because simplify_gen_subreg doesn't
-@@ -9175,9 +9174,6 @@
- static void
- rs6000_init_libfuncs (void)
- {
-- if (!TARGET_HARD_FLOAT)
-- return;
--
- if (DEFAULT_ABI != ABI_V4 && TARGET_XCOFF
- && !TARGET_POWER2 && !TARGET_POWERPC)
- {
-@@ -9196,6 +9192,27 @@
- set_optab_libfunc (sub_optab, TFmode, "__gcc_qsub");
- set_optab_libfunc (smul_optab, TFmode, "__gcc_qmul");
- set_optab_libfunc (sdiv_optab, TFmode, "__gcc_qdiv");
-+
-+ if (TARGET_SOFT_FLOAT)
-+ {
-+ set_optab_libfunc (neg_optab, TFmode, "__gcc_qneg");
-+ set_optab_libfunc (eq_optab, TFmode, "__gcc_qeq");
-+ set_optab_libfunc (ne_optab, TFmode, "__gcc_qne");
-+ set_optab_libfunc (gt_optab, TFmode, "__gcc_qgt");
-+ set_optab_libfunc (ge_optab, TFmode, "__gcc_qge");
-+ set_optab_libfunc (lt_optab, TFmode, "__gcc_qlt");
-+ set_optab_libfunc (le_optab, TFmode, "__gcc_qle");
-+ set_optab_libfunc (unord_optab, TFmode, "__gcc_qunord");
-+
-+ set_conv_libfunc (sext_optab, TFmode, SFmode, "__gcc_stoq");
-+ set_conv_libfunc (sext_optab, TFmode, DFmode, "__gcc_dtoq");
-+ set_conv_libfunc (trunc_optab, SFmode, TFmode, "__gcc_qtos");
-+ set_conv_libfunc (trunc_optab, DFmode, TFmode, "__gcc_qtod");
-+ set_conv_libfunc (sfix_optab, SImode, TFmode, "__gcc_qtoi");
-+ set_conv_libfunc (ufix_optab, SImode, TFmode, "__gcc_qtou");
-+ set_conv_libfunc (sfloat_optab, TFmode, SImode, "__gcc_itoq");
-+ set_conv_libfunc (ufloat_optab, TFmode, SImode, "__gcc_utoq");
-+ }
- }
- else
- {
-diff -urN gcc42-trunc-20060802/gcc/config/rs6000/rs6000.md gcc42-patched-20060802/gcc/config/rs6000/rs6000.md
---- gcc42-trunc-20060802/gcc/config/rs6000/rs6000.md 2006-08-02 11:07:16.000000000 -0500
-+++ gcc42-patched-20060802/gcc/config/rs6000/rs6000.md 2006-09-01 08:28:29.000000000 -0500
-@@ -7920,42 +7920,44 @@
- "")
-
- (define_insn "*movcc_internal1"
-- [(set (match_operand:CC 0 "nonimmediate_operand" "=y,x,?y,r,r,r,r,q,cl,r,m")
-- (match_operand:CC 1 "nonimmediate_operand" "y,r,r,x,y,r,h,r,r,m,r"))]
-+ [(set (match_operand:CC 0 "nonimmediate_operand" "=y,x,?y,y,r,r,r,r,r,q,cl,r,m")
-+ (match_operand:CC 1 "general_operand" "y,r,r,O,x,y,r,I,h,r,r,m,r"))]
- "register_operand (operands[0], CCmode)
- || register_operand (operands[1], CCmode)"
- "@
- mcrf %0,%1
- mtcrf 128,%1
- {rlinm|rlwinm} %1,%1,%F0,0xffffffff\;mtcrf %R0,%1\;{rlinm|rlwinm} %1,%1,%f0,0xffffffff
-+ crxor %0,%0,%0
- mfcr %0%Q1
- mfcr %0%Q1\;{rlinm|rlwinm} %0,%0,%f1,0xf0000000
- mr %0,%1
-+ {lil|li} %0,%1
- mf%1 %0
- mt%0 %1
- mt%0 %1
- {l%U1%X1|lwz%U1%X1} %0,%1
- {st%U0%U1|stw%U0%U1} %1,%0"
- [(set (attr "type")
-- (cond [(eq_attr "alternative" "0")
-+ (cond [(eq_attr "alternative" "0,3")
- (const_string "cr_logical")
- (eq_attr "alternative" "1,2")
- (const_string "mtcr")
-- (eq_attr "alternative" "5,7")
-+ (eq_attr "alternative" "6,7,9")
- (const_string "integer")
-- (eq_attr "alternative" "6")
-- (const_string "mfjmpr")
- (eq_attr "alternative" "8")
-+ (const_string "mfjmpr")
-+ (eq_attr "alternative" "10")
- (const_string "mtjmpr")
-- (eq_attr "alternative" "9")
-+ (eq_attr "alternative" "11")
- (const_string "load")
-- (eq_attr "alternative" "10")
-+ (eq_attr "alternative" "12")
- (const_string "store")
- (ne (symbol_ref "TARGET_MFCRF") (const_int 0))
- (const_string "mfcrf")
- ]
- (const_string "mfcr")))
-- (set_attr "length" "4,4,12,4,8,4,4,4,4,4,4")])
-+ (set_attr "length" "4,4,12,4,4,8,4,4,4,4,4,4,4")])
-
- ;; For floating-point, we normally deal with the floating-point registers
- ;; unless -msoft-float is used. The sole exception is that parameter passing
-@@ -8313,8 +8315,7 @@
- (define_expand "movtf"
- [(set (match_operand:TF 0 "general_operand" "")
- (match_operand:TF 1 "any_operand" ""))]
-- "!TARGET_IEEEQUAD
-- && TARGET_HARD_FLOAT && TARGET_FPRS && TARGET_LONG_DOUBLE_128"
-+ "!TARGET_IEEEQUAD && TARGET_LONG_DOUBLE_128"
- "{ rs6000_emit_move (operands[0], operands[1], TFmode); DONE; }")
-
- ; It's important to list the o->f and f->o moves before f->f because
-@@ -8333,6 +8334,19 @@
- { rs6000_split_multireg_move (operands[0], operands[1]); DONE; }
- [(set_attr "length" "8,8,8,20,20,16")])
-
-+(define_insn_and_split "*movtf_softfloat"
-+ [(set (match_operand:TF 0 "nonimmediate_operand" "=r,Y,r")
-+ (match_operand:TF 1 "input_operand" "YGHF,r,r"))]
-+ "!TARGET_IEEEQUAD
-+ && (TARGET_SOFT_FLOAT || !TARGET_FPRS) && TARGET_LONG_DOUBLE_128
-+ && (gpc_reg_operand (operands[0], TFmode)
-+ || gpc_reg_operand (operands[1], TFmode))"
-+ "#"
-+ "&& reload_completed"
-+ [(pc)]
-+{ rs6000_split_multireg_move (operands[0], operands[1]); DONE; }
-+ [(set_attr "length" "20,20,16")])
-+
- (define_expand "extenddftf2"
- [(parallel [(set (match_operand:TF 0 "nonimmediate_operand" "")
- (float_extend:TF (match_operand:DF 1 "input_operand" "")))
-diff -urN gcc42-trunc-20060802/gcc/config/rs6000/sysv4.h gcc42-patched-20060802/gcc/config/rs6000/sysv4.h
---- gcc42-trunc-20060802/gcc/config/rs6000/sysv4.h 2006-08-02 11:07:16.000000000 -0500
-+++ gcc42-patched-20060802/gcc/config/rs6000/sysv4.h 2006-09-01 08:28:29.000000000 -0500
-@@ -215,10 +215,6 @@
- error ("-msecure-plt not supported by your assembler"); \
- } \
- \
-- if (TARGET_SOFT_FLOAT && TARGET_LONG_DOUBLE_128 \
-- && rs6000_explicit_options.long_double) \
-- warning (0, "-msoft-float and -mlong-double-128 not supported"); \
-- \
- /* Treat -fPIC the same as -mrelocatable. */ \
- if (flag_pic > 1 && DEFAULT_ABI != ABI_AIX) \
- { \
-diff -urN gcc42-trunc-20060802/gcc/config/rs6000/t-ppccomm gcc42-patched-20060802/gcc/config/rs6000/t-ppccomm
---- gcc42-trunc-20060802/gcc/config/rs6000/t-ppccomm 2006-08-02 11:07:16.000000000 -0500
-+++ gcc42-patched-20060802/gcc/config/rs6000/t-ppccomm 2006-09-01 08:28:29.000000000 -0500
-@@ -12,15 +12,8 @@
- cat $(srcdir)/config/rs6000/tramp.asm > tramp.S
-
- ifneq (,$findstring gnu,$(target))
--TARGET_LIBGCC2_CFLAGS += -specs=ldblspecs
--
-+TARGET_LIBGCC2_CFLAGS += -mlong-double-128
- SHLIB_MAPFILES += $(srcdir)/config/rs6000/libgcc-ppc-glibc.ver
--
--# Hack to use -mlong-double-128 only when not compiling nof libgcc
--mklibgcc: ldblspecs
--
--ldblspecs: specs
-- sed -e '/cc1_options/{ n; s/$$/ %{!msoft-float:-mlong-double-128}/; }' < specs > $@
- endif
-
- # Switch synonyms