This repo intends to create wrappers for open source FPU hardware implementations currently including:
op | berkeley-hardfloat | fpnew | flopoco | CNRV-FPU | opencores-fpu | fudian | vfloat |
---|---|---|---|---|---|---|---|
add | Y | Y | Y | Y | Y | Y | Y |
mul | Y | Y | Y | Y | Y | Y | Y |
fma | Y | Y | Y | Y | Y | Y | |
cmp | Y | Y | Y | Y | |||
div | Y | Y | Y | Y | Y | Y | Y |
sqrt | Y | Y | Y | Y | Y | Y | |
fp2int | Y | Y | Y | Y | Y | Y | Y |
int2fp | Y | Y | Y | Y | Y | Y | Y |
fp2fp | Y | Y | Y | Y | |||
pow | Y | ||||||
log | Y | ||||||
exp | Y | ||||||
custom | Y | Y |
custom
means custom floating point format.
And make performance comparison.
Module naming convection:
- Type 1: Floating point format + operator(FAdd/FMA/FExp)
- Type 2: Floating point format
To
Floating point format - Type 3: Floating point format + FPU(many operations)
Possible floating point formats:
- HF: berkeley-hardfloat +1 bits
- IEEE: IEEE 754
- FPC: flopoco +2 bits
IEEE754 FMA:
- Area: fpnew = flopoco < hardfloat < fudian
- Frequency: hardfloat = flopoco > fpnew > fudian
- Power: fpnew < hardfloat < flopoco < fudian