1570af302Sopenharmony_ci.global fegetround
2570af302Sopenharmony_ci.type fegetround,%function
3570af302Sopenharmony_cifegetround:
4570af302Sopenharmony_ci	mrs x0, fpcr
5570af302Sopenharmony_ci	and w0, w0, #0xc00000
6570af302Sopenharmony_ci	ret
7570af302Sopenharmony_ci
8570af302Sopenharmony_ci.global __fesetround
9570af302Sopenharmony_ci.hidden __fesetround
10570af302Sopenharmony_ci.type __fesetround,%function
11570af302Sopenharmony_ci__fesetround:
12570af302Sopenharmony_ci	mrs x1, fpcr
13570af302Sopenharmony_ci	bic w1, w1, #0xc00000
14570af302Sopenharmony_ci	orr w1, w1, w0
15570af302Sopenharmony_ci	msr fpcr, x1
16570af302Sopenharmony_ci	mov w0, #0
17570af302Sopenharmony_ci	ret
18570af302Sopenharmony_ci
19570af302Sopenharmony_ci.global fetestexcept
20570af302Sopenharmony_ci.type fetestexcept,%function
21570af302Sopenharmony_cifetestexcept:
22570af302Sopenharmony_ci	and w0, w0, #0x1f
23570af302Sopenharmony_ci	mrs x1, fpsr
24570af302Sopenharmony_ci	and w0, w0, w1
25570af302Sopenharmony_ci	ret
26570af302Sopenharmony_ci
27570af302Sopenharmony_ci.global feclearexcept
28570af302Sopenharmony_ci.type feclearexcept,%function
29570af302Sopenharmony_cifeclearexcept:
30570af302Sopenharmony_ci	and w0, w0, #0x1f
31570af302Sopenharmony_ci	mrs x1, fpsr
32570af302Sopenharmony_ci	bic w1, w1, w0
33570af302Sopenharmony_ci	msr fpsr, x1
34570af302Sopenharmony_ci	mov w0, #0
35570af302Sopenharmony_ci	ret
36570af302Sopenharmony_ci
37570af302Sopenharmony_ci.global feraiseexcept
38570af302Sopenharmony_ci.type feraiseexcept,%function
39570af302Sopenharmony_ciferaiseexcept:
40570af302Sopenharmony_ci	and w0, w0, #0x1f
41570af302Sopenharmony_ci	mrs x1, fpsr
42570af302Sopenharmony_ci	orr w1, w1, w0
43570af302Sopenharmony_ci	msr fpsr, x1
44570af302Sopenharmony_ci	mov w0, #0
45570af302Sopenharmony_ci	ret
46570af302Sopenharmony_ci
47570af302Sopenharmony_ci.global fegetenv
48570af302Sopenharmony_ci.type fegetenv,%function
49570af302Sopenharmony_cifegetenv:
50570af302Sopenharmony_ci	mrs x1, fpcr
51570af302Sopenharmony_ci	mrs x2, fpsr
52570af302Sopenharmony_ci	stp w1, w2, [x0]
53570af302Sopenharmony_ci	mov w0, #0
54570af302Sopenharmony_ci	ret
55570af302Sopenharmony_ci
56570af302Sopenharmony_ci// TODO preserve some bits
57570af302Sopenharmony_ci.global fesetenv
58570af302Sopenharmony_ci.type fesetenv,%function
59570af302Sopenharmony_cifesetenv:
60570af302Sopenharmony_ci	mov x1, #0
61570af302Sopenharmony_ci	mov x2, #0
62570af302Sopenharmony_ci	cmn x0, #1
63570af302Sopenharmony_ci	b.eq 1f
64570af302Sopenharmony_ci	ldp w1, w2, [x0]
65570af302Sopenharmony_ci1:	msr fpcr, x1
66570af302Sopenharmony_ci	msr fpsr, x2
67570af302Sopenharmony_ci	mov w0, #0
68570af302Sopenharmony_ci	ret
69