OpenCores
URL https://opencores.org/ocsvn/scarts/scarts/trunk

Subversion Repositories scarts

[/] [scarts/] [trunk/] [toolchain/] [scarts-gcc/] [gcc-4.1.1/] [gcc/] [testsuite/] [gcc.dg/] [tree-ssa/] [pr24627.c] - Blame information for rev 12

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 12 jlechner
/* { dg-do run } */
2
/* { dg-options "-O" } */
3
 
4
extern void abort (void);
5
typedef unsigned int u_int32;
6
 
7
typedef struct {
8
  union {u_int32 Xl_ui;} Ul_i;
9
  union {u_int32 Xl_uf;} Ul_f;
10
} l_fp;
11
 
12
void
13
dolfptoa (short ndec)
14
{
15
  l_fp work, ftmp;
16
 
17
  work.Ul_i.Xl_ui = 0;
18
  work.Ul_f.Xl_uf = 0x535f3d8;
19
 
20
  while (ndec > 0)
21
    {
22
      u_int32 lo_tmp;
23
      u_int32 hi_tmp;
24
 
25
      ndec--;
26
      work.Ul_i.Xl_ui = 0;
27
      work.Ul_i.Xl_ui <<= 1;
28
      if ((work.Ul_f.Xl_uf) & 0x80000000)
29
        (work.Ul_i.Xl_ui) |= 0x1;
30
      (work.Ul_f.Xl_uf) <<= 1;
31
 
32
      ftmp = work;
33
      (work.Ul_i.Xl_ui) <<= 1;
34
      if ((work.Ul_f.Xl_uf) & 0x80000000)
35
        (work.Ul_i.Xl_ui) |= 0x1;
36
      (work.Ul_f.Xl_uf) <<= 1;
37
 
38
      (work.Ul_i.Xl_ui) <<= 1;
39
      if ((work.Ul_f.Xl_uf) & 0x80000000)
40
        (work.Ul_i.Xl_ui) |= 0x1;
41
      (work.Ul_f.Xl_uf) <<= 1;
42
 
43
      lo_tmp = ((work.Ul_f.Xl_uf) & 0xffff) + ((ftmp.Ul_f.Xl_uf) & 0xffff);
44
      hi_tmp = (((work.Ul_f.Xl_uf) >> 16) & 0xffff)
45
               + (((ftmp.Ul_f.Xl_uf) >> 16) & 0xffff);
46
 
47
      if (lo_tmp & 0x10000)
48
        hi_tmp++;
49
 
50
      (work.Ul_f.Xl_uf) = ((hi_tmp & 0xffff) << 16) | (lo_tmp & 0xffff);
51
      (work.Ul_i.Xl_ui) += (ftmp.Ul_i.Xl_ui);
52
 
53
      if (hi_tmp & 0x10000)
54
        (work.Ul_i.Xl_ui)++;
55
 
56
 
57
      if (!(work.Ul_i.Xl_ui < 10))
58
        abort ();
59
    }
60
}
61
 
62
int main()
63
{
64
  dolfptoa(6);
65
  return 0;
66
}

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.