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