a50079b7ff
implement a deprecated FPU control interface in addition to the standard one. To make this clearer, further deprecate ieeefp.h by not declaring the function prototypes except on architectures that implement them already. Currently i386 and amd64 implement the ieeefp.h interface for compatibility, and for fp[gs]etprec(), which doesn't exist on most other hardware. Powerpc, sparc64, and ia64 partially implement it and probably shouldn't, and other architectures don't implement it at all.
38 lines
1012 B
C
38 lines
1012 B
C
/*-
|
|
* Written by J.T. Conklin, Apr 6, 1995
|
|
* Public domain.
|
|
* $FreeBSD$
|
|
*/
|
|
|
|
#ifndef _MACHINE_IEEEFP_H_
|
|
#define _MACHINE_IEEEFP_H_
|
|
|
|
/* Deprecated FPU control interface */
|
|
|
|
#include <machine/fsr.h>
|
|
|
|
typedef int fp_except_t;
|
|
#define FP_X_IMP FSR_NX /* imprecise (loss of precision) */
|
|
#define FP_X_DZ FSR_DZ /* divide-by-zero exception */
|
|
#define FP_X_UFL FSR_UF /* underflow exception */
|
|
#define FP_X_OFL FSR_OF /* overflow exception */
|
|
#define FP_X_INV FSR_NV /* invalid operation exception */
|
|
|
|
typedef enum {
|
|
FP_RN = FSR_RD_N, /* round to nearest representable number */
|
|
FP_RZ = FSR_RD_Z, /* round to zero (truncate) */
|
|
FP_RP = FSR_RD_PINF, /* round toward positive infinity */
|
|
FP_RM = FSR_RD_NINF /* round toward negative infinity */
|
|
} fp_rnd_t;
|
|
|
|
__BEGIN_DECLS
|
|
extern fp_rnd_t fpgetround(void);
|
|
extern fp_rnd_t fpsetround(fp_rnd_t);
|
|
extern fp_except_t fpgetmask(void);
|
|
extern fp_except_t fpsetmask(fp_except_t);
|
|
extern fp_except_t fpgetsticky(void);
|
|
__END_DECLS
|
|
|
|
|
|
#endif /* _MACHINE_IEEEFP_H_ */
|