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 Quad 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_QUAD_H__
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  26) #define  __MATH_EMU_QUAD_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_Q         (4*_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_Q		(2*_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_Q		113
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  39) #define _FP_FRACXBITS_Q		(_FP_FRACTBITS_Q - _FP_FRACBITS_Q)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  40) #define _FP_WFRACBITS_Q		(_FP_WORKBITS + _FP_FRACBITS_Q)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  41) #define _FP_WFRACXBITS_Q	(_FP_FRACTBITS_Q - _FP_WFRACBITS_Q)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  42) #define _FP_EXPBITS_Q		15
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  43) #define _FP_EXPBIAS_Q		16383
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  44) #define _FP_EXPMAX_Q		32767
^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_Q		\
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  47) 	((_FP_W_TYPE)1 << (_FP_FRACBITS_Q-2) % _FP_W_TYPE_SIZE)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  48) #define _FP_IMPLBIT_Q		\
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  49) 	((_FP_W_TYPE)1 << (_FP_FRACBITS_Q-1) % _FP_W_TYPE_SIZE)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  50) #define _FP_OVERFLOW_Q		\
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  51) 	((_FP_W_TYPE)1 << (_FP_WFRACBITS_Q % _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_Q
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  56) {
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  57)    long 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)    {
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  60) #if __BYTE_ORDER == __BIG_ENDIAN
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  61)       unsigned sign : 1;
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  62)       unsigned exp : _FP_EXPBITS_Q;
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  63)       unsigned long frac3 : _FP_FRACBITS_Q - (_FP_IMPLBIT_Q != 0)-(_FP_W_TYPE_SIZE * 3);
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  64)       unsigned long frac2 : _FP_W_TYPE_SIZE;
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  65)       unsigned long frac1 : _FP_W_TYPE_SIZE;
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  66)       unsigned long frac0 : _FP_W_TYPE_SIZE;
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  67) #else
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  68)       unsigned long frac0 : _FP_W_TYPE_SIZE;
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  69)       unsigned long frac1 : _FP_W_TYPE_SIZE;
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  70)       unsigned long frac2 : _FP_W_TYPE_SIZE;
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  71)       unsigned long frac3 : _FP_FRACBITS_Q - (_FP_IMPLBIT_Q != 0)-(_FP_W_TYPE_SIZE * 3);
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  72)       unsigned exp : _FP_EXPBITS_Q;
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  73)       unsigned sign : 1;
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  74) #endif /* not bigendian */
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  75)    } bits __attribute__((packed));
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  76) };
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  77) 
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  78) 
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  79) #define FP_DECL_Q(X)		_FP_DECL(4,X)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  80) #define FP_UNPACK_RAW_Q(X,val)	_FP_UNPACK_RAW_4(Q,X,val)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  81) #define FP_UNPACK_RAW_QP(X,val)	_FP_UNPACK_RAW_4_P(Q,X,val)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  82) #define FP_PACK_RAW_Q(val,X)	_FP_PACK_RAW_4(Q,val,X)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  83) #define FP_PACK_RAW_QP(val,X)		\
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  84)   do {					\
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  85)     if (!FP_INHIBIT_RESULTS)		\
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  86)       _FP_PACK_RAW_4_P(Q,val,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_Q(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_4(Q,X,val);		\
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  92)     _FP_UNPACK_CANONICAL(Q,4,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_UNPACK_QP(X,val)		\
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  96)   do {					\
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  97)     _FP_UNPACK_RAW_4_P(Q,X,val);	\
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700  98)     _FP_UNPACK_CANONICAL(Q,4,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_Q(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(Q,4,X);		\
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 104)     _FP_PACK_RAW_4(Q,val,X);		\
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 105)   } while (0)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 106) 
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 107) #define FP_PACK_QP(val,X)		\
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 108)   do {					\
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 109)     _FP_PACK_CANONICAL(Q,4,X);		\
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 110)     if (!FP_INHIBIT_RESULTS)		\
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 111)       _FP_PACK_RAW_4_P(Q,val,X);	\
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 112)   } while (0)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 113) 
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 114) #define FP_ISSIGNAN_Q(X)		_FP_ISSIGNAN(Q,4,X)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 115) #define FP_NEG_Q(R,X)			_FP_NEG(Q,4,R,X)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 116) #define FP_ADD_Q(R,X,Y)			_FP_ADD(Q,4,R,X,Y)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 117) #define FP_SUB_Q(R,X,Y)			_FP_SUB(Q,4,R,X,Y)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 118) #define FP_MUL_Q(R,X,Y)			_FP_MUL(Q,4,R,X,Y)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 119) #define FP_DIV_Q(R,X,Y)			_FP_DIV(Q,4,R,X,Y)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 120) #define FP_SQRT_Q(R,X)			_FP_SQRT(Q,4,R,X)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 121) #define _FP_SQRT_MEAT_Q(R,S,T,X,Q)	_FP_SQRT_MEAT_4(R,S,T,X,Q)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 122) 
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 123) #define FP_CMP_Q(r,X,Y,un)	_FP_CMP(Q,4,r,X,Y,un)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 124) #define FP_CMP_EQ_Q(r,X,Y)	_FP_CMP_EQ(Q,4,r,X,Y)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 125) 
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 126) #define FP_TO_INT_Q(r,X,rsz,rsg)	_FP_TO_INT(Q,4,r,X,rsz,rsg)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 127) #define FP_TO_INT_ROUND_Q(r,X,rsz,rsg)	_FP_TO_INT_ROUND(Q,4,r,X,rsz,rsg)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 128) #define FP_FROM_INT_Q(X,r,rs,rt)	_FP_FROM_INT(Q,4,X,r,rs,rt)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 129) 
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 130) #define _FP_FRAC_HIGH_Q(X)	_FP_FRAC_HIGH_4(X)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 131) #define _FP_FRAC_HIGH_RAW_Q(X)	_FP_FRAC_HIGH_4(X)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 132) 
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 133) #else   /* not _FP_W_TYPE_SIZE < 64 */
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 134) union _FP_UNION_Q
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 135) {
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 136)   long double flt /* __attribute__((mode(TF))) */ ;
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 137)   struct {
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 138) #if __BYTE_ORDER == __BIG_ENDIAN
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 139)     unsigned sign  : 1;
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 140)     unsigned exp   : _FP_EXPBITS_Q;
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 141)     unsigned long frac1 : _FP_FRACBITS_Q-(_FP_IMPLBIT_Q != 0)-_FP_W_TYPE_SIZE;
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 142)     unsigned long frac0 : _FP_W_TYPE_SIZE;
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 143) #else
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 144)     unsigned long frac0 : _FP_W_TYPE_SIZE;
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 145)     unsigned long frac1 : _FP_FRACBITS_Q-(_FP_IMPLBIT_Q != 0)-_FP_W_TYPE_SIZE;
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 146)     unsigned exp   : _FP_EXPBITS_Q;
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 147)     unsigned sign  : 1;
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 148) #endif
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 149)   } bits;
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 150) };
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 151) 
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 152) #define FP_DECL_Q(X)		_FP_DECL(2,X)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 153) #define FP_UNPACK_RAW_Q(X,val)	_FP_UNPACK_RAW_2(Q,X,val)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 154) #define FP_UNPACK_RAW_QP(X,val)	_FP_UNPACK_RAW_2_P(Q,X,val)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 155) #define FP_PACK_RAW_Q(val,X)	_FP_PACK_RAW_2(Q,val,X)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 156) #define FP_PACK_RAW_QP(val,X)		\
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 157)   do {					\
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 158)     if (!FP_INHIBIT_RESULTS)		\
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 159)       _FP_PACK_RAW_2_P(Q,val,X);	\
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 160)   } while (0)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 161) 
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 162) #define FP_UNPACK_Q(X,val)		\
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 163)   do {					\
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 164)     _FP_UNPACK_RAW_2(Q,X,val);		\
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 165)     _FP_UNPACK_CANONICAL(Q,2,X);	\
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 166)   } while (0)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 167) 
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 168) #define FP_UNPACK_QP(X,val)		\
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 169)   do {					\
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 170)     _FP_UNPACK_RAW_2_P(Q,X,val);	\
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 171)     _FP_UNPACK_CANONICAL(Q,2,X);	\
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 172)   } while (0)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 173) 
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 174) #define FP_PACK_Q(val,X)		\
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 175)   do {					\
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 176)     _FP_PACK_CANONICAL(Q,2,X);		\
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 177)     _FP_PACK_RAW_2(Q,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_PACK_QP(val,X)		\
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 181)   do {					\
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 182)     _FP_PACK_CANONICAL(Q,2,X);		\
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 183)     if (!FP_INHIBIT_RESULTS)		\
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 184)       _FP_PACK_RAW_2_P(Q,val,X);	\
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 185)   } while (0)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 186) 
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 187) #define FP_ISSIGNAN_Q(X)		_FP_ISSIGNAN(Q,2,X)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 188) #define FP_NEG_Q(R,X)			_FP_NEG(Q,2,R,X)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 189) #define FP_ADD_Q(R,X,Y)			_FP_ADD(Q,2,R,X,Y)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 190) #define FP_SUB_Q(R,X,Y)			_FP_SUB(Q,2,R,X,Y)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 191) #define FP_MUL_Q(R,X,Y)			_FP_MUL(Q,2,R,X,Y)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 192) #define FP_DIV_Q(R,X,Y)			_FP_DIV(Q,2,R,X,Y)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 193) #define FP_SQRT_Q(R,X)			_FP_SQRT(Q,2,R,X)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 194) #define _FP_SQRT_MEAT_Q(R,S,T,X,Q)	_FP_SQRT_MEAT_2(R,S,T,X,Q)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 195) 
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 196) #define FP_CMP_Q(r,X,Y,un)	_FP_CMP(Q,2,r,X,Y,un)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 197) #define FP_CMP_EQ_Q(r,X,Y)	_FP_CMP_EQ(Q,2,r,X,Y)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 198) 
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 199) #define FP_TO_INT_Q(r,X,rsz,rsg)	_FP_TO_INT(Q,2,r,X,rsz,rsg)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 200) #define FP_TO_INT_ROUND_Q(r,X,rsz,rsg)	_FP_TO_INT_ROUND(Q,2,r,X,rsz,rsg)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 201) #define FP_FROM_INT_Q(X,r,rs,rt)	_FP_FROM_INT(Q,2,X,r,rs,rt)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 202) 
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 203) #define _FP_FRAC_HIGH_Q(X)	_FP_FRAC_HIGH_2(X)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 204) #define _FP_FRAC_HIGH_RAW_Q(X)	_FP_FRAC_HIGH_2(X)
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 205) 
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 206) #endif /* not _FP_W_TYPE_SIZE < 64 */
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 207) 
^1da177e4c3f4 (Linus Torvalds 2005-04-16 15:20:36 -0700 208) #endif /* __MATH_EMU_QUAD_H__ */