Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/arch/mips/math-emu/sp_simple.c
26424 views
1
// SPDX-License-Identifier: GPL-2.0-only
2
/* IEEE754 floating point arithmetic
3
* single precision
4
*/
5
/*
6
* MIPS floating point support
7
* Copyright (C) 1994-2000 Algorithmics Ltd.
8
*/
9
10
#include "ieee754sp.h"
11
12
union ieee754sp ieee754sp_neg(union ieee754sp x)
13
{
14
union ieee754sp y;
15
16
if (ieee754_csr.abs2008) {
17
y = x;
18
SPSIGN(y) = !SPSIGN(x);
19
} else {
20
unsigned int oldrm;
21
22
oldrm = ieee754_csr.rm;
23
ieee754_csr.rm = FPU_CSR_RD;
24
y = ieee754sp_sub(ieee754sp_zero(0), x);
25
ieee754_csr.rm = oldrm;
26
}
27
return y;
28
}
29
30
union ieee754sp ieee754sp_abs(union ieee754sp x)
31
{
32
union ieee754sp y;
33
34
if (ieee754_csr.abs2008) {
35
y = x;
36
SPSIGN(y) = 0;
37
} else {
38
unsigned int oldrm;
39
40
oldrm = ieee754_csr.rm;
41
ieee754_csr.rm = FPU_CSR_RD;
42
if (SPSIGN(x))
43
y = ieee754sp_sub(ieee754sp_zero(0), x);
44
else
45
y = ieee754sp_add(ieee754sp_zero(0), x);
46
ieee754_csr.rm = oldrm;
47
}
48
return y;
49
}
50
51