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

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-stable/] [gcc-4.5.1/] [gcc/] [testsuite/] [gcc.dg/] [tree-ssa/] [pr24627.c] - Rev 826

Compare with Previous | Blame | View Log

/* { dg-do run } */
/* { dg-options "-O" } */
/* { dg-require-effective-target int32plus } */
 
extern void abort (void);
typedef unsigned int u_int32;
 
typedef struct {
  union {u_int32 Xl_ui;} Ul_i;
  union {u_int32 Xl_uf;} Ul_f;
} l_fp;
 
void
dolfptoa (short ndec)
{
  l_fp work, ftmp;
 
  work.Ul_i.Xl_ui = 0;
  work.Ul_f.Xl_uf = 0x535f3d8;
 
  while (ndec > 0)
    {
      u_int32 lo_tmp;
      u_int32 hi_tmp;
 
      ndec--;
      work.Ul_i.Xl_ui = 0;
      work.Ul_i.Xl_ui <<= 1;
      if ((work.Ul_f.Xl_uf) & 0x80000000)
	(work.Ul_i.Xl_ui) |= 0x1;
      (work.Ul_f.Xl_uf) <<= 1;
 
      ftmp = work;
      (work.Ul_i.Xl_ui) <<= 1;
      if ((work.Ul_f.Xl_uf) & 0x80000000)
	(work.Ul_i.Xl_ui) |= 0x1;
      (work.Ul_f.Xl_uf) <<= 1;
 
      (work.Ul_i.Xl_ui) <<= 1;
      if ((work.Ul_f.Xl_uf) & 0x80000000)
	(work.Ul_i.Xl_ui) |= 0x1;
      (work.Ul_f.Xl_uf) <<= 1;
 
      lo_tmp = ((work.Ul_f.Xl_uf) & 0xffff) + ((ftmp.Ul_f.Xl_uf) & 0xffff);
      hi_tmp = (((work.Ul_f.Xl_uf) >> 16) & 0xffff)
               + (((ftmp.Ul_f.Xl_uf) >> 16) & 0xffff);
 
      if (lo_tmp & 0x10000)
	hi_tmp++;
 
      (work.Ul_f.Xl_uf) = ((hi_tmp & 0xffff) << 16) | (lo_tmp & 0xffff);
      (work.Ul_i.Xl_ui) += (ftmp.Ul_i.Xl_ui);
 
      if (hi_tmp & 0x10000)
	(work.Ul_i.Xl_ui)++;
 
 
      if (!(work.Ul_i.Xl_ui < 10))
	abort ();
    }
}
 
int main()
{
  dolfptoa(6);
  return 0;
}
 

Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

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