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

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

DEFINITIONS

This source file includes following definitions.
  1. ieee754dp_dump
  2. ieee754sp_dump

   1 // SPDX-License-Identifier: GPL-2.0-only
   2 /*
   3  * Some debug functions
   4  *
   5  * MIPS floating point support
   6  *
   7  * Copyright (C) 1994-2000 Algorithmics Ltd.
   8  *
   9  *  Nov 7, 2000
  10  *  Modified to build and operate in Linux kernel environment.
  11  *
  12  *  Kevin D. Kissell, kevink@mips.com and Carsten Langgaard, carstenl@mips.com
  13  *  Copyright (C) 2000 MIPS Technologies, Inc. All rights reserved.
  14  */
  15 
  16 #include <linux/types.h>
  17 #include <linux/printk.h>
  18 #include "ieee754.h"
  19 #include "ieee754sp.h"
  20 #include "ieee754dp.h"
  21 
  22 union ieee754dp ieee754dp_dump(char *m, union ieee754dp x)
  23 {
  24         int i;
  25 
  26         printk("%s", m);
  27         printk("<%08x,%08x>\n", (unsigned) (x.bits >> 32),
  28                (unsigned) x.bits);
  29         printk("\t=");
  30         switch (ieee754dp_class(x)) {
  31         case IEEE754_CLASS_QNAN:
  32         case IEEE754_CLASS_SNAN:
  33                 printk("Nan %c", DPSIGN(x) ? '-' : '+');
  34                 for (i = DP_FBITS - 1; i >= 0; i--)
  35                         printk("%c", DPMANT(x) & DP_MBIT(i) ? '1' : '0');
  36                 break;
  37         case IEEE754_CLASS_INF:
  38                 printk("%cInfinity", DPSIGN(x) ? '-' : '+');
  39                 break;
  40         case IEEE754_CLASS_ZERO:
  41                 printk("%cZero", DPSIGN(x) ? '-' : '+');
  42                 break;
  43         case IEEE754_CLASS_DNORM:
  44                 printk("%c0.", DPSIGN(x) ? '-' : '+');
  45                 for (i = DP_FBITS - 1; i >= 0; i--)
  46                         printk("%c", DPMANT(x) & DP_MBIT(i) ? '1' : '0');
  47                 printk("e%d", DPBEXP(x) - DP_EBIAS);
  48                 break;
  49         case IEEE754_CLASS_NORM:
  50                 printk("%c1.", DPSIGN(x) ? '-' : '+');
  51                 for (i = DP_FBITS - 1; i >= 0; i--)
  52                         printk("%c", DPMANT(x) & DP_MBIT(i) ? '1' : '0');
  53                 printk("e%d", DPBEXP(x) - DP_EBIAS);
  54                 break;
  55         default:
  56                 printk("Illegal/Unknown IEEE754 value class");
  57         }
  58         printk("\n");
  59         return x;
  60 }
  61 
  62 union ieee754sp ieee754sp_dump(char *m, union ieee754sp x)
  63 {
  64         int i;
  65 
  66         printk("%s=", m);
  67         printk("<%08x>\n", (unsigned) x.bits);
  68         printk("\t=");
  69         switch (ieee754sp_class(x)) {
  70         case IEEE754_CLASS_QNAN:
  71         case IEEE754_CLASS_SNAN:
  72                 printk("Nan %c", SPSIGN(x) ? '-' : '+');
  73                 for (i = SP_FBITS - 1; i >= 0; i--)
  74                         printk("%c", SPMANT(x) & SP_MBIT(i) ? '1' : '0');
  75                 break;
  76         case IEEE754_CLASS_INF:
  77                 printk("%cInfinity", SPSIGN(x) ? '-' : '+');
  78                 break;
  79         case IEEE754_CLASS_ZERO:
  80                 printk("%cZero", SPSIGN(x) ? '-' : '+');
  81                 break;
  82         case IEEE754_CLASS_DNORM:
  83                 printk("%c0.", SPSIGN(x) ? '-' : '+');
  84                 for (i = SP_FBITS - 1; i >= 0; i--)
  85                         printk("%c", SPMANT(x) & SP_MBIT(i) ? '1' : '0');
  86                 printk("e%d", SPBEXP(x) - SP_EBIAS);
  87                 break;
  88         case IEEE754_CLASS_NORM:
  89                 printk("%c1.", SPSIGN(x) ? '-' : '+');
  90                 for (i = SP_FBITS - 1; i >= 0; i--)
  91                         printk("%c", SPMANT(x) & SP_MBIT(i) ? '1' : '0');
  92                 printk("e%d", SPBEXP(x) - SP_EBIAS);
  93                 break;
  94         default:
  95                 printk("Illegal/Unknown IEEE754 value class");
  96         }
  97         printk("\n");
  98         return x;
  99 }

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