]> oss.titaniummirror.com Git - msp430-gcc.git/blobdiff - gcc/testsuite/gcc.dg/980414-1.c
Imported gcc-4.4.3
[msp430-gcc.git] / gcc / testsuite / gcc.dg / 980414-1.c
diff --git a/gcc/testsuite/gcc.dg/980414-1.c b/gcc/testsuite/gcc.dg/980414-1.c
deleted file mode 100644 (file)
index 59382ef..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-/* Test double on x86. */
-
-/* { dg-do run { target i?86-*-* } } */
-/* { dg-options -O2 } */
-
-extern void abort (void);
-
-static __inline  double
-mypow (double __x, double __y)
-{
-  register double __value, __exponent;
-  long __p = (long) __y;
-  if (__y == (double) __p)
-    {
-      double __r = 1.0;
-      if (__p == 0)
-       return 1.0;
-      if (__p < 0)
-       {
-         __p = -__p;
-         __x = 1.0 / __x;
-       }
-      while (1)
-       {
-         if (__p & 1)
-           __r *= __x;
-         __p >>= 1;
-         if (__p == 0)
-           return __r;
-         __x *= __x;
-       }
-    }
-  __asm __volatile__
-    ("fmul     %%st(1),%%st\n\t"       /* y * log2(x) */
-     "fst      %%st(1)\n\t"
-     "frndint\n\t"                     /* int(y * log2(x)) */
-     "fxch  %%st(1)\n\t"
-     "fsub     %%st(1),%%st\n\t"       /* fract(y * log2(x)) */
-     "f2xm1\n\t"                       /* 2^(fract(y * log2(x))) - 1 */
-     : "=t" (__value), "=u" (__exponent) :  "0" (__x), "1" (__y));
-  __value += 1.0;
-  __asm __volatile__
-    ("fscale"
-     : "=t" (__value) : "0" (__value), "u" (__exponent));
-  return __value;
-}
-
-const double E1 = 2.71828182845904523536028747135;
-
-double fact (double x)
-{
-  double corr;
-  corr = 1.0;
-  return corr * mypow(x/E1, x);
-}
-
-int main ()
-{
-  double y, z;
-
-  y = fact (46.2);
-  z = mypow (46.2/E1, 46.2);
-
-#if 0
-  printf ("%26.19e, %26.19e\n", y, z);
-#endif
-
-  if (y > z)
-    y -= z;
-  else
-    y = z - y;
-
-  y /= z;
-  if (y > 0.1)
-    abort ();
-  return 0;
-}