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

Subversion Repositories scarts

[/] [scarts/] [trunk/] [toolchain/] [scarts-gcc/] [gcc-4.1.1/] [gcc/] [config/] [scarts16/] [fixfloat.c] - Rev 12

Compare with Previous | Blame | View Log

#define LINT_MIN (0x80000000)
#define LINT_MAXp1_F 0x1p32f
#define LINT_WIDTH 32
 
#define LLINT_MAXp1_F 0x1p64f
 
double __floatdidf (long long u);
float __floatdisf (long long u);
unsigned long __fixunssfsi (float a);
unsigned long __fixunsdfsi (double a);
long long __fixsfdi (float a);
long long __fixunssfdi (float a);
long long __fixdfdi (double a);
long long __fixunsdfdi (double a);
 
double __floatdidf (long long u)
{
  double d = (long)(u >> LINT_WIDTH);
  d *= LINT_MAXp1_F;
  d += (unsigned long) u;
  return d;
}
 
float __floatdisf (long long u)
{
  double d = (long)(u >> LINT_WIDTH);
  d *= LINT_MAXp1_F;
  d += (unsigned long) u;
  return (float) d;
}
 
unsigned long __fixunssfsi (float a)
{
  if (a >= (float) (unsigned long) LINT_MIN)
    return (long) (a - (unsigned long) LINT_MIN) + (unsigned long) LINT_MIN;
  return (long) a;
}
 
unsigned long __fixunsdfsi (double a)
{
  if ( a >= (double) (unsigned long) LINT_MIN )
    return (long) (a - (unsigned long) LINT_MIN) + (unsigned long) LINT_MIN;
  return (long) a;
}
 
long long __fixsfdi (float a)
{
  if (a < 0)
    return - __fixunssfdi (-a);
  return __fixunssfdi (a);
}
 
long long __fixunssfdi (float a)
{
  double d = a;
  unsigned long hi = d / LINT_MAXp1_F;
  unsigned long lo = d - (double) hi * LINT_MAXp1_F;
  return ((unsigned long long) hi << LINT_WIDTH) | lo;
}
 
long long __fixdfdi (double a)
{
  if (a < 0)
    return - __fixunsdfdi (-a);
  return __fixunsdfdi (a);
}
 
long long __fixunsdfdi (double a)
{
  unsigned long hi = a / LINT_MAXp1_F;
  unsigned long lo = a - (double) hi * LINT_MAXp1_F;
  return ((unsigned long long) hi << LINT_WIDTH) | lo;
}
 

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.