root/arch/mips/math-emu/sp_cmp.c

/* [<][>][^][v][top][bottom][index][help] */

DEFINITIONS

This source file includes following definitions.
  1. ieee754sp_cmp

   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 int ieee754sp_cmp(union ieee754sp x, union ieee754sp y, int cmp, int sig)
  13 {
  14         int vx;
  15         int vy;
  16 
  17         COMPXSP;
  18         COMPYSP;
  19 
  20         EXPLODEXSP;
  21         EXPLODEYSP;
  22         FLUSHXSP;
  23         FLUSHYSP;
  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 ^ SP_SIGN_BIT;
  37                 if (vy < 0)
  38                         vy = -vy ^ SP_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 }

/* [<][>][^][v][top][bottom][index][help] */