xref: /aosp_15_r20/external/musl/src/fenv/arm/fenv-hf.S (revision c9945492fdd68bbe62686c5b452b4dc1be3f8453)
1*c9945492SAndroid Build Coastguard Worker#if __ARM_PCS_VFP
2*c9945492SAndroid Build Coastguard Worker
3*c9945492SAndroid Build Coastguard Worker.syntax unified
4*c9945492SAndroid Build Coastguard Worker.fpu vfp
5*c9945492SAndroid Build Coastguard Worker
6*c9945492SAndroid Build Coastguard Worker.global fegetround
7*c9945492SAndroid Build Coastguard Worker.type fegetround,%function
8*c9945492SAndroid Build Coastguard Workerfegetround:
9*c9945492SAndroid Build Coastguard Worker	fmrx r0, fpscr
10*c9945492SAndroid Build Coastguard Worker	and r0, r0, #0xc00000
11*c9945492SAndroid Build Coastguard Worker	bx lr
12*c9945492SAndroid Build Coastguard Worker
13*c9945492SAndroid Build Coastguard Worker.global __fesetround
14*c9945492SAndroid Build Coastguard Worker.hidden __fesetround
15*c9945492SAndroid Build Coastguard Worker.type __fesetround,%function
16*c9945492SAndroid Build Coastguard Worker__fesetround:
17*c9945492SAndroid Build Coastguard Worker	fmrx r3, fpscr
18*c9945492SAndroid Build Coastguard Worker	bic r3, r3, #0xc00000
19*c9945492SAndroid Build Coastguard Worker	orr r3, r3, r0
20*c9945492SAndroid Build Coastguard Worker	fmxr fpscr, r3
21*c9945492SAndroid Build Coastguard Worker	mov r0, #0
22*c9945492SAndroid Build Coastguard Worker	bx lr
23*c9945492SAndroid Build Coastguard Worker
24*c9945492SAndroid Build Coastguard Worker.global fetestexcept
25*c9945492SAndroid Build Coastguard Worker.type fetestexcept,%function
26*c9945492SAndroid Build Coastguard Workerfetestexcept:
27*c9945492SAndroid Build Coastguard Worker	and r0, r0, #0x1f
28*c9945492SAndroid Build Coastguard Worker	fmrx r3, fpscr
29*c9945492SAndroid Build Coastguard Worker	and r0, r0, r3
30*c9945492SAndroid Build Coastguard Worker	bx lr
31*c9945492SAndroid Build Coastguard Worker
32*c9945492SAndroid Build Coastguard Worker.global feclearexcept
33*c9945492SAndroid Build Coastguard Worker.type feclearexcept,%function
34*c9945492SAndroid Build Coastguard Workerfeclearexcept:
35*c9945492SAndroid Build Coastguard Worker	and r0, r0, #0x1f
36*c9945492SAndroid Build Coastguard Worker	fmrx r3, fpscr
37*c9945492SAndroid Build Coastguard Worker	bic r3, r3, r0
38*c9945492SAndroid Build Coastguard Worker	fmxr fpscr, r3
39*c9945492SAndroid Build Coastguard Worker	mov r0, #0
40*c9945492SAndroid Build Coastguard Worker	bx lr
41*c9945492SAndroid Build Coastguard Worker
42*c9945492SAndroid Build Coastguard Worker.global feraiseexcept
43*c9945492SAndroid Build Coastguard Worker.type feraiseexcept,%function
44*c9945492SAndroid Build Coastguard Workerferaiseexcept:
45*c9945492SAndroid Build Coastguard Worker	and r0, r0, #0x1f
46*c9945492SAndroid Build Coastguard Worker	fmrx r3, fpscr
47*c9945492SAndroid Build Coastguard Worker	orr r3, r3, r0
48*c9945492SAndroid Build Coastguard Worker	fmxr fpscr, r3
49*c9945492SAndroid Build Coastguard Worker	mov r0, #0
50*c9945492SAndroid Build Coastguard Worker	bx lr
51*c9945492SAndroid Build Coastguard Worker
52*c9945492SAndroid Build Coastguard Worker.global fegetenv
53*c9945492SAndroid Build Coastguard Worker.type fegetenv,%function
54*c9945492SAndroid Build Coastguard Workerfegetenv:
55*c9945492SAndroid Build Coastguard Worker	fmrx r3, fpscr
56*c9945492SAndroid Build Coastguard Worker	str r3, [r0]
57*c9945492SAndroid Build Coastguard Worker	mov r0, #0
58*c9945492SAndroid Build Coastguard Worker	bx lr
59*c9945492SAndroid Build Coastguard Worker
60*c9945492SAndroid Build Coastguard Worker.global fesetenv
61*c9945492SAndroid Build Coastguard Worker.type fesetenv,%function
62*c9945492SAndroid Build Coastguard Workerfesetenv:
63*c9945492SAndroid Build Coastguard Worker	cmn r0, #1
64*c9945492SAndroid Build Coastguard Worker	moveq r3, #0
65*c9945492SAndroid Build Coastguard Worker	ldrne r3, [r0]
66*c9945492SAndroid Build Coastguard Worker	fmxr fpscr, r3
67*c9945492SAndroid Build Coastguard Worker	mov r0, #0
68*c9945492SAndroid Build Coastguard Worker	bx lr
69*c9945492SAndroid Build Coastguard Worker
70*c9945492SAndroid Build Coastguard Worker#endif
71