git.ucc.asn.au
/
ipdf
/
code.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Tester based on Handbook of Floating-Point Arithmetic 1.1
[ipdf/code.git]
/
src
/
vfpu.h
diff --git
a/src/vfpu.h
b/src/vfpu.h
index
da130a4
..
12ac9bc
100644
(file)
--- a/
src/vfpu.h
+++ b/
src/vfpu.h
@@
-5,9
+5,11
@@
* Implements a terrible and hacky interface to use a virtual FPU to do floating point operations
*/
* Implements a terrible and hacky interface to use a virtual FPU to do floating point operations
*/
+#include <bitset>
+
namespace VFPU
{
namespace VFPU
{
- extern int Start(); // Starts the VFPU
+ extern int Start(
const char * vcd_output = NULL
); // Starts the VFPU
extern int Halt(); // Halts the VFPU
/**
extern int Halt(); // Halts the VFPU
/**
@@
-21,10
+23,11
@@
namespace VFPU
-- 111 = unused
*/
typedef enum {ADD=0x000, SUB=0x001, MULT=0x010, DIV=0x011, SQRT=0x100} Opcode;
-- 111 = unused
*/
typedef enum {ADD=0x000, SUB=0x001, MULT=0x010, DIV=0x011, SQRT=0x100} Opcode;
- typedef float Register;
+ typedef enum {EVEN=0x00, ZERO=0x01, UP=0x10, DOWN=0x11} Rmode;
+ typedef std::bitset<32> Register;
- extern Register Exec(const Register & a, const Register & b, Opcode op
);
-
+ extern Register Exec(const Register & a, const Register & b, Opcode op
, Rmode rmode = EVEN); // operate with registers
+ extern float Exec(float a, float b, Opcode op, Rmode rmode = EVEN); //converts floats into registers and back
}
#endif //_VFPU_H
}
#endif //_VFPU_H
UCC
git Repository :: git.ucc.asn.au