generic
[Softloat]

Architecture independent parts of FPU software emulation library. More...

Files

file  add.c
file  add.h
file  common.c
file  common.h
file  comparison.c
file  comparison.h
file  conversion.c
file  conversion.h
file  div.c
file  div.h
file  mul.c
file  mul.h
file  other.c
file  other.h
file  sftypes.h
file  softfloat.c
file  softfloat.h
file  sub.c
file  sub.h

Data Structures

union  float32
union  float64

Defines

#define FLOAT32_BIAS   0x7F
#define FLOAT32_FRACTION_SIZE   23
#define FLOAT32_HIDDEN_BIT_MASK   0x800000
#define FLOAT32_INF   0x7F800000
#define FLOAT32_MAX   0x7f800000
#define FLOAT32_MAX_EXPONENT   0xFF
#define FLOAT32_MIN   0xff800000
#define FLOAT32_NAN   0x7FC00001
#define FLOAT32_SIGNAN   0x7F800001
#define FLOAT64_BIAS   0x3FF
#define FLOAT64_FRACTION_SIZE   52
#define FLOAT64_HIDDEN_BIT_MASK   0x10000000000000ll
#define FLOAT64_INF   0x7FF0000000000000ll
#define FLOAT64_MAX
#define FLOAT64_MAX_EXPONENT   0x7FF
#define FLOAT64_MIN
#define FLOAT64_NAN   0x7FF8000000000001ll
#define FLOAT64_SIGNAN   0x7FF0000000000001ll
#define FLOAT80_BIAS   0x3FFF

Functions

double __adddf3 (double a, double b)
float __addsf3 (float a, float b)
int __cmpsf2 (float a, float b)
double __divdf3 (double a, double b)
float __divsf3 (float a, float b)
int __eqsf2 (float a, float b)
double __extendsfdf2 (float a)
long __fixdfdi (double a)
int __fixdfsi (double a)
long long __fixdfti (double a)
long __fixsfdi (float a)
int __fixsfsi (float a)
long long __fixsfti (float a)
unsigned long __fixunsdfdi (double a)
unsigned int __fixunsdfsi (double a)
unsigned long long __fixunsdfti (double a)
unsigned long __fixunssfdi (float a)
unsigned int __fixunssfsi (float a)
unsigned long long __fixunssfti (float a)
double __floatdidf (long i)
float __floatdisf (long i)
double __floatsidf (int i)
float __floatsisf (int i)
double __floattidf (long long i)
float __floattisf (long long i)
double __floatundidf (unsigned long i)
float __floatundisf (unsigned long i)
double __floatunsidf (unsigned int i)
float __floatunsisf (unsigned int i)
double __floatuntidf (unsigned long long i)
float __floatuntisf (unsigned long long i)
int __gesf2 (float a, float b)
int __gtsf2 (float a, float b)
 Return positive value, if a>b and neither is NaN.
int __lesf2 (float a, float b)
int __ltsf2 (float a, float b)
 Return negative value, if a<b and neither is NaN.
double __muldf3 (double a, double b)
float __mulsf3 (float a, float b)
double __negdf2 (double a)
float __negsf2 (float a)
int __nesf2 (float a, float b)
float __powisf2 (float a, int b)
double __subdf3 (double a, double b)
float __subsf3 (float a, float b)
float __truncdfsf2 (double a)
int __unordsf2 (float a, float b)
static uint32_t _float32_to_uint32_helper (float32 a)
 Helping procedure for converting float32 to uint32.
static uint64_t _float32_to_uint64_helper (float32 a)
 Helping procedure for converting float32 to uint64.
static uint64_t _float64_to_uint64_helper (float64 a)
 Helping procedure for converting float64 to uint64.
float32 addFloat32 (float32 a, float32 b)
 Add two Float32 numbers with same signs.
float64 addFloat64 (float64 a, float64 b)
 Add two Float64 numbers with same signs.
float64 convertFloat32ToFloat64 (float32 a)
float32 convertFloat64ToFloat32 (float64 a)
int countZeroes32 (uint32_t i)
 Counts leading zeroes in 32bit unsigned integer.
int countZeroes64 (uint64_t i)
 Counts leading zeroes in 64bit unsigned integer.
int countZeroes8 (uint8_t i)
 Counts leading zeroes in byte.
float32 divFloat32 (float32 a, float32 b)
float64 divFloat64 (float64 a, float64 b)
uint64_t divFloat64estim (uint64_t a, uint64_t b)
float64 finishFloat64 (int32_t cexp, uint64_t cfrac, char sign)
 Take fraction shifted by 10 bits to left, round it, normalize it and detect exceptions.
int32_t float32_to_int32 (float32 a)
int64_t float32_to_int64 (float32 a)
uint32_t float32_to_uint32 (float32 a)
uint64_t float32_to_uint64 (float32 a)
int32_t float64_to_int32 (float64 a)
int64_t float64_to_int64 (float64 a)
uint32_t float64_to_uint32 (float64 a)
uint64_t float64_to_uint64 (float64 a)
float32 int32_to_float32 (int32_t i)
float64 int32_to_float64 (int32_t i)
float32 int64_to_float32 (int64_t i)
float64 int64_to_float64 (int64_t i)
int isFloat32eq (float32 a, float32 b)
int isFloat32gt (float32 a, float32 b)
int isFloat32Infinity (float32 f)
int isFloat32lt (float32 a, float32 b)
int isFloat32NaN (float32 f)
int isFloat32SigNaN (float32 f)
int isFloat32Zero (float32 f)
int isFloat64Infinity (float64 d)
int isFloat64NaN (float64 d)
int isFloat64SigNaN (float64 d)
int isFloat64Zero (float64 d)
void mul64integers (uint64_t a, uint64_t b, uint64_t *lo, uint64_t *hi)
 Multiply two 64 bit numbers and return result in two parts.
float32 mulFloat32 (float32 a, float32 b)
 Multiply two 32 bit float numbers.
float64 mulFloat64 (float64 a, float64 b)
 Multiply two 64 bit float numbers.
void roundFloat32 (int32_t *exp, uint32_t *fraction)
 Round and normalize number expressed by exponent and fraction with first bit (equal to hidden bit) at 30.
void roundFloat64 (int32_t *exp, uint64_t *fraction)
 Round and normalize number expressed by exponent and fraction with first bit (equal to hidden bit) at 62.
float32 subFloat32 (float32 a, float32 b)
 Subtract two float32 numbers with same signs.
float64 subFloat64 (float64 a, float64 b)
 Subtract two float64 numbers with same signs.
float32 uint32_to_float32 (uint32_t i)
 Convert unsigned integer to float32.
float64 uint32_to_float64 (uint32_t i)
 Convert unsigned integer to float64.
float32 uint64_to_float32 (uint64_t i)
float64 uint64_to_float64 (uint64_t i)

Variables

char zeroTable [256]

Detailed Description

Architecture independent parts of FPU software emulation library.


Function Documentation

int __eqsf2 ( float  a,
float  b 
)

Returns:
zero, if neither argument is a NaN and are equal

Definition at line 392 of file softfloat.c.

static uint32_t _float32_to_uint32_helper ( float32  a  )  [static]

Helping procedure for converting float32 to uint32.

Parameters:
a floating point number in normalized form (no NaNs or Inf are checked )
Returns:
unsigned integer

Definition at line 153 of file conversion.c.

static uint64_t _float32_to_uint64_helper ( float32  a  )  [static]

Helping procedure for converting float32 to uint64.

Parameters:
a floating point number in normalized form (no NaNs or Inf are checked )
Returns:
unsigned integer

Definition at line 292 of file conversion.c.

static uint64_t _float64_to_uint64_helper ( float64  a  )  [static]

Helping procedure for converting float64 to uint64.

Parameters:
a floating point number in normalized form (no NaNs or Inf are checked )
Returns:
unsigned integer

Definition at line 220 of file conversion.c.

int countZeroes32 ( uint32_t  i  ) 

Counts leading zeroes in 32bit unsigned integer.

Parameters:
i 

Definition at line 143 of file common.c.

int countZeroes64 ( uint64_t  i  ) 

Counts leading zeroes in 64bit unsigned integer.

Parameters:
i 

Definition at line 128 of file common.c.

int countZeroes8 ( uint8_t  i  ) 

Counts leading zeroes in byte.

Parameters:
i 

Definition at line 158 of file common.c.

float64 finishFloat64 ( int32_t  cexp,
uint64_t  cfrac,
char  sign 
)

Take fraction shifted by 10 bits to left, round it, normalize it and detect exceptions.

Parameters:
cexp exponent with bias
cfrac fraction shifted 10 places left with added hidden bit
sign 
Returns:
valied float64

Definition at line 66 of file common.c.

int isFloat32eq ( float32  a,
float32  b 
)

Returns:
1 if both floats are equal - but NaNs are not recognized

Definition at line 85 of file comparison.c.

int isFloat32gt ( float32  a,
float32  b 
)

Returns:
1 if a > b - but NaNs are not recognized

Definition at line 112 of file comparison.c.

int isFloat32lt ( float32  a,
float32  b 
)

Returns:
1 if a < b - but NaNs are not recognized

Definition at line 94 of file comparison.c.

void mul64integers ( uint64_t  a,
uint64_t  b,
uint64_t *  lo,
uint64_t *  hi 
)

Multiply two 64 bit numbers and return result in two parts.

Parameters:
a first operand
b second operand
lo lower part from result
hi higher part of result

Definition at line 266 of file mul.c.

void roundFloat32 ( int32_t *  exp,
uint32_t *  fraction 
)

Round and normalize number expressed by exponent and fraction with first bit (equal to hidden bit) at 30.

bit

Parameters:
exp exponent
fraction part with hidden bit shifted to 30. bit

Definition at line 167 of file common.c.

void roundFloat64 ( int32_t *  exp,
uint64_t *  fraction 
)

Round and normalize number expressed by exponent and fraction with first bit (equal to hidden bit) at 62.

bit

Parameters:
exp exponent
fraction part with hidden bit shifted to 62. bit

Definition at line 192 of file common.c.


Generated on Thu Jun 2 07:45:57 2011 for HelenOS/USB by  doxygen 1.4.7