Linux Kernel  3.7.1
 All Data Structures Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
Macros
op-2.h File Reference

Go to the source code of this file.

Macros

#define _FP_FRAC_DECL_2(X)   _FP_W_TYPE X##_f0 = 0, X##_f1 = 0
 
#define _FP_FRAC_COPY_2(D, S)   (D##_f0 = S##_f0, D##_f1 = S##_f1)
 
#define _FP_FRAC_SET_2(X, I)   __FP_FRAC_SET_2(X, I)
 
#define _FP_FRAC_HIGH_2(X)   (X##_f1)
 
#define _FP_FRAC_LOW_2(X)   (X##_f0)
 
#define _FP_FRAC_WORD_2(X, w)   (X##_f##w)
 
#define _FP_FRAC_SLL_2(X, N)
 
#define _FP_FRAC_SRL_2(X, N)
 
#define _FP_FRAC_SRS_2(X, N, sz)
 
#define _FP_FRAC_ADDI_2(X, I)   __FP_FRAC_ADDI_2(X##_f1, X##_f0, I)
 
#define _FP_FRAC_ADD_2(R, X, Y)   __FP_FRAC_ADD_2(R##_f1, R##_f0, X##_f1, X##_f0, Y##_f1, Y##_f0)
 
#define _FP_FRAC_SUB_2(R, X, Y)   __FP_FRAC_SUB_2(R##_f1, R##_f0, X##_f1, X##_f0, Y##_f1, Y##_f0)
 
#define _FP_FRAC_DEC_2(X, Y)   __FP_FRAC_DEC_2(X##_f1, X##_f0, Y##_f1, Y##_f0)
 
#define _FP_FRAC_CLZ_2(R, X)
 
#define _FP_FRAC_NEGP_2(X)   ((_FP_WS_TYPE)X##_f1 < 0)
 
#define _FP_FRAC_ZEROP_2(X)   ((X##_f1 | X##_f0) == 0)
 
#define _FP_FRAC_OVERP_2(fs, X)   (_FP_FRAC_HIGH_##fs(X) & _FP_OVERFLOW_##fs)
 
#define _FP_FRAC_CLEAR_OVERP_2(fs, X)   (_FP_FRAC_HIGH_##fs(X) &= ~_FP_OVERFLOW_##fs)
 
#define _FP_FRAC_EQ_2(X, Y)   (X##_f1 == Y##_f1 && X##_f0 == Y##_f0)
 
#define _FP_FRAC_GT_2(X, Y)   (X##_f1 > Y##_f1 || (X##_f1 == Y##_f1 && X##_f0 > Y##_f0))
 
#define _FP_FRAC_GE_2(X, Y)   (X##_f1 > Y##_f1 || (X##_f1 == Y##_f1 && X##_f0 >= Y##_f0))
 
#define _FP_ZEROFRAC_2   0, 0
 
#define _FP_MINFRAC_2   0, 1
 
#define _FP_MAXFRAC_2   (~(_FP_WS_TYPE)0), (~(_FP_WS_TYPE)0)
 
#define __FP_FRAC_SET_2(X, I1, I0)   (X##_f0 = I0, X##_f1 = I1)
 
#define __FP_CLZ_2(R, xh, xl)
 
#define __FP_FRAC_ADDI_2(xh, xl, i)   add_ssaaaa(xh, xl, xh, xl, 0, i)
 
#define __FP_FRAC_ADD_2   add_ssaaaa
 
#define __FP_FRAC_SUB_2   sub_ddmmss
 
#define __FP_FRAC_DEC_2(xh, xl, yh, yl)   sub_ddmmss(xh, xl, xh, xl, yh, yl)
 
#define _FP_UNPACK_RAW_2(fs, X, val)
 
#define _FP_UNPACK_RAW_2_P(fs, X, val)
 
#define _FP_PACK_RAW_2(fs, val, X)
 
#define _FP_PACK_RAW_2_P(fs, val, X)
 
#define _FP_MUL_MEAT_2_wide(wfracbits, R, X, Y, doit)
 
#define _FP_MUL_MEAT_2_wide_3mul(wfracbits, R, X, Y, doit)
 
#define _FP_MUL_MEAT_2_gmp(wfracbits, R, X, Y)
 
#define _FP_MUL_MEAT_2_120_240_double(wfracbits, R, X, Y, setfetz, resetfe)
 
#define _FP_DIV_MEAT_2_udiv(fs, R, X, Y)
 
#define _FP_DIV_MEAT_2_gmp(fs, R, X, Y)
 
#define _FP_SQRT_MEAT_2(R, S, T, X, q)
 
#define _FP_FRAC_ASSEMBLE_2(r, X, rsize)
 
#define _FP_FRAC_DISASSEMBLE_2(X, r, rsize)
 
#define _FP_FRAC_CONV_1_2(dfs, sfs, D, S)
 
#define _FP_FRAC_CONV_2_1(dfs, sfs, D, S)
 

Macro Definition Documentation

#define __FP_CLZ_2 (   R,
  xh,
  xl 
)
Value:
do { \
if (xh) \
__FP_CLZ(R,xh); \
else \
{ \
__FP_CLZ(R,xl); \
} \
} while(0)

Definition at line 134 of file op-2.h.

#define __FP_FRAC_ADD_2   add_ssaaaa

Definition at line 172 of file op-2.h.

#define __FP_FRAC_ADDI_2 (   xh,
  xl,
  i 
)    add_ssaaaa(xh, xl, xh, xl, 0, i)

Definition at line 170 of file op-2.h.

#define __FP_FRAC_DEC_2 (   xh,
  xl,
  yh,
  yl 
)    sub_ddmmss(xh, xl, xh, xl, yh, yl)

Definition at line 176 of file op-2.h.

#define __FP_FRAC_SET_2 (   X,
  I1,
  I0 
)    (X##_f0 = I0, X##_f1 = I1)

Definition at line 132 of file op-2.h.

#define __FP_FRAC_SUB_2   sub_ddmmss

Definition at line 174 of file op-2.h.

#define _FP_DIV_MEAT_2_gmp (   fs,
  R,
  X,
 
)
Value:
do { \
_FP_W_TYPE _x[4], _y[2], _z[4]; \
_y[0] = Y##_f0; _y[1] = Y##_f1; \
_x[0] = _x[3] = 0; \
if (_FP_FRAC_GT_2(X, Y)) \
{ \
R##_e++; \
_x[1] = (X##_f0 << (_FP_WFRACBITS_##fs-1 - _FP_W_TYPE_SIZE) | \
X##_f1 >> (_FP_W_TYPE_SIZE - \
(_FP_WFRACBITS_##fs-1 - _FP_W_TYPE_SIZE))); \
_x[2] = X##_f1 << (_FP_WFRACBITS_##fs-1 - _FP_W_TYPE_SIZE); \
} \
else \
{ \
_x[1] = (X##_f0 << (_FP_WFRACBITS_##fs - _FP_W_TYPE_SIZE) | \
X##_f1 >> (_FP_W_TYPE_SIZE - \
(_FP_WFRACBITS_##fs - _FP_W_TYPE_SIZE))); \
_x[2] = X##_f1 << (_FP_WFRACBITS_##fs - _FP_W_TYPE_SIZE); \
} \
\
(void) mpn_divrem (_z, 0, _x, 4, _y, 2); \
R##_f1 = _z[1]; \
R##_f0 = _z[0] | ((_x[0] | _x[1]) != 0); \
} while (0)

Definition at line 483 of file op-2.h.

#define _FP_DIV_MEAT_2_udiv (   fs,
  R,
  X,
 
)

Definition at line 422 of file op-2.h.

#define _FP_FRAC_ADD_2 (   R,
  X,
 
)    __FP_FRAC_ADD_2(R##_f1, R##_f0, X##_f1, X##_f0, Y##_f1, Y##_f0)

Definition at line 93 of file op-2.h.

#define _FP_FRAC_ADDI_2 (   X,
  I 
)    __FP_FRAC_ADDI_2(X##_f1, X##_f0, I)

Definition at line 90 of file op-2.h.

#define _FP_FRAC_ASSEMBLE_2 (   r,
  X,
  rsize 
)
Value:
do { \
if (rsize <= _FP_W_TYPE_SIZE) \
r = X##_f0; \
else \
{ \
r = X##_f1; \
r <<= _FP_W_TYPE_SIZE; \
r += X##_f0; \
} \
} while (0)

Definition at line 561 of file op-2.h.

#define _FP_FRAC_CLEAR_OVERP_2 (   fs,
  X 
)    (_FP_FRAC_HIGH_##fs(X) &= ~_FP_OVERFLOW_##fs)

Definition at line 117 of file op-2.h.

#define _FP_FRAC_CLZ_2 (   R,
  X 
)
Value:
do { \
if (X##_f1) \
__FP_CLZ(R,X##_f1); \
else \
{ \
__FP_CLZ(R,X##_f0); \
} \
} while(0)

Definition at line 102 of file op-2.h.

#define _FP_FRAC_CONV_1_2 (   dfs,
  sfs,
  D,
  S 
)
Value:
do { \
if (S##_c != FP_CLS_NAN) \
_FP_FRAC_SRS_2(S, (_FP_WFRACBITS_##sfs - _FP_WFRACBITS_##dfs), \
_FP_WFRACBITS_##sfs); \
_FP_FRAC_SRL_2(S, (_FP_WFRACBITS_##sfs - _FP_WFRACBITS_##dfs)); \
D##_f = S##_f0; \
} while (0)

Definition at line 583 of file op-2.h.

#define _FP_FRAC_CONV_2_1 (   dfs,
  sfs,
  D,
  S 
)
Value:
do { \
D##_f0 = S##_f; \
D##_f1 = 0; \
_FP_FRAC_SLL_2(D, (_FP_WFRACBITS_##dfs - _FP_WFRACBITS_##sfs)); \
} while (0)

Definition at line 593 of file op-2.h.

#define _FP_FRAC_COPY_2 (   D,
  S 
)    (D##_f0 = S##_f0, D##_f1 = S##_f1)

Definition at line 29 of file op-2.h.

#define _FP_FRAC_DEC_2 (   X,
 
)    __FP_FRAC_DEC_2(X##_f1, X##_f0, Y##_f1, Y##_f0)

Definition at line 99 of file op-2.h.

#define _FP_FRAC_DECL_2 (   X)    _FP_W_TYPE X##_f0 = 0, X##_f1 = 0

Definition at line 28 of file op-2.h.

#define _FP_FRAC_DISASSEMBLE_2 (   X,
  r,
  rsize 
)
Value:
do { \
X##_f0 = r; \
X##_f1 = (rsize <= _FP_W_TYPE_SIZE ? 0 : r >> _FP_W_TYPE_SIZE); \
} while (0)

Definition at line 573 of file op-2.h.

#define _FP_FRAC_EQ_2 (   X,
 
)    (X##_f1 == Y##_f1 && X##_f0 == Y##_f0)

Definition at line 118 of file op-2.h.

#define _FP_FRAC_GE_2 (   X,
 
)    (X##_f1 > Y##_f1 || (X##_f1 == Y##_f1 && X##_f0 >= Y##_f0))

Definition at line 121 of file op-2.h.

#define _FP_FRAC_GT_2 (   X,
 
)    (X##_f1 > Y##_f1 || (X##_f1 == Y##_f1 && X##_f0 > Y##_f0))

Definition at line 119 of file op-2.h.

#define _FP_FRAC_HIGH_2 (   X)    (X##_f1)

Definition at line 31 of file op-2.h.

#define _FP_FRAC_LOW_2 (   X)    (X##_f0)

Definition at line 32 of file op-2.h.

#define _FP_FRAC_NEGP_2 (   X)    ((_FP_WS_TYPE)X##_f1 < 0)

Definition at line 114 of file op-2.h.

#define _FP_FRAC_OVERP_2 (   fs,
  X 
)    (_FP_FRAC_HIGH_##fs(X) & _FP_OVERFLOW_##fs)

Definition at line 116 of file op-2.h.

#define _FP_FRAC_SET_2 (   X,
  I 
)    __FP_FRAC_SET_2(X, I)

Definition at line 30 of file op-2.h.

#define _FP_FRAC_SLL_2 (   X,
  N 
)
Value:
do { \
if ((N) < _FP_W_TYPE_SIZE) \
{ \
if (__builtin_constant_p(N) && (N) == 1) \
{ \
X##_f1 = X##_f1 + X##_f1 + (((_FP_WS_TYPE)(X##_f0)) < 0); \
X##_f0 += X##_f0; \
} \
else \
{ \
X##_f1 = X##_f1 << (N) | X##_f0 >> (_FP_W_TYPE_SIZE - (N)); \
X##_f0 <<= (N); \
} \
} \
else \
{ \
X##_f1 = X##_f0 << ((N) - _FP_W_TYPE_SIZE); \
X##_f0 = 0; \
} \
} while (0)

Definition at line 35 of file op-2.h.

#define _FP_FRAC_SRL_2 (   X,
  N 
)
Value:
do { \
if ((N) < _FP_W_TYPE_SIZE) \
{ \
X##_f0 = X##_f0 >> (N) | X##_f1 << (_FP_W_TYPE_SIZE - (N)); \
X##_f1 >>= (N); \
} \
else \
{ \
X##_f0 = X##_f1 >> ((N) - _FP_W_TYPE_SIZE); \
X##_f1 = 0; \
} \
} while (0)

Definition at line 57 of file op-2.h.

#define _FP_FRAC_SRS_2 (   X,
  N,
  sz 
)
Value:
do { \
if ((N) < _FP_W_TYPE_SIZE) \
{ \
X##_f0 = (X##_f1 << (_FP_W_TYPE_SIZE - (N)) | X##_f0 >> (N) | \
(__builtin_constant_p(N) && (N) == 1 \
? X##_f0 & 1 \
: (X##_f0 << (_FP_W_TYPE_SIZE - (N))) != 0)); \
X##_f1 >>= (N); \
} \
else \
{ \
X##_f0 = (X##_f1 >> ((N) - _FP_W_TYPE_SIZE) | \
(((X##_f1 << (2*_FP_W_TYPE_SIZE - (N))) | X##_f0) != 0)); \
X##_f1 = 0; \
} \
} while (0)

Definition at line 72 of file op-2.h.

#define _FP_FRAC_SUB_2 (   R,
  X,
 
)    __FP_FRAC_SUB_2(R##_f1, R##_f0, X##_f1, X##_f0, Y##_f1, Y##_f0)

Definition at line 96 of file op-2.h.

#define _FP_FRAC_WORD_2 (   X,
  w 
)    (X##_f##w)

Definition at line 33 of file op-2.h.

#define _FP_FRAC_ZEROP_2 (   X)    ((X##_f1 | X##_f0) == 0)

Definition at line 115 of file op-2.h.

#define _FP_MAXFRAC_2   (~(_FP_WS_TYPE)0), (~(_FP_WS_TYPE)0)

Definition at line 126 of file op-2.h.

#define _FP_MINFRAC_2   0, 1

Definition at line 125 of file op-2.h.

#define _FP_MUL_MEAT_2_120_240_double (   wfracbits,
  R,
  X,
  Y,
  setfetz,
  resetfe 
)

Definition at line 331 of file op-2.h.

#define _FP_MUL_MEAT_2_gmp (   wfracbits,
  R,
  X,
 
)
Value:
do { \
_FP_FRAC_DECL_4(_z); \
_FP_W_TYPE _x[2], _y[2]; \
_x[0] = X##_f0; _x[1] = X##_f1; \
_y[0] = Y##_f0; _y[1] = Y##_f1; \
\
mpn_mul_n(_z_f, _x, _y, 2); \
\
/* Normalize since we know where the msb of the multiplicands \
were (bit B), we know that the msb of the of the product is \
at either 2B or 2B-1. */ \
_FP_FRAC_SRS_4(_z, wfracbits-1, 2*wfracbits); \
R##_f0 = _z_f[0]; \
R##_f1 = _z_f[1]; \
} while (0)

Definition at line 307 of file op-2.h.

#define _FP_MUL_MEAT_2_wide (   wfracbits,
  R,
  X,
  Y,
  doit 
)
Value:
do { \
_FP_FRAC_DECL_4(_z); _FP_FRAC_DECL_2(_b); _FP_FRAC_DECL_2(_c); \
\
doit(_FP_FRAC_WORD_4(_z,1), _FP_FRAC_WORD_4(_z,0), X##_f0, Y##_f0); \
doit(_b_f1, _b_f0, X##_f0, Y##_f1); \
doit(_c_f1, _c_f0, X##_f1, Y##_f0); \
doit(_FP_FRAC_WORD_4(_z,3), _FP_FRAC_WORD_4(_z,2), X##_f1, Y##_f1); \
_FP_FRAC_WORD_4(_z,1), 0, _b_f1, _b_f0, \
_FP_FRAC_WORD_4(_z,1)); \
__FP_FRAC_ADD_3(_FP_FRAC_WORD_4(_z,3),_FP_FRAC_WORD_4(_z,2), \
_FP_FRAC_WORD_4(_z,1), 0, _c_f1, _c_f0, \
_FP_FRAC_WORD_4(_z,1)); \
\
/* Normalize since we know where the msb of the multiplicands \
were (bit B), we know that the msb of the of the product is \
at either 2B or 2B-1. */ \
_FP_FRAC_SRS_4(_z, wfracbits-1, 2*wfracbits); \
R##_f0 = _FP_FRAC_WORD_4(_z,0); \
R##_f1 = _FP_FRAC_WORD_4(_z,1); \
} while (0)

Definition at line 241 of file op-2.h.

#define _FP_MUL_MEAT_2_wide_3mul (   wfracbits,
  R,
  X,
  Y,
  doit 
)

Definition at line 269 of file op-2.h.

#define _FP_PACK_RAW_2 (   fs,
  val,
  X 
)
Value:
do { \
union _FP_UNION_##fs _flo; \
\
_flo.bits.frac0 = X##_f0; \
_flo.bits.frac1 = X##_f1; \
_flo.bits.exp = X##_e; \
_flo.bits.sign = X##_s; \
\
(val) = _flo.flt; \
} while (0)

Definition at line 211 of file op-2.h.

#define _FP_PACK_RAW_2_P (   fs,
  val,
  X 
)
Value:
do { \
union _FP_UNION_##fs *_flo = \
(union _FP_UNION_##fs *)(val); \
\
_flo->bits.frac0 = X##_f0; \
_flo->bits.frac1 = X##_f1; \
_flo->bits.exp = X##_e; \
_flo->bits.sign = X##_s; \
} while (0)

Definition at line 223 of file op-2.h.

#define _FP_SQRT_MEAT_2 (   R,
  S,
  T,
  X,
  q 
)

Definition at line 516 of file op-2.h.

#define _FP_UNPACK_RAW_2 (   fs,
  X,
  val 
)
Value:
do { \
union _FP_UNION_##fs _flo; _flo.flt = (val); \
\
X##_f0 = _flo.bits.frac0; \
X##_f1 = _flo.bits.frac1; \
X##_e = _flo.bits.exp; \
X##_s = _flo.bits.sign; \
} while (0)

Definition at line 185 of file op-2.h.

#define _FP_UNPACK_RAW_2_P (   fs,
  X,
  val 
)
Value:
do { \
union _FP_UNION_##fs *_flo = \
(union _FP_UNION_##fs *)(val); \
\
X##_f0 = _flo->bits.frac0; \
X##_f1 = _flo->bits.frac1; \
X##_e = _flo->bits.exp; \
X##_s = _flo->bits.sign; \
} while (0)

Definition at line 195 of file op-2.h.

#define _FP_ZEROFRAC_2   0, 0

Definition at line 124 of file op-2.h.