------- Comment #8 from pinskia at gcc dot gnu dot org  2005-12-13 22:51 -------
(In reply to comment #7)
> Could you please send me the preprocessed source for this?
/* Compile with -O2 -m32 -fPIC */
typedef float DFtype __attribute__ ((mode (DF)));
typedef _Complex float DCtype __attribute__ ((mode (DC)));
DCtype
__muldc3 (DFtype a, DFtype b, DFtype c, DFtype d)
{
  DFtype ac, bd, ad, bc, x, y;
  bd = b * d;
  __asm__ ("" : "=m"(ad) : "m"(ad));
  __asm__ ("" : "=m"(bc) : "m"(bc));
  x = ac - bd;
  y = ad + bc;
  if (__builtin_expect ((x) != (x), 0) && __builtin_expect ((y) != (y), 0))
    {
      _Bool recalc = 0;
      if (__builtin_expect (!__builtin_expect ((a) != (a), 0) &
!__builtin_expect (!__builtin_expect (((a) - (a)) != ((a) - (a)), 0), 1), 0) ||
__builtin_expect (!__builtin_expect ((b) != (b), 0) & !__builtin_expect
(!__builtin_expect (((b) - (b)) != ((b) - (b)), 0), 1), 0))
 {
   a = __builtin_copysign (__builtin_expect (!__builtin_expect ((a) != (a), 0)
& !__builtin_expect (!__builtin_expect (((a) - (a)) != ((a) - (a)), 0), 1), 0)
? 1 : 0, a);
   b = __builtin_copysign (__builtin_expect (!__builtin_expect ((b) != (b), 0)
& !__builtin_expect (!__builtin_expect (((b) - (b)) != ((b) - (b)), 0), 1), 0)
? 1 : 0, b);
   if (__builtin_expect ((d) != (d), 0)) d = __builtin_copysign (0, d);
          recalc = 1;
 }
     if (__builtin_expect (!__builtin_expect ((c) != (c), 0) &
!__builtin_expect (!__builtin_expect (((c) - (c)) != ((c) - (c)), 0), 1), 0) ||
__builtin_expect (!__builtin_expect ((d) != (d), 0) & !__builtin_expect
(!__builtin_expect (((d) - (d)) != ((d) - (d)), 0), 1), 0))
 {
   c = __builtin_copysign (__builtin_expect (!__builtin_expect ((c) != (c), 0)
& !__builtin_expect (!__builtin_expect (((c) - (c)) != ((c) - (c)), 0), 1), 0)
? 1 : 0, c);
 }
     if (!recalc
   && (__builtin_expect (!__builtin_expect ((ac) != (ac), 0) &
!__builtin_expect (!__builtin_expect (((ac) - (ac)) != ((ac) - (ac)), 0), 1),
0) || __builtin_expect (!__builtin_expect ((bd) != (bd), 0) & !__builtin_expect
(!__builtin_expect (((bd) - (bd)) != ((bd) - (bd)), 0), 1), 0)
       || __builtin_expect (!__builtin_expect ((ad) != (ad), 0) &
!__builtin_expect (!__builtin_expect (((ad) - (ad)) != ((ad) - (ad)), 0), 1),
0) || __builtin_expect (!__builtin_expect ((bc) != (bc), 0) & !__builtin_expect
(!__builtin_expect (((bc) - (bc)) != ((bc) - (bc)), 0), 1), 0)))
 {
   recalc = 1;
 }
      if (recalc)
 {
   x = __builtin_inf () * (a * c - b * d);
 }
    }
  return x + 1i * y;
}


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=25397

Reply via email to