OSDN Git Service

New alpha test from HJ.
authorlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 17 Feb 1998 21:24:02 +0000 (21:24 +0000)
committerlaw <law@138bc75d-0d04-0410-961f-82ee72b054a4>
Tue, 17 Feb 1998 21:24:02 +0000 (21:24 +0000)
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@18046 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/testsuite/gcc.dg/980217-1.c [new file with mode: 0644]

diff --git a/gcc/testsuite/gcc.dg/980217-1.c b/gcc/testsuite/gcc.dg/980217-1.c
new file mode 100644 (file)
index 0000000..2236e84
--- /dev/null
@@ -0,0 +1,36 @@
+/* Test float on alpha. */
+
+/* { dg-do run { target alpha*-*-* } } */
+/* { dg-options "-mieee -O2" } */
+
+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;
+}