1/* Test float on alpha. */
2
3/* { dg-do run } */
4/* { dg-options "-mieee -O2" } */
5
6extern void abort(void);
7extern int printf(const char *, ...);
8
9typedef int int32_t __attribute__ ((__mode__ (  __SI__ ))) ;
10typedef union
11{
12  float value;
13  int32_t word;
14} ieee_float_shape_type;
15
16int isinff(float x)
17{
18  int32_t ix,t;
19  ieee_float_shape_type gf_u;
20  gf_u.value = x;
21  ix = gf_u.word;
22  printf ("%x\n", ix);
23  t = ix & 0x7fffffff;
24  t ^= 0x7f800000;
25  t |= -t;
26  return ~(t >> 31) & (1 - ((ix & 0x80000000) >> 30));
27}
28
29main ()
30{
31  float x = 1.0 / 0.0;
32  int i = isinff (x);
33
34  if (i == 0)
35    abort ();
36
37  printf ("%d\n", i);
38  return 0;
39}
40