arm64: dts: qcom: sm8550: add TRNG node
[linux-modified.git] / arch / mips / math-emu / dp_cmp.c
1 // SPDX-License-Identifier: GPL-2.0-only
2 /* IEEE754 floating point arithmetic
3  * double precision: common utilities
4  */
5 /*
6  * MIPS floating point support
7  * Copyright (C) 1994-2000 Algorithmics Ltd.
8  */
9
10 #include "ieee754dp.h"
11
12 int ieee754dp_cmp(union ieee754dp x, union ieee754dp y, int cmp, int sig)
13 {
14         s64 vx;
15         s64 vy;
16
17         COMPXDP;
18         COMPYDP;
19
20         EXPLODEXDP;
21         EXPLODEYDP;
22         FLUSHXDP;
23         FLUSHYDP;
24         ieee754_clearcx();      /* Even clear inexact flag here */
25
26         if (ieee754_class_nan(xc) || ieee754_class_nan(yc)) {
27                 if (sig ||
28                     xc == IEEE754_CLASS_SNAN || yc == IEEE754_CLASS_SNAN)
29                         ieee754_setcx(IEEE754_INVALID_OPERATION);
30                 return (cmp & IEEE754_CUN) != 0;
31         } else {
32                 vx = x.bits;
33                 vy = y.bits;
34
35                 if (vx < 0)
36                         vx = -vx ^ DP_SIGN_BIT;
37                 if (vy < 0)
38                         vy = -vy ^ DP_SIGN_BIT;
39
40                 if (vx < vy)
41                         return (cmp & IEEE754_CLT) != 0;
42                 else if (vx == vy)
43                         return (cmp & IEEE754_CEQ) != 0;
44                 else
45                         return (cmp & IEEE754_CGT) != 0;
46         }
47 }