📄 float.h
字号:
#define Dexthiddenoverflow(object) Bitfield_extract( 10, 1,object)#define Is_dexthiddenoverflow(object) Bitfield_mask( 10, 1,object)#define Deposit_dextlowp4(object,value) Bitfield_deposit(value,31,1,object)/* * Declare the basic structures for the 3 different * fixed-point precisions. * * Single number * +-------+-------+-------+-------+-------+-------+-------+-------+ * |s| integer | * +-------+-------+-------+-------+-------+-------+-------+-------+ */typedef int sgl_integer;/* * Double number. * +-------+-------+-------+-------+-------+-------+-------+-------+ * |s| high integer | * +-------+-------+-------+-------+-------+-------+-------+-------+ * * +-------+-------+-------+-------+-------+-------+-------+-------+ * | low integer | * +-------+-------+-------+-------+-------+-------+-------+-------+ */struct dint { int wd0; unsigned int wd1;};struct dblwd { unsigned int wd0; unsigned int wd1;};/* * Quad number. * +-------+-------+-------+-------+-------+-------+-------+-------+ * |s| integer part1 | * +-------+-------+-------+-------+-------+-------+-------+-------+ * * +-------+-------+-------+-------+-------+-------+-------+-------+ * | integer part 2 | * +-------+-------+-------+-------+-------+-------+-------+-------+ * * +-------+-------+-------+-------+-------+-------+-------+-------+ * | integer part 3 | * +-------+-------+-------+-------+-------+-------+-------+-------+ * * +-------+-------+-------+-------+-------+-------+-------+-------+ * | integer part 4 | * +-------+-------+-------+-------+-------+-------+-------+-------+ */struct quadwd { int wd0; unsigned int wd1; unsigned int wd2; unsigned int wd3;};typedef struct quadwd quad_integer;/* useful typedefs */typedef unsigned int sgl_floating_point;typedef struct dblwd dbl_floating_point;typedef struct dint dbl_integer;typedef struct dblwd dbl_unsigned;/* * Define the different precisions' parameters. */#define SGL_BITLENGTH 32#define SGL_EMAX 127#define SGL_EMIN (-126)#define SGL_BIAS 127#define SGL_WRAP 192#define SGL_INFINITY_EXPONENT (SGL_EMAX+SGL_BIAS+1)#define SGL_THRESHOLD 32#define SGL_EXP_LENGTH 8#define SGL_P 24#define DBL_BITLENGTH 64#define DBL_EMAX 1023#define DBL_EMIN (-1022)#define DBL_BIAS 1023#define DBL_WRAP 1536#define DBL_INFINITY_EXPONENT (DBL_EMAX+DBL_BIAS+1)#define DBL_THRESHOLD 64#define DBL_EXP_LENGTH 11#define DBL_P 53#define QUAD_BITLENGTH 128#define QUAD_EMAX 16383#define QUAD_EMIN (-16382)#define QUAD_BIAS 16383#define QUAD_WRAP 24576#define QUAD_INFINITY_EXPONENT (QUAD_EMAX+QUAD_BIAS+1)#define QUAD_P 113/* Boolean Values etc. */#define FALSE 0#define TRUE (!FALSE)#define NOT !#define XOR ^/* other constants */#undef NULL#define NULL 0#define NIL 0#define SGL 0#define DBL 1#define BADFMT 2#define QUAD 3/* Types */typedef int boolean;typedef int FORMAT;typedef int VOID;/* Declare status register equivalent to FPUs architecture. * * 0 1 2 3 4 5 6 7 8 910 1 2 3 4 5 6 7 8 920 1 2 3 4 5 6 7 8 930 1 * +-------+-------+-------+-------+-------+-------+-------+-------+ * |V|Z|O|U|I|C| rsv | model | version |RM |rsv|T|r|V|Z|O|U|I| * +-------+-------+-------+-------+-------+-------+-------+-------+ */#define Cbit(object) Bitfield_extract( 5, 1,object)#define Tbit(object) Bitfield_extract( 25, 1,object)#define Roundingmode(object) Bitfield_extract( 21, 2,object)#define Invalidtrap(object) Bitfield_extract( 27, 1,object)#define Divisionbyzerotrap(object) Bitfield_extract( 28, 1,object)#define Overflowtrap(object) Bitfield_extract( 29, 1,object)#define Underflowtrap(object) Bitfield_extract( 30, 1,object)#define Inexacttrap(object) Bitfield_extract( 31, 1,object)#define Invalidflag(object) Bitfield_extract( 0, 1,object)#define Divisionbyzeroflag(object) Bitfield_extract( 1, 1,object)#define Overflowflag(object) Bitfield_extract( 2, 1,object)#define Underflowflag(object) Bitfield_extract( 3, 1,object)#define Inexactflag(object) Bitfield_extract( 4, 1,object)#define Allflags(object) Bitfield_extract( 0, 5,object)/* Definitions relevant to the status register *//* Rounding Modes */#define ROUNDNEAREST 0#define ROUNDZERO 1#define ROUNDPLUS 2#define ROUNDMINUS 3/* Exceptions */#define NOEXCEPTION 0x0#define INVALIDEXCEPTION 0x20#define DIVISIONBYZEROEXCEPTION 0x10#define OVERFLOWEXCEPTION 0x08#define UNDERFLOWEXCEPTION 0x04#define INEXACTEXCEPTION 0x02#define UNIMPLEMENTEDEXCEPTION 0x01/* New exceptions for the 2E Opcode */#define OPC_2E_INVALIDEXCEPTION 0x30#define OPC_2E_OVERFLOWEXCEPTION 0x18#define OPC_2E_UNDERFLOWEXCEPTION 0x0c#define OPC_2E_INEXACTEXCEPTION 0x12/* Declare exception registers equivalent to FPUs architecture * * 0 1 2 3 4 5 6 7 8 910 1 2 3 4 5 6 7 8 920 1 2 3 4 5 6 7 8 930 1 * +-------+-------+-------+-------+-------+-------+-------+-------+ * |excepttype | r1 | r2/ext | operation |parm |n| t/cond | * +-------+-------+-------+-------+-------+-------+-------+-------+ */#define Allexception(object) (object)#define Exceptiontype(object) Bitfield_extract( 0, 6,object)#define Instructionfield(object) Bitfield_mask( 6,26,object)#define Parmfield(object) Bitfield_extract( 23, 3,object)#define Rabit(object) Bitfield_extract( 24, 1,object)#define Ibit(object) Bitfield_extract( 25, 1,object)#define Set_exceptiontype(object,value) Bitfield_deposit(value, 0, 6,object)#define Set_parmfield(object,value) Bitfield_deposit(value, 23, 3,object)#define Set_exceptiontype_and_instr_field(exception,instruction,object) \ object = exception << 26 | instruction/* Declare the condition field * * 0 1 2 3 4 5 6 7 8 910 1 2 3 4 5 6 7 8 920 1 2 3 4 5 6 7 8 930 1 * +-------+-------+-------+-------+-------+-------+-------+-------+ * | |G|L|E|U|X| * +-------+-------+-------+-------+-------+-------+-------+-------+ */#define Allexception(object) (object)#define Greaterthanbit(object) Bitfield_extract( 27, 1,object)#define Lessthanbit(object) Bitfield_extract( 28, 1,object)#define Equalbit(object) Bitfield_extract( 29, 1,object)#define Unorderedbit(object) Bitfield_extract( 30, 1,object)#define Exceptionbit(object) Bitfield_extract( 31, 1,object)/* An alias name for the status register */#define Fpustatus_register (*status)/************************************************** * Status register referencing and manipulation. * **************************************************//* Rounding mode */#define Rounding_mode() Roundingmode(Fpustatus_register)#define Is_rounding_mode(rmode) \ (Roundingmode(Fpustatus_register) == rmode)#define Set_rounding_mode(value) \ Bitfield_deposit(value,21,2,Fpustatus_register)/* Boolean testing of the trap enable bits */#define Is_invalidtrap_enabled() Invalidtrap(Fpustatus_register)#define Is_divisionbyzerotrap_enabled() Divisionbyzerotrap(Fpustatus_register)#define Is_overflowtrap_enabled() Overflowtrap(Fpustatus_register)#define Is_underflowtrap_enabled() Underflowtrap(Fpustatus_register)#define Is_inexacttrap_enabled() Inexacttrap(Fpustatus_register)/* Set the indicated flags in the status register */#define Set_invalidflag() Bitfield_deposit(1,0,1,Fpustatus_register)#define Set_divisionbyzeroflag() Bitfield_deposit(1,1,1,Fpustatus_register)#define Set_overflowflag() Bitfield_deposit(1,2,1,Fpustatus_register)#define Set_underflowflag() Bitfield_deposit(1,3,1,Fpustatus_register)#define Set_inexactflag() Bitfield_deposit(1,4,1,Fpustatus_register)#define Clear_all_flags() Bitfield_deposit(0,0,5,Fpustatus_register)/* Manipulate the trap and condition code bits (tbit and cbit) */#define Set_tbit() Bitfield_deposit(1,25,1,Fpustatus_register)#define Clear_tbit() Bitfield_deposit(0,25,1,Fpustatus_register)#define Is_tbit_set() Tbit(Fpustatus_register)#define Is_cbit_set() Cbit(Fpustatus_register)#define Set_status_cbit(value) \ Bitfield_deposit(value,5,1,Fpustatus_register)/******************************* * Condition field referencing * *******************************/#define Unordered(cond) Unorderedbit(cond)#define Equal(cond) Equalbit(cond)#define Lessthan(cond) Lessthanbit(cond)#define Greaterthan(cond) Greaterthanbit(cond)#define Exception(cond) Exceptionbit(cond)/* Defines for the extension */#define Ext_isone_sign(extent) (Extsign(extent))#define Ext_isnotzero(extent) \ (Extall(extent))#define Ext_isnotzero_lower(extent) \ (Extlow31(extent))#define Ext_leftshiftby1(extent) \ Extall(extent) <<= 1#define Ext_negate(extent) \ (int )Extall(extent) = 0 - (int )Extall(extent)#define Ext_setone_low(extent) Bitfield_deposit(1,31,1,extent)#define Ext_setzero(extent) Extall(extent) = 0typedef int operation;/* error messages */#define NONE 0#define UNDEFFPINST 1/* Function definitions: opcode, opclass */#define FTEST (1<<2) | 0#define FCPY (2<<2) | 0#define FABS (3<<2) | 0#define FSQRT (4<<2) | 0#define FRND (5<<2) | 0#define FCNVFF (0<<2) | 1#define FCNVXF (1<<2) | 1#define FCNVFX (2<<2) | 1#define FCNVFXT (3<<2) | 1#define FCMP (0<<2) | 2#define FADD (0<<2) | 3#define FSUB (1<<2) | 3#define FMPY (2<<2) | 3#define FDIV (3<<2) | 3#define FREM (4<<2) | 3
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -