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

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

DEFINITIONS

This source file includes following definitions.
  1. ieee754dp_nan_fsp
  2. ieee754dp_fsp

   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 "ieee754sp.h"
  11 #include "ieee754dp.h"
  12 
  13 static inline union ieee754dp ieee754dp_nan_fsp(int xs, u64 xm)
  14 {
  15         return builddp(xs, DP_EMAX + 1 + DP_EBIAS,
  16                        xm << (DP_FBITS - SP_FBITS));
  17 }
  18 
  19 union ieee754dp ieee754dp_fsp(union ieee754sp x)
  20 {
  21         COMPXSP;
  22 
  23         EXPLODEXSP;
  24 
  25         ieee754_clearcx();
  26 
  27         FLUSHXSP;
  28 
  29         switch (xc) {
  30         case IEEE754_CLASS_SNAN:
  31                 return ieee754dp_nanxcpt(ieee754dp_nan_fsp(xs, xm));
  32 
  33         case IEEE754_CLASS_QNAN:
  34                 return ieee754dp_nan_fsp(xs, xm);
  35 
  36         case IEEE754_CLASS_INF:
  37                 return ieee754dp_inf(xs);
  38 
  39         case IEEE754_CLASS_ZERO:
  40                 return ieee754dp_zero(xs);
  41 
  42         case IEEE754_CLASS_DNORM:
  43                 /* normalize */
  44                 while ((xm >> SP_FBITS) == 0) {
  45                         xm <<= 1;
  46                         xe--;
  47                 }
  48                 break;
  49 
  50         case IEEE754_CLASS_NORM:
  51                 break;
  52         }
  53 
  54         /*
  55          * Can't possibly overflow,underflow, or need rounding
  56          */
  57 
  58         /* drop the hidden bit */
  59         xm &= ~SP_HIDDEN_BIT;
  60 
  61         return builddp(xs, xe + DP_EBIAS,
  62                        (u64) xm << (DP_FBITS - SP_FBITS));
  63 }

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