/* Test float on alpha. */

/* { dg-do run { target alpha*-*-* } } */
/* { dg-options "-mieee -O2" } */

extern void abort(void);
extern int printf(const char *, ...);

typedef int int32_t __attribute__ ((__mode__ (  __SI__ ))) ;
typedef union
{
  float value;
  int32_t word;
} ieee_float_shape_type;

int isinff(float x)
{
  int32_t ix,t;
  ieee_float_shape_type gf_u;
  gf_u.value = x;
  ix = gf_u.word;
  printf ("%x\n", ix);
  t = ix & 0x7fffffff;
  t ^= 0x7f800000;
  t |= -t;
  return ~(t >> 31) & (1 - ((ix & 0x80000000) >> 30));
}

main ()
{
  float x = 1.0 / 0.0;
  int i = isinff (x);

  if (i == 0)
    abort ();

  printf ("%d\n", i);
  return 0;
}
