/* Test float on alpha. */ /* { dg-do run } */ /* { 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; }