9a9b91c940
It's finally done.. Signed-off-by: kaguya <vpshinomiya@protonmail.com>
67 lines
1.1 KiB
ArmAsm
67 lines
1.1 KiB
ArmAsm
.global feclearexcept
|
|
.type feclearexcept, %function
|
|
feclearexcept:
|
|
li.w $t0, 0x1f0000
|
|
and $a0, $a0, $t0
|
|
movfcsr2gr $t1, $fcsr0
|
|
andn $t1, $t1, $a0
|
|
movgr2fcsr $fcsr0, $t1
|
|
li.w $a0, 0
|
|
jr $ra
|
|
|
|
.global feraiseexcept
|
|
.type feraiseexcept, %function
|
|
feraiseexcept:
|
|
li.w $t0, 0x1f0000
|
|
and $a0, $a0, $t0
|
|
movfcsr2gr $t1, $fcsr0
|
|
or $t1, $t1, $a0
|
|
movgr2fcsr $fcsr0, $t1
|
|
li.w $a0, 0
|
|
jr $ra
|
|
|
|
.global fetestexcept
|
|
.type fetestexcept, %function
|
|
fetestexcept:
|
|
li.w $t0, 0x1f0000
|
|
and $a0, $a0, $t0
|
|
movfcsr2gr $t1, $fcsr0
|
|
and $a0, $t1, $a0
|
|
jr $ra
|
|
|
|
.global fegetround
|
|
.type fegetround, %function
|
|
fegetround:
|
|
movfcsr2gr $t0, $fcsr0
|
|
andi $a0, $t0, 0x300
|
|
jr $ra
|
|
|
|
.global __fesetround
|
|
.type __fesetround, %function
|
|
__fesetround:
|
|
li.w $t0, 0x300
|
|
and $a0, $a0, $t0
|
|
movfcsr2gr $t1, $fcsr0
|
|
andn $t1, $t1, $t0
|
|
or $t1, $t1, $a0
|
|
movgr2fcsr $fcsr0, $t1
|
|
li.w $a0, 0
|
|
jr $ra
|
|
|
|
.global fegetenv
|
|
.type fegetenv, %function
|
|
fegetenv:
|
|
movfcsr2gr $t0, $fcsr0
|
|
st.w $t0, $a0, 0
|
|
li.w $a0, 0
|
|
jr $ra
|
|
|
|
.global fesetenv
|
|
.type fesetenv, %function
|
|
fesetenv:
|
|
addi.d $t0, $a0, 1
|
|
beq $t0, $r0, 1f
|
|
ld.w $t0, $a0, 0
|
|
1: movgr2fcsr $fcsr0, $t0
|
|
li.w $a0, 0
|
|
jr $ra |