3cba3f0f987f8bed19813bf6055f158ea7ac7f86
[musl] / src / fenv / mips64 / fenv.S
1 #ifndef __mips_soft_float
2
3 .set    noreorder
4
5 .global feclearexcept
6 .type   feclearexcept,@function
7 feclearexcept:
8         and     $4, $4, 0x7c
9         cfc1    $5, $31
10         or      $5, $5, $4
11         xor     $5, $5, $4
12         ctc1    $5, $31
13         jr      $ra
14         li      $2, 0
15
16 .global feraiseexcept
17 .type   feraiseexcept,@function
18 feraiseexcept:
19         and     $4, $4, 0x7c
20         cfc1    $5, $31
21         or      $5, $5, $4
22         ctc1    $5, $31
23         jr      $ra
24         li      $2, 0
25
26 .global fetestexcept
27 .type   fetestexcept,@function
28 fetestexcept:
29         and     $4, $4, 0x7c
30         cfc1    $2, $31
31         jr      $ra
32         and     $2, $2, $4
33
34 .global fegetround
35 .type   fegetround,@function
36 fegetround:
37         cfc1    $2, $31
38         jr      $ra
39         andi    $2, $2, 3
40
41 .global __fesetround
42 .type   __fesetround,@function
43 __fesetround:
44         cfc1    $5, $31
45         li      $6, -4
46         and     $5, $5, $6
47         or      $5, $5, $4
48         ctc1    $5, $31
49         jr      $ra
50         li      $2, 0
51
52 .global fegetenv
53 .type   fegetenv,@function
54 fegetenv:
55         cfc1    $5, $31
56         sw      $5, 0($4)
57         jr      $ra
58         li      $2, 0
59
60 .global fesetenv
61 .type   fesetenv,@function
62 fesetenv:
63         daddiu  $5, $4, 1
64         beq     $5, $0, 1f
65         nop
66         lw      $5, 0($4)
67 1:      ctc1    $5, $31
68         jr      $ra
69         li      $2, 0
70
71 #endif