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

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

DEFINITIONS

This source file includes following definitions.
  1. ieee754dp_neg
  2. ieee754dp_abs

   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 union ieee754dp ieee754dp_neg(union ieee754dp x)
  13 {
  14         union ieee754dp y;
  15 
  16         if (ieee754_csr.abs2008) {
  17                 y = x;
  18                 DPSIGN(y) = !DPSIGN(x);
  19         } else {
  20                 unsigned int oldrm;
  21 
  22                 oldrm = ieee754_csr.rm;
  23                 ieee754_csr.rm = FPU_CSR_RD;
  24                 y = ieee754dp_sub(ieee754dp_zero(0), x);
  25                 ieee754_csr.rm = oldrm;
  26         }
  27         return y;
  28 }
  29 
  30 union ieee754dp ieee754dp_abs(union ieee754dp x)
  31 {
  32         union ieee754dp y;
  33 
  34         if (ieee754_csr.abs2008) {
  35                 y = x;
  36                 DPSIGN(y) = 0;
  37         } else {
  38                 unsigned int oldrm;
  39 
  40                 oldrm = ieee754_csr.rm;
  41                 ieee754_csr.rm = FPU_CSR_RD;
  42                 if (DPSIGN(x))
  43                         y = ieee754dp_sub(ieee754dp_zero(0), x);
  44                 else
  45                         y = ieee754dp_add(ieee754dp_zero(0), x);
  46                 ieee754_csr.rm = oldrm;
  47         }
  48         return y;
  49 }

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