|
|
1.1 root 1:
2: /* single : S 8*E 23*F */
3: /* double : S 11*E 52*F */
4: /* extended : S 15*E 64*F */
5: /* E = 0 & F = 0 -> 0 */
6: /* E = MAX & F = 0 -> Infin */
7: /* E = MAX & F # 0 -> NotANumber */
8: /* E = biased by 127 (single) ,1023 (double) ,16383 (extended) */
9:
10: #define FPSR_BSUN 0x00008000
11: #define FPSR_SNAN 0x00004000
12: #define FPSR_OPERR 0x00002000
13: #define FPSR_OVFL 0x00001000
14: #define FPSR_UNFL 0x00000800
15: #define FPSR_DZ 0x00000400
16: #define FPSR_INEX2 0x00000200
17: #define FPSR_INEX1 0x00000100
18:
19: extern void fp_init_native(void);
1.1.1.2 ! root 20: #ifdef MSVC_LONG_DOUBLE
! 21: extern void fp_init_native_80(void);
! 22: #endif
! 23: extern void fp_init_softfloat(int);
1.1 root 24: extern void fpsr_set_exception(uae_u32 exception);
25: extern void fpu_modechange(void);
1.1.1.2 ! root 26: extern void fpu_clearstatus(void);
1.1 root 27:
1.1.1.2 ! root 28: #ifdef WINUAE_FOR_HATARI
1.1 root 29: extern double softfloat_tan(double v);
1.1.1.2 ! root 30: #endif
1.1 root 31:
32:
33: #if defined(CPU_i386) || defined(CPU_x86_64)
34: extern void init_fpucw_x87(void);
1.1.1.2 ! root 35: #ifdef MSVC_LONG_DOUBLE
! 36: extern void init_fpucw_x87_80(void);
1.1 root 37: #endif
1.1.1.2 ! root 38: #endif
! 39:
! 40: #define PREC_NORMAL 0
! 41: #define PREC_FLOAT 1
! 42: #define PREC_DOUBLE 2
! 43: #define PREC_EXTENDED 3
! 44:
! 45: #define FPU_FEATURE_EXCEPTIONS 1
! 46: #define FPU_FEATURE_DENORMALS 2
1.1 root 47:
48: typedef void (*FPP_ABQS)(fpdata*, fpdata*, uae_u64*, uae_u8*);
49: typedef void (*FPP_AB)(fpdata*, fpdata*);
50: typedef void (*FPP_ABP)(fpdata*, fpdata*, int);
51: typedef void (*FPP_A)(fpdata*);
52:
53: typedef bool (*FPP_IS)(fpdata*);
54: typedef void (*FPP_SET_MODE)(uae_u32);
55: typedef void (*FPP_GET_STATUS)(uae_u32*);
56: typedef void (*FPP_CLEAR_STATUS)(void);
1.1.1.2 ! root 57: typedef uae_u32 (*FPP_SUPPORT_FLAGS)(void);
1.1 root 58:
59: typedef void (*FPP_FROM_NATIVE)(fptype, fpdata*);
60: typedef void (*FPP_TO_NATIVE)(fptype*, fpdata*);
61:
62: typedef void (*FPP_FROM_INT)(fpdata*,uae_s32);
63: typedef uae_s64 (*FPP_TO_INT)(fpdata*, int);
64:
65: typedef void (*FPP_TO_SINGLE)(fpdata*, uae_u32);
66: typedef uae_u32 (*FPP_FROM_SINGLE)(fpdata*);
67:
68: typedef void (*FPP_TO_DOUBLE)(fpdata*, uae_u32, uae_u32);
69: typedef void (*FPP_FROM_DOUBLE)(fpdata*, uae_u32*, uae_u32*);
70:
71: typedef void (*FPP_TO_EXTEN)(fpdata*, uae_u32, uae_u32, uae_u32);
72: typedef void (*FPP_FROM_EXTEN)(fpdata*, uae_u32*, uae_u32*, uae_u32*);
73:
74: typedef void (*FPP_PACK)(fpdata*, uae_u32*, int);
75:
76: typedef const TCHAR* (*FPP_PRINT)(fpdata*,int);
77: typedef uae_u32 (*FPP_GET32)(void);
78:
79: typedef void (*FPP_DENORMALIZE)(fpdata*,int);
80:
81: extern FPP_PRINT fpp_print;
82:
83: extern FPP_IS fpp_unset_snan;
1.1.1.2 ! root 84: extern FPP_IS fpp_is_init;
! 85: extern FPP_IS fpp_is_snan;
1.1 root 86: extern FPP_IS fpp_is_nan;
87: extern FPP_IS fpp_is_infinity;
88: extern FPP_IS fpp_is_zero;
89: extern FPP_IS fpp_is_neg;
90: extern FPP_IS fpp_is_denormal;
91: extern FPP_IS fpp_is_unnormal;
1.1.1.2 ! root 92: extern FPP_A fpp_fix_infinity;
1.1 root 93:
94: extern FPP_GET_STATUS fpp_get_status;
95: extern FPP_CLEAR_STATUS fpp_clear_status;
96: extern FPP_SET_MODE fpp_set_mode;
1.1.1.2 ! root 97: extern FPP_SUPPORT_FLAGS fpp_get_support_flags;
1.1 root 98:
99: extern FPP_TO_INT fpp_to_int;
100: extern FPP_FROM_INT fpp_from_int;
101:
102: extern FPP_PACK fpp_to_pack;
103: extern FPP_PACK fpp_from_pack;
104:
105: extern FPP_TO_SINGLE fpp_to_single;
106: extern FPP_FROM_SINGLE fpp_from_single;
107: extern FPP_TO_DOUBLE fpp_to_double;
108: extern FPP_FROM_DOUBLE fpp_from_double;
109: extern FPP_TO_EXTEN fpp_to_exten;
110: extern FPP_FROM_EXTEN fpp_from_exten;
111: extern FPP_TO_EXTEN fpp_to_exten_fmovem;
112: extern FPP_FROM_EXTEN fpp_from_exten_fmovem;
113:
114: extern FPP_A fpp_round_single;
115: extern FPP_A fpp_round_double;
116: extern FPP_A fpp_round32;
117: extern FPP_A fpp_round64;
118:
119: extern FPP_A fpp_normalize;
120: extern FPP_DENORMALIZE fpp_denormalize;
121: extern FPP_A fpp_get_internal_overflow;
122: extern FPP_A fpp_get_internal_underflow;
123: extern FPP_A fpp_get_internal_round_all;
124: extern FPP_A fpp_get_internal_round;
125: extern FPP_A fpp_get_internal_round_exten;
126: extern FPP_A fpp_get_internal;
127: extern FPP_GET32 fpp_get_internal_grs;
128:
129: extern FPP_AB fpp_int;
130: extern FPP_AB fpp_sinh;
131: extern FPP_AB fpp_intrz;
132: extern FPP_ABP fpp_sqrt;
133: extern FPP_AB fpp_lognp1;
134: extern FPP_AB fpp_etoxm1;
135: extern FPP_AB fpp_tanh;
136: extern FPP_AB fpp_atan;
137: extern FPP_AB fpp_atanh;
138: extern FPP_AB fpp_sin;
139: extern FPP_AB fpp_asin;
140: extern FPP_AB fpp_tan;
141: extern FPP_AB fpp_etox;
142: extern FPP_AB fpp_twotox;
143: extern FPP_AB fpp_tentox;
144: extern FPP_AB fpp_logn;
145: extern FPP_AB fpp_log10;
146: extern FPP_AB fpp_log2;
147: extern FPP_ABP fpp_abs;
148: extern FPP_AB fpp_cosh;
149: extern FPP_ABP fpp_neg;
150: extern FPP_AB fpp_acos;
151: extern FPP_AB fpp_cos;
152: extern FPP_AB fpp_getexp;
153: extern FPP_AB fpp_getman;
154: extern FPP_ABP fpp_div;
155: extern FPP_ABQS fpp_mod;
156: extern FPP_ABP fpp_add;
157: extern FPP_ABP fpp_mul;
158: extern FPP_ABQS fpp_rem;
159: extern FPP_AB fpp_scale;
160: extern FPP_ABP fpp_sub;
161: extern FPP_AB fpp_sgldiv;
162: extern FPP_AB fpp_sglmul;
163: extern FPP_AB fpp_cmp;
164: extern FPP_AB fpp_tst;
165: extern FPP_ABP fpp_move;
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.