亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? sfp-machine.h

?? 優龍2410linux2.6.8內核源代碼
?? H
字號:
/* Machine-dependent software floating-point definitions.  PPC version.   Copyright (C) 1997 Free Software Foundation, Inc.   This file is part of the GNU C Library.   The GNU C Library is free software; you can redistribute it and/or   modify it under the terms of the GNU Library General Public License as   published by the Free Software Foundation; either version 2 of the   License, or (at your option) any later version.   The GNU C Library is distributed in the hope that it will be useful,   but WITHOUT ANY WARRANTY; without even the implied warranty of   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU   Library General Public License for more details.   You should have received a copy of the GNU Library General Public   License along with the GNU C Library; see the file COPYING.LIB.  If   not, write to the Free Software Foundation, Inc.,   59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.   Actually, this is a PPC (32bit) version, written based on the   i386, sparc, and sparc64 versions, by me,   Peter Maydell (pmaydell@chiark.greenend.org.uk).   Comments are by and large also mine, although they may be inaccurate.   In picking out asm fragments I've gone with the lowest common   denominator, which also happens to be the hardware I have :->   That is, a SPARC without hardware multiply and divide. *//* basic word size definitions */#define _FP_W_TYPE_SIZE		32#define _FP_W_TYPE		unsigned long#define _FP_WS_TYPE		signed long#define _FP_I_TYPE		long#define __ll_B			((UWtype) 1 << (W_TYPE_SIZE / 2))#define __ll_lowpart(t)		((UWtype) (t) & (__ll_B - 1))#define __ll_highpart(t)	((UWtype) (t) >> (W_TYPE_SIZE / 2))/* You can optionally code some things like addition in asm. For * example, i386 defines __FP_FRAC_ADD_2 as asm. If you don't * then you get a fragment of C code [if you change an #ifdef 0 * in op-2.h] or a call to add_ssaaaa (see below). * Good places to look for asm fragments to use are gcc and glibc. * gcc's longlong.h is useful. *//* We need to know how to multiply and divide. If the host word size * is >= 2*fracbits you can use FP_MUL_MEAT_n_imm(t,R,X,Y) which * codes the multiply with whatever gcc does to 'a * b'. * _FP_MUL_MEAT_n_wide(t,R,X,Y,f) is used when you have an asm * function that can multiply two 1W values and get a 2W result. * Otherwise you're stuck with _FP_MUL_MEAT_n_hard(t,R,X,Y) which * does bitshifting to avoid overflow. * For division there is FP_DIV_MEAT_n_imm(t,R,X,Y,f) for word size * >= 2*fracbits, where f is either _FP_DIV_HELP_imm or * _FP_DIV_HELP_ldiv (see op-1.h). * _FP_DIV_MEAT_udiv() is if you have asm to do 2W/1W => (1W, 1W). * [GCC and glibc have longlong.h which has the asm macro udiv_qrnnd * to do this.] * In general, 'n' is the number of words required to hold the type, * and 't' is either S, D or Q for single/double/quad. *           -- PMM *//* Example: SPARC64: * #define _FP_MUL_MEAT_S(R,X,Y)	_FP_MUL_MEAT_1_imm(S,R,X,Y) * #define _FP_MUL_MEAT_D(R,X,Y)	_FP_MUL_MEAT_1_wide(D,R,X,Y,umul_ppmm) * #define _FP_MUL_MEAT_Q(R,X,Y)	_FP_MUL_MEAT_2_wide(Q,R,X,Y,umul_ppmm) * * #define _FP_DIV_MEAT_S(R,X,Y)	_FP_DIV_MEAT_1_imm(S,R,X,Y,_FP_DIV_HELP_imm) * #define _FP_DIV_MEAT_D(R,X,Y)	_FP_DIV_MEAT_1_udiv(D,R,X,Y) * #define _FP_DIV_MEAT_Q(R,X,Y)	_FP_DIV_MEAT_2_udiv_64(Q,R,X,Y) * * Example: i386: * #define _FP_MUL_MEAT_S(R,X,Y)   _FP_MUL_MEAT_1_wide(S,R,X,Y,_i386_mul_32_64) * #define _FP_MUL_MEAT_D(R,X,Y)   _FP_MUL_MEAT_2_wide(D,R,X,Y,_i386_mul_32_64) * * #define _FP_DIV_MEAT_S(R,X,Y)   _FP_DIV_MEAT_1_udiv(S,R,X,Y,_i386_div_64_32) * #define _FP_DIV_MEAT_D(R,X,Y)   _FP_DIV_MEAT_2_udiv_64(D,R,X,Y) */#define _FP_MUL_MEAT_S(R,X,Y)   _FP_MUL_MEAT_1_wide(S,R,X,Y,umul_ppmm)#define _FP_MUL_MEAT_D(R,X,Y)   _FP_MUL_MEAT_2_wide(D,R,X,Y,umul_ppmm)#define _FP_DIV_MEAT_S(R,X,Y)   _FP_DIV_MEAT_1_udiv(S,R,X,Y)#define _FP_DIV_MEAT_D(R,X,Y)   _FP_DIV_MEAT_2_udiv_64(D,R,X,Y)/* These macros define what NaN looks like. They're supposed to expand to * a comma-separated set of 32bit unsigned ints that encode NaN. */#define _FP_NANFRAC_S		_FP_QNANBIT_S#define _FP_NANFRAC_D		_FP_QNANBIT_D, 0#define _FP_NANFRAC_Q           _FP_QNANBIT_Q, 0, 0, 0#define _FP_KEEPNANFRACP 1/* This macro appears to be called when both X and Y are NaNs, and * has to choose one and copy it to R. i386 goes for the larger of the * two, sparc64 just picks Y. I don't understand this at all so I'll * go with sparc64 because it's shorter :->   -- PMM */#define _FP_CHOOSENAN(fs, wc, R, X, Y)			\  do {							\    R##_s = Y##_s;					\    _FP_FRAC_COPY_##wc(R,Y);				\    R##_c = FP_CLS_NAN;					\  } while (0)extern void fp_unpack_d(long *, unsigned long *, unsigned long *,			long *, long *, void *);extern int  fp_pack_d(void *, long, unsigned long, unsigned long, long, long);extern int  fp_pack_ds(void *, long, unsigned long, unsigned long, long, long);#define __FP_UNPACK_RAW_1(fs, X, val)			\  do {							\    union _FP_UNION_##fs *_flo =			\    	(union _FP_UNION_##fs *)val;			\							\    X##_f = _flo->bits.frac;				\    X##_e = _flo->bits.exp;				\    X##_s = _flo->bits.sign;				\  } while (0)#define __FP_UNPACK_RAW_2(fs, X, val)			\  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)#define __FP_UNPACK_S(X,val)		\  do {					\    __FP_UNPACK_RAW_1(S,X,val);		\    _FP_UNPACK_CANONICAL(S,1,X);	\  } while (0)#define __FP_UNPACK_D(X,val)		\	fp_unpack_d(&X##_s, &X##_f1, &X##_f0, &X##_e, &X##_c, val)#define __FP_PACK_RAW_1(fs, val, X)			\  do {							\    union _FP_UNION_##fs *_flo =			\    	(union _FP_UNION_##fs *)val;			\							\    _flo->bits.frac = X##_f;				\    _flo->bits.exp  = X##_e;				\    _flo->bits.sign = X##_s;				\  } while (0)#define __FP_PACK_RAW_2(fs, val, X)			\  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)#include <linux/kernel.h>#include <linux/sched.h>#define __FPU_FPSCR	(current->thread.fpscr)/* We only actually write to the destination register * if exceptions signalled (if any) will not trap. */#define __FPU_ENABLED_EXC \({						\	(__FPU_FPSCR >> 3) & 0x1f;	\})#define __FPU_TRAP_P(bits) \	((__FPU_ENABLED_EXC & (bits)) != 0)#define __FP_PACK_S(val,X)			\({  int __exc = _FP_PACK_CANONICAL(S,1,X);	\    if(!__exc || !__FPU_TRAP_P(__exc))		\        __FP_PACK_RAW_1(S,val,X);		\    __exc;					\})#define __FP_PACK_D(val,X)			\	fp_pack_d(val, X##_s, X##_f1, X##_f0, X##_e, X##_c)#define __FP_PACK_DS(val,X)			\	fp_pack_ds(val, X##_s, X##_f1, X##_f0, X##_e, X##_c)/* Obtain the current rounding mode. */#define FP_ROUNDMODE			\({					\	__FPU_FPSCR & 0x3;		\})/* the asm fragments go here: all these are taken from glibc-2.0.5's * stdlib/longlong.h */#include <linux/types.h>#include <asm/byteorder.h>/* add_ssaaaa is used in op-2.h and should be equivalent to * #define add_ssaaaa(sh,sl,ah,al,bh,bl) (sh = ah+bh+ (( sl = al+bl) < al)) * add_ssaaaa(high_sum, low_sum, high_addend_1, low_addend_1, * high_addend_2, low_addend_2) adds two UWtype integers, composed by * HIGH_ADDEND_1 and LOW_ADDEND_1, and HIGH_ADDEND_2 and LOW_ADDEND_2 * respectively.  The result is placed in HIGH_SUM and LOW_SUM.  Overflow * (i.e. carry out) is not stored anywhere, and is lost. */#define add_ssaaaa(sh, sl, ah, al, bh, bl)				\  do {									\    if (__builtin_constant_p (bh) && (bh) == 0)				\      __asm__ ("{a%I4|add%I4c} %1,%3,%4\n\t{aze|addze} %0,%2"		\	     : "=r" ((USItype)(sh)),					\	       "=&r" ((USItype)(sl))					\	     : "%r" ((USItype)(ah)),					\	       "%r" ((USItype)(al)),					\	       "rI" ((USItype)(bl)));					\    else if (__builtin_constant_p (bh) && (bh) ==~(USItype) 0)		\      __asm__ ("{a%I4|add%I4c} %1,%3,%4\n\t{ame|addme} %0,%2"		\	     : "=r" ((USItype)(sh)),					\	       "=&r" ((USItype)(sl))					\	     : "%r" ((USItype)(ah)),					\	       "%r" ((USItype)(al)),					\	       "rI" ((USItype)(bl)));					\    else								\      __asm__ ("{a%I5|add%I5c} %1,%4,%5\n\t{ae|adde} %0,%2,%3"		\	     : "=r" ((USItype)(sh)),					\	       "=&r" ((USItype)(sl))					\	     : "%r" ((USItype)(ah)),					\	       "r" ((USItype)(bh)),					\	       "%r" ((USItype)(al)),					\	       "rI" ((USItype)(bl)));					\  } while (0)/* sub_ddmmss is used in op-2.h and udivmodti4.c and should be equivalent to * #define sub_ddmmss(sh, sl, ah, al, bh, bl) (sh = ah-bh - ((sl = al-bl) > al)) * sub_ddmmss(high_difference, low_difference, high_minuend, low_minuend, * high_subtrahend, low_subtrahend) subtracts two two-word UWtype integers, * composed by HIGH_MINUEND_1 and LOW_MINUEND_1, and HIGH_SUBTRAHEND_2 and * LOW_SUBTRAHEND_2 respectively.  The result is placed in HIGH_DIFFERENCE * and LOW_DIFFERENCE.  Overflow (i.e. carry out) is not stored anywhere, * and is lost. */#define sub_ddmmss(sh, sl, ah, al, bh, bl)				\  do {									\    if (__builtin_constant_p (ah) && (ah) == 0)				\      __asm__ ("{sf%I3|subf%I3c} %1,%4,%3\n\t{sfze|subfze} %0,%2"	\	       : "=r" ((USItype)(sh)),					\		 "=&r" ((USItype)(sl))					\	       : "r" ((USItype)(bh)),					\		 "rI" ((USItype)(al)),					\		 "r" ((USItype)(bl)));					\    else if (__builtin_constant_p (ah) && (ah) ==~(USItype) 0)		\      __asm__ ("{sf%I3|subf%I3c} %1,%4,%3\n\t{sfme|subfme} %0,%2"	\	       : "=r" ((USItype)(sh)),					\		 "=&r" ((USItype)(sl))					\	       : "r" ((USItype)(bh)),					\		 "rI" ((USItype)(al)),					\		 "r" ((USItype)(bl)));					\    else if (__builtin_constant_p (bh) && (bh) == 0)			\      __asm__ ("{sf%I3|subf%I3c} %1,%4,%3\n\t{ame|addme} %0,%2"		\	       : "=r" ((USItype)(sh)),					\		 "=&r" ((USItype)(sl))					\	       : "r" ((USItype)(ah)),					\		 "rI" ((USItype)(al)),					\		 "r" ((USItype)(bl)));					\    else if (__builtin_constant_p (bh) && (bh) ==~(USItype) 0)		\      __asm__ ("{sf%I3|subf%I3c} %1,%4,%3\n\t{aze|addze} %0,%2"		\	       : "=r" ((USItype)(sh)),					\		 "=&r" ((USItype)(sl))					\	       : "r" ((USItype)(ah)),					\		 "rI" ((USItype)(al)),					\		 "r" ((USItype)(bl)));					\    else								\      __asm__ ("{sf%I4|subf%I4c} %1,%5,%4\n\t{sfe|subfe} %0,%3,%2"	\	       : "=r" ((USItype)(sh)),					\		 "=&r" ((USItype)(sl))					\	       : "r" ((USItype)(ah)),					\		 "r" ((USItype)(bh)),					\		 "rI" ((USItype)(al)),					\		 "r" ((USItype)(bl)));					\  } while (0)/* asm fragments for mul and div *//* umul_ppmm(high_prod, low_prod, multipler, multiplicand) multiplies two * UWtype integers MULTIPLER and MULTIPLICAND, and generates a two UWtype * word product in HIGH_PROD and LOW_PROD. */#define umul_ppmm(ph, pl, m0, m1)					\  do {									\    USItype __m0 = (m0), __m1 = (m1);					\    __asm__ ("mulhwu %0,%1,%2"						\	     : "=r" ((USItype)(ph))					\	     : "%r" (__m0),						\               "r" (__m1));						\    (pl) = __m0 * __m1;							\  } while (0)/* udiv_qrnnd(quotient, remainder, high_numerator, low_numerator, * denominator) divides a UDWtype, composed by the UWtype integers * HIGH_NUMERATOR and LOW_NUMERATOR, by DENOMINATOR and places the quotient * in QUOTIENT and the remainder in REMAINDER.  HIGH_NUMERATOR must be less * than DENOMINATOR for correct operation.  If, in addition, the most * significant bit of DENOMINATOR must be 1, then the pre-processor symbol * UDIV_NEEDS_NORMALIZATION is defined to 1. */#define udiv_qrnnd(q, r, n1, n0, d)					\  do {									\    UWtype __d1, __d0, __q1, __q0, __r1, __r0, __m;			\    __d1 = __ll_highpart (d);						\    __d0 = __ll_lowpart (d);						\									\    __r1 = (n1) % __d1;							\    __q1 = (n1) / __d1;							\    __m = (UWtype) __q1 * __d0;						\    __r1 = __r1 * __ll_B | __ll_highpart (n0);				\    if (__r1 < __m)							\      {									\	__q1--, __r1 += (d);						\	if (__r1 >= (d)) /* we didn't get carry when adding to __r1 */	\	  if (__r1 < __m)						\	    __q1--, __r1 += (d);					\      }									\    __r1 -= __m;							\									\    __r0 = __r1 % __d1;							\    __q0 = __r1 / __d1;							\    __m = (UWtype) __q0 * __d0;						\    __r0 = __r0 * __ll_B | __ll_lowpart (n0);				\    if (__r0 < __m)							\      {									\	__q0--, __r0 += (d);						\	if (__r0 >= (d))						\	  if (__r0 < __m)						\	    __q0--, __r0 += (d);					\      }									\    __r0 -= __m;							\									\    (q) = (UWtype) __q1 * __ll_B | __q0;				\    (r) = __r0;								\  } while (0)#define UDIV_NEEDS_NORMALIZATION 1#define abort()								\	return 0#ifdef __BIG_ENDIAN#define __BYTE_ORDER __BIG_ENDIAN#else#define __BYTE_ORDER __LITTLE_ENDIAN#endif/* Exception flags. */#define EFLAG_INVALID		(1 << (31 - 2))#define EFLAG_OVERFLOW		(1 << (31 - 3))#define EFLAG_UNDERFLOW		(1 << (31 - 4))#define EFLAG_DIVZERO		(1 << (31 - 5))#define EFLAG_INEXACT		(1 << (31 - 6))#define EFLAG_VXSNAN		(1 << (31 - 7))#define EFLAG_VXISI		(1 << (31 - 8))#define EFLAG_VXIDI		(1 << (31 - 9))#define EFLAG_VXZDZ		(1 << (31 - 10))#define EFLAG_VXIMZ		(1 << (31 - 11))#define EFLAG_VXVC		(1 << (31 - 12))#define EFLAG_VXSOFT		(1 << (31 - 21))#define EFLAG_VXSQRT		(1 << (31 - 22))#define EFLAG_VXCVI		(1 << (31 - 23))

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
免费成人av资源网| 亚洲国产成人一区二区三区| 国产91精品久久久久久久网曝门| 亚洲大片精品永久免费| 亚洲韩国精品一区| 天天综合天天做天天综合| 亚洲国产成人va在线观看天堂| 亚洲国产欧美日韩另类综合| 亚洲一区二区三区四区五区中文 | 日韩极品在线观看| 日韩精品欧美成人高清一区二区| 天天综合网 天天综合色| 日韩中文字幕1| 国产精品一区免费视频| av电影在线观看完整版一区二区| 岛国精品在线播放| 在线观看亚洲精品视频| 91精品国产综合久久精品图片| 91精品国产色综合久久| 国产亚洲一区二区在线观看| 国产精品久久毛片a| 一区二区三区在线观看视频| 午夜成人免费电影| 国产精品夜夜嗨| 一本久久a久久免费精品不卡| 99精品黄色片免费大全| 欧美精品高清视频| 国产蜜臀av在线一区二区三区| 亚洲女人的天堂| 久久不见久久见免费视频1| 欧美人伦禁忌dvd放荡欲情| 国产精品久久久久久久久免费相片| 欧美高清dvd| 韩国毛片一区二区三区| 亚洲日韩欧美一区二区在线| 亚洲国产欧美日韩另类综合 | 18成人在线视频| 视频一区欧美精品| 成人激情视频网站| 欧美日韩午夜精品| 国产丝袜在线精品| 人妖欧美一区二区| 色综合久久66| 久久久国际精品| 午夜欧美在线一二页| 成人综合在线视频| 日韩精品专区在线| 夜夜精品浪潮av一区二区三区| 精品一区二区三区在线观看国产| 91在线观看高清| 国产日韩欧美一区二区三区综合| 午夜在线电影亚洲一区| 91视视频在线观看入口直接观看www | 中文无字幕一区二区三区| 亚洲国产综合91精品麻豆| 成人爽a毛片一区二区免费| 日韩欧美一级在线播放| 亚洲国产精品麻豆| 色老综合老女人久久久| 亚洲国产成人一区二区三区| 精品一区二区三区免费观看| 欧美电影在哪看比较好| 亚洲伊人伊色伊影伊综合网| 97久久久精品综合88久久| 欧美韩日一区二区三区| 国内精品国产三级国产a久久| 欧美一区二区三区的| 天天色天天爱天天射综合| 在线欧美小视频| 亚洲激情图片小说视频| av午夜精品一区二区三区| 中文av一区特黄| 成人网男人的天堂| 国产欧美精品一区二区色综合| 国产曰批免费观看久久久| 欧美成人video| 黑人精品欧美一区二区蜜桃| 精品免费日韩av| 国产乱一区二区| 国产精品拍天天在线| eeuss鲁片一区二区三区| 中文字幕一区二区三| 一本色道久久综合亚洲精品按摩| 亚洲欧美另类小说| 欧美日韩在线观看一区二区| 日韩av电影天堂| 26uuu国产日韩综合| 高清视频一区二区| 亚洲精品欧美激情| 欧美三区免费完整视频在线观看| 亚洲成人久久影院| 欧美v国产在线一区二区三区| 国产综合一区二区| 亚洲欧美自拍偷拍| 欧美日韩精品专区| 国产一区二区不卡老阿姨| 国产精品毛片久久久久久久| 91小视频在线观看| 日韩黄色一级片| 欧美极品少妇xxxxⅹ高跟鞋 | 久久久久9999亚洲精品| 国产91精品精华液一区二区三区| 亚洲欧美偷拍卡通变态| 91精品国产欧美一区二区成人| 九九九久久久精品| 亚洲精品自拍动漫在线| 日韩欧美色综合网站| 成人一级黄色片| 亚欧色一区w666天堂| 国产欧美一区二区在线| 欧洲一区二区三区免费视频| 乱一区二区av| 一区二区三区在线观看国产| 精品国产欧美一区二区| 欧洲在线/亚洲| 丰满亚洲少妇av| 蜜桃精品视频在线观看| 亚洲欧洲性图库| 精品国产人成亚洲区| 欧美三区在线观看| 成人免费看的视频| 久久99久国产精品黄毛片色诱| 亚洲精品日韩综合观看成人91| 久久久久久9999| 91精品国产综合久久蜜臀| 99久久精品一区二区| 黄色精品一二区| 图片区日韩欧美亚洲| 亚洲男人的天堂在线观看| 久久色在线视频| 日韩一区二区在线观看| 欧美网站大全在线观看| 99久久精品国产毛片| 国产尤物一区二区在线| 青娱乐精品视频| 亚洲大片在线观看| 一区二区日韩av| 亚洲精品视频观看| 一区二区中文字幕在线| 国产精品色婷婷| 国产精品久久三区| 国产亚洲精久久久久久| 精品久久人人做人人爰| 日韩一区二区三区四区五区六区| 欧美在线看片a免费观看| 91尤物视频在线观看| 91在线视频在线| 91视频你懂的| 91片黄在线观看| 日本黄色一区二区| 在线观看三级视频欧美| 色8久久人人97超碰香蕉987| 91亚洲男人天堂| 色婷婷久久久综合中文字幕| 色哟哟欧美精品| 欧美日韩视频第一区| 欧美日韩在线播放一区| 制服丝袜成人动漫| 欧美一区二区精品| 精品国产免费人成电影在线观看四季| 欧美一区二区三级| 久久久天堂av| 亚洲欧美影音先锋| 一区二区成人在线观看| 午夜精品久久久久久久久久久 | 裸体在线国模精品偷拍| 久久精品国产99国产精品| 九色porny丨国产精品| 国产91丝袜在线播放九色| 成人av电影免费在线播放| youjizz国产精品| 欧美视频在线播放| 欧美不卡一区二区三区| 国产欧美日韩综合| 亚洲欧美一区二区三区国产精品 | 成人午夜私人影院| 欧美喷水一区二区| 精品乱人伦小说| 欧美极品aⅴ影院| 亚洲一区二区三区三| 三级久久三级久久久| 国产精品自拍av| 欧美午夜精品电影| 久久久精品欧美丰满| 一区二区三区中文在线| 麻豆极品一区二区三区| 成人激情免费视频| 欧美精品在欧美一区二区少妇| 久久综合网色—综合色88| 综合电影一区二区三区 | 欧美日韩亚洲综合在线 欧美亚洲特黄一级| 欧美精品18+| 国产精品卡一卡二| 久久9热精品视频| 一本一道综合狠狠老| 欧美成人三级在线| 亚洲一区二区在线免费看| 国产伦精一区二区三区| 欧美精品丝袜中出| 亚洲女爱视频在线|