VisionFive2 Linux kernel

StarFive Tech Linux Kernel for VisionFive (JH7110) boards (mirror)

More than 9999 Commits   32 Branches   54 Tags
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700   1) /* Software floating-point emulation.
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700   2)    Definitions for IEEE Double Precision
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700   3)    Copyright (C) 1997,1998,1999 Free Software Foundation, Inc.
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700   4)    This file is part of the GNU C Library.
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700   5)    Contributed by Richard Henderson (rth@cygnus.com),
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700   6) 		  Jakub Jelinek (jj@ultra.linux.cz),
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700   7) 		  David S. Miller (davem@redhat.com) and
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700   8) 		  Peter Maydell (pmaydell@chiark.greenend.org.uk).
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700   9) 
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  10)    The GNU C Library is free software; you can redistribute it and/or
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  11)    modify it under the terms of the GNU Library General Public License as
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  12)    published by the Free Software Foundation; either version 2 of the
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  13)    License, or (at your option) any later version.
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  14) 
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  15)    The GNU C Library is distributed in the hope that it will be useful,
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  16)    but WITHOUT ANY WARRANTY; without even the implied warranty of
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  17)    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  18)    Library General Public License for more details.
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  19) 
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  20)    You should have received a copy of the GNU Library General Public
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  21)    License along with the GNU C Library; see the file COPYING.LIB.  If
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  22)    not, write to the Free Software Foundation, Inc.,
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  23)    59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  */
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  24) 
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  25) #ifndef    __MATH_EMU_DOUBLE_H__
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  26) #define    __MATH_EMU_DOUBLE_H__
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  27) 
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  28) #if _FP_W_TYPE_SIZE < 32
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  29) #error "Here's a nickel kid.  Go buy yourself a real computer."
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  30) #endif
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  31) 
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  32) #if _FP_W_TYPE_SIZE < 64
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  33) #define _FP_FRACTBITS_D		(2 * _FP_W_TYPE_SIZE)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  34) #else
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  35) #define _FP_FRACTBITS_D		_FP_W_TYPE_SIZE
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  36) #endif
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  37) 
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  38) #define _FP_FRACBITS_D		53
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  39) #define _FP_FRACXBITS_D		(_FP_FRACTBITS_D - _FP_FRACBITS_D)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  40) #define _FP_WFRACBITS_D		(_FP_WORKBITS + _FP_FRACBITS_D)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  41) #define _FP_WFRACXBITS_D	(_FP_FRACTBITS_D - _FP_WFRACBITS_D)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  42) #define _FP_EXPBITS_D		11
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  43) #define _FP_EXPBIAS_D		1023
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  44) #define _FP_EXPMAX_D		2047
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  45) 
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  46) #define _FP_QNANBIT_D		\
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  47) 	((_FP_W_TYPE)1 << (_FP_FRACBITS_D-2) % _FP_W_TYPE_SIZE)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  48) #define _FP_IMPLBIT_D		\
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  49) 	((_FP_W_TYPE)1 << (_FP_FRACBITS_D-1) % _FP_W_TYPE_SIZE)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  50) #define _FP_OVERFLOW_D		\
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  51) 	((_FP_W_TYPE)1 << _FP_WFRACBITS_D % _FP_W_TYPE_SIZE)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  52) 
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  53) #if _FP_W_TYPE_SIZE < 64
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  54) 
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  55) union _FP_UNION_D
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  56) {
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  57)   double flt;
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  58)   struct {
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  59) #if __BYTE_ORDER == __BIG_ENDIAN
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  60)     unsigned sign  : 1;
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  61)     unsigned exp   : _FP_EXPBITS_D;
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  62)     unsigned frac1 : _FP_FRACBITS_D - (_FP_IMPLBIT_D != 0) - _FP_W_TYPE_SIZE;
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  63)     unsigned frac0 : _FP_W_TYPE_SIZE;
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  64) #else
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  65)     unsigned frac0 : _FP_W_TYPE_SIZE;
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  66)     unsigned frac1 : _FP_FRACBITS_D - (_FP_IMPLBIT_D != 0) - _FP_W_TYPE_SIZE;
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  67)     unsigned exp   : _FP_EXPBITS_D;
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  68)     unsigned sign  : 1;
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  69) #endif
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  70)   } bits __attribute__((packed));
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  71) };
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  72) 
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  73) #define FP_DECL_D(X)		_FP_DECL(2,X)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  74) #define FP_UNPACK_RAW_D(X,val)	_FP_UNPACK_RAW_2(D,X,val)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  75) #define FP_UNPACK_RAW_DP(X,val)	_FP_UNPACK_RAW_2_P(D,X,val)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  76) #define FP_PACK_RAW_D(val,X)	_FP_PACK_RAW_2(D,val,X)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  77) #define FP_PACK_RAW_DP(val,X)		\
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  78)   do {					\
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  79)     if (!FP_INHIBIT_RESULTS)		\
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  80)       _FP_PACK_RAW_2_P(D,val,X);	\
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  81)   } while (0)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  82) 
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  83) #define FP_UNPACK_D(X,val)		\
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  84)   do {					\
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  85)     _FP_UNPACK_RAW_2(D,X,val);		\
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  86)     _FP_UNPACK_CANONICAL(D,2,X);	\
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  87)   } while (0)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  88) 
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  89) #define FP_UNPACK_DP(X,val)		\
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  90)   do {					\
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  91)     _FP_UNPACK_RAW_2_P(D,X,val);	\
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  92)     _FP_UNPACK_CANONICAL(D,2,X);	\
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  93)   } while (0)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  94) 
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  95) #define FP_PACK_D(val,X)		\
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  96)   do {					\
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  97)     _FP_PACK_CANONICAL(D,2,X);		\
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  98)     _FP_PACK_RAW_2(D,val,X);		\
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  99)   } while (0)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 100) 
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 101) #define FP_PACK_DP(val,X)		\
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 102)   do {					\
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 103)     _FP_PACK_CANONICAL(D,2,X);		\
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 104)     if (!FP_INHIBIT_RESULTS)		\
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 105)       _FP_PACK_RAW_2_P(D,val,X);	\
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 106)   } while (0)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 107) 
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 108) #define FP_ISSIGNAN_D(X)		_FP_ISSIGNAN(D,2,X)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 109) #define FP_NEG_D(R,X)			_FP_NEG(D,2,R,X)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 110) #define FP_ADD_D(R,X,Y)			_FP_ADD(D,2,R,X,Y)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 111) #define FP_SUB_D(R,X,Y)			_FP_SUB(D,2,R,X,Y)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 112) #define FP_MUL_D(R,X,Y)			_FP_MUL(D,2,R,X,Y)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 113) #define FP_DIV_D(R,X,Y)			_FP_DIV(D,2,R,X,Y)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 114) #define FP_SQRT_D(R,X)			_FP_SQRT(D,2,R,X)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 115) #define _FP_SQRT_MEAT_D(R,S,T,X,Q)	_FP_SQRT_MEAT_2(R,S,T,X,Q)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 116) 
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 117) #define FP_CMP_D(r,X,Y,un)	_FP_CMP(D,2,r,X,Y,un)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 118) #define FP_CMP_EQ_D(r,X,Y)	_FP_CMP_EQ(D,2,r,X,Y)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 119) 
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 120) #define FP_TO_INT_D(r,X,rsz,rsg)	_FP_TO_INT(D,2,r,X,rsz,rsg)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 121) #define FP_TO_INT_ROUND_D(r,X,rsz,rsg)	_FP_TO_INT_ROUND(D,2,r,X,rsz,rsg)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 122) #define FP_FROM_INT_D(X,r,rs,rt)	_FP_FROM_INT(D,2,X,r,rs,rt)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 123) 
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 124) #define _FP_FRAC_HIGH_D(X)	_FP_FRAC_HIGH_2(X)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 125) #define _FP_FRAC_HIGH_RAW_D(X)	_FP_FRAC_HIGH_2(X)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 126) 
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 127) #else
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 128) 
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 129) union _FP_UNION_D
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 130) {
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 131)   double flt;
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 132)   struct {
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 133) #if __BYTE_ORDER == __BIG_ENDIAN
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 134)     unsigned sign : 1;
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 135)     unsigned exp  : _FP_EXPBITS_D;
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 136)     unsigned long frac : _FP_FRACBITS_D - (_FP_IMPLBIT_D != 0);
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 137) #else
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 138)     unsigned long frac : _FP_FRACBITS_D - (_FP_IMPLBIT_D != 0);
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 139)     unsigned exp  : _FP_EXPBITS_D;
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 140)     unsigned sign : 1;
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 141) #endif
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 142)   } bits __attribute__((packed));
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 143) };
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 144) 
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 145) #define FP_DECL_D(X)		_FP_DECL(1,X)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 146) #define FP_UNPACK_RAW_D(X,val)	_FP_UNPACK_RAW_1(D,X,val)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 147) #define FP_UNPACK_RAW_DP(X,val)	_FP_UNPACK_RAW_1_P(D,X,val)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 148) #define FP_PACK_RAW_D(val,X)	_FP_PACK_RAW_1(D,val,X)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 149) #define FP_PACK_RAW_DP(val,X)		\
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 150)   do {					\
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 151)     if (!FP_INHIBIT_RESULTS)		\
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 152)       _FP_PACK_RAW_1_P(D,val,X);	\
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 153)   } while (0)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 154) 
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 155) #define FP_UNPACK_D(X,val)		\
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 156)   do {					\
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 157)     _FP_UNPACK_RAW_1(D,X,val);		\
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 158)     _FP_UNPACK_CANONICAL(D,1,X);	\
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 159)   } while (0)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 160) 
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 161) #define FP_UNPACK_DP(X,val)		\
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 162)   do {					\
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 163)     _FP_UNPACK_RAW_1_P(D,X,val);	\
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 164)     _FP_UNPACK_CANONICAL(D,1,X);	\
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 165)   } while (0)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 166) 
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 167) #define FP_PACK_D(val,X)		\
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 168)   do {					\
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 169)     _FP_PACK_CANONICAL(D,1,X);		\
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 170)     _FP_PACK_RAW_1(D,val,X);		\
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 171)   } while (0)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 172) 
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 173) #define FP_PACK_DP(val,X)		\
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 174)   do {					\
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 175)     _FP_PACK_CANONICAL(D,1,X);		\
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 176)     if (!FP_INHIBIT_RESULTS)		\
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 177)       _FP_PACK_RAW_1_P(D,val,X);	\
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 178)   } while (0)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 179) 
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 180) #define FP_ISSIGNAN_D(X)		_FP_ISSIGNAN(D,1,X)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 181) #define FP_NEG_D(R,X)			_FP_NEG(D,1,R,X)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 182) #define FP_ADD_D(R,X,Y)			_FP_ADD(D,1,R,X,Y)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 183) #define FP_SUB_D(R,X,Y)			_FP_SUB(D,1,R,X,Y)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 184) #define FP_MUL_D(R,X,Y)			_FP_MUL(D,1,R,X,Y)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 185) #define FP_DIV_D(R,X,Y)			_FP_DIV(D,1,R,X,Y)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 186) #define FP_SQRT_D(R,X)			_FP_SQRT(D,1,R,X)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 187) #define _FP_SQRT_MEAT_D(R,S,T,X,Q)	_FP_SQRT_MEAT_1(R,S,T,X,Q)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 188) 
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 189) /* The implementation of _FP_MUL_D and _FP_DIV_D should be chosen by
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 190)    the target machine.  */
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 191) 
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 192) #define FP_CMP_D(r,X,Y,un)	_FP_CMP(D,1,r,X,Y,un)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 193) #define FP_CMP_EQ_D(r,X,Y)	_FP_CMP_EQ(D,1,r,X,Y)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 194) 
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 195) #define FP_TO_INT_D(r,X,rsz,rsg)	_FP_TO_INT(D,1,r,X,rsz,rsg)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 196) #define FP_TO_INT_ROUND_D(r,X,rsz,rsg)	_FP_TO_INT_ROUND(D,1,r,X,rsz,rsg)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 197) #define FP_FROM_INT_D(X,r,rs,rt)	_FP_FROM_INT(D,1,X,r,rs,rt)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 198) 
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 199) #define _FP_FRAC_HIGH_D(X)	_FP_FRAC_HIGH_1(X)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 200) #define _FP_FRAC_HIGH_RAW_D(X)	_FP_FRAC_HIGH_1(X)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 201) 
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 202) #endif /* W_TYPE_SIZE < 64 */
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 203) 
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 204) 
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 205) #endif /* __MATH_EMU_DOUBLE_H__ */