xref: /openbsd-src/sys/arch/arm/include/ieeefp.h (revision 2fa72412907ae78c4787a4a8f888c5f0486e225c)
1*2fa72412Spirofti /*	$OpenBSD: ieeefp.h,v 1.2 2011/03/23 16:54:34 pirofti Exp $	*/
2e1e4f5b1Sdrahn /*	$NetBSD: ieeefp.h,v 1.1 2001/01/10 19:02:06 bjh21 Exp $	*/
3e1e4f5b1Sdrahn 
4e1e4f5b1Sdrahn /*
5e1e4f5b1Sdrahn  * Based on ieeefp.h written by J.T. Conklin, Apr 28, 1995
6e1e4f5b1Sdrahn  * Public domain.
7e1e4f5b1Sdrahn  */
8e1e4f5b1Sdrahn 
9*2fa72412Spirofti #ifndef _ARM_IEEEFP_H_
10*2fa72412Spirofti #define _ARM_IEEEFP_H_
11e1e4f5b1Sdrahn 
12e1e4f5b1Sdrahn /* FP exception codes */
13e1e4f5b1Sdrahn 
14e1e4f5b1Sdrahn #define FP_EXCEPT_INV	0
15e1e4f5b1Sdrahn #define FP_EXCEPT_DZ	1
16e1e4f5b1Sdrahn #define FP_EXCEPT_OFL	2
17e1e4f5b1Sdrahn #define FP_EXCEPT_UFL	3
18e1e4f5b1Sdrahn #define FP_EXCEPT_IMP	4
19e1e4f5b1Sdrahn 
20e1e4f5b1Sdrahn /* Exception type (used by fpsetmask() et al.) */
21e1e4f5b1Sdrahn 
22e1e4f5b1Sdrahn typedef int fp_except;
23e1e4f5b1Sdrahn 
24e1e4f5b1Sdrahn /* Bit defines for fp_except */
25e1e4f5b1Sdrahn 
26e1e4f5b1Sdrahn #define	FP_X_INV	(1 << FP_EXCEPT_INV)	/* invalid operation exception */
27e1e4f5b1Sdrahn #define	FP_X_DZ		(1 << FP_EXCEPT_DZ)	/* divide-by-zero exception */
28e1e4f5b1Sdrahn #define	FP_X_OFL	(1 << FP_EXCEPT_OFL)	/* overflow exception */
29e1e4f5b1Sdrahn #define	FP_X_UFL	(1 << FP_EXCEPT_UFL)	/* underflow exception */
30e1e4f5b1Sdrahn #define	FP_X_IMP	(1 << FP_EXCEPT_IMP)	/* imprecise (loss of precision; "inexact") */
31e1e4f5b1Sdrahn 
32e1e4f5b1Sdrahn /* Rounding modes */
33e1e4f5b1Sdrahn 
34e1e4f5b1Sdrahn typedef enum {
35e1e4f5b1Sdrahn     FP_RN=0,			/* round to nearest representable number */
36e1e4f5b1Sdrahn     FP_RP=1,			/* round toward positive infinity */
37e1e4f5b1Sdrahn     FP_RM=2,			/* round toward negative infinity */
38e1e4f5b1Sdrahn     FP_RZ=3			/* round to zero (truncate) */
39e1e4f5b1Sdrahn } fp_rnd;
40e1e4f5b1Sdrahn 
41*2fa72412Spirofti #endif /* _ARM_IEEEFP_H_ */
42