floating point environment/exceptions support for mips
This commit is contained in:
parent
97c8bdd88a
commit
f321de9e0a
2 changed files with 74 additions and 4 deletions
|
|
@ -1,10 +1,20 @@
|
||||||
#define FE_ALL_EXCEPT 0
|
#define FE_INEXACT 4
|
||||||
#define FE_TONEAREST 0
|
#define FE_UNDERFLOW 8
|
||||||
|
#define FE_OVERFLOW 16
|
||||||
|
#define FE_DIVBYZERO 32
|
||||||
|
#define FE_INVALID 64
|
||||||
|
|
||||||
typedef unsigned long fexcept_t;
|
#define FE_ALL_EXCEPT 124
|
||||||
|
|
||||||
|
#define FE_TONEAREST 0
|
||||||
|
#define FE_TOWARDZERO 1
|
||||||
|
#define FE_UPWARD 2
|
||||||
|
#define FE_DOWNWARD 3
|
||||||
|
|
||||||
|
typedef unsigned short fexcept_t;
|
||||||
|
|
||||||
typedef struct {
|
typedef struct {
|
||||||
unsigned long __cw;
|
unsigned __cw;
|
||||||
} fenv_t;
|
} fenv_t;
|
||||||
|
|
||||||
#define FE_DFL_ENV ((const fenv_t *) -1)
|
#define FE_DFL_ENV ((const fenv_t *) -1)
|
||||||
|
|
|
||||||
60
src/fenv/mips/fenv.s
Normal file
60
src/fenv/mips/fenv.s
Normal file
|
|
@ -0,0 +1,60 @@
|
||||||
|
.set noreorder
|
||||||
|
|
||||||
|
.global feclearexcept
|
||||||
|
.type feclearexcept,@function
|
||||||
|
feclearexcept:
|
||||||
|
cfc1 $5, $31
|
||||||
|
or $5, $5, $4
|
||||||
|
xor $5, $5, $4
|
||||||
|
ctc1 $5, $31
|
||||||
|
jr $ra
|
||||||
|
li $2, 0
|
||||||
|
|
||||||
|
.global feraiseexcept
|
||||||
|
.type feraiseexcept,@function
|
||||||
|
feraiseexcept:
|
||||||
|
cfc1 $5, $31
|
||||||
|
or $5, $5, $4
|
||||||
|
ctc1 $5, $31
|
||||||
|
jr $ra
|
||||||
|
li $2, 0
|
||||||
|
|
||||||
|
.global fetestexcept
|
||||||
|
.type fetestexcept,@function
|
||||||
|
fetestexcept:
|
||||||
|
cfc1 $2, $31
|
||||||
|
jr $ra
|
||||||
|
and $2, $2, $4
|
||||||
|
|
||||||
|
.global fegetround
|
||||||
|
.type fegetround,@function
|
||||||
|
fegetround:
|
||||||
|
cfc1 $2, $31
|
||||||
|
jr $ra
|
||||||
|
andi $2, $2, 3
|
||||||
|
|
||||||
|
.global fesetround
|
||||||
|
.type fesetround,@function
|
||||||
|
fesetround:
|
||||||
|
cfc1 $5, $31
|
||||||
|
li $6, -4
|
||||||
|
and $5, $5, $6
|
||||||
|
or $5, $5, $4
|
||||||
|
jr $ra
|
||||||
|
li $2, 0
|
||||||
|
|
||||||
|
.global fegetenv
|
||||||
|
.type fegetenv,@function
|
||||||
|
fegetenv:
|
||||||
|
cfc1 $5, $31
|
||||||
|
sw $5, 0($4)
|
||||||
|
jr $ra
|
||||||
|
li $2, 0
|
||||||
|
|
||||||
|
.global fesetenv
|
||||||
|
.type fesetenv,@function
|
||||||
|
fesetenv:
|
||||||
|
lw $5, 0($4)
|
||||||
|
ctc1 $5, $31
|
||||||
|
jr $ra
|
||||||
|
li $2, 0
|
||||||
Loading…
Add table
Add a link
Reference in a new issue