xref: /netbsd-src/sys/arch/riscv/include/fenv.h (revision 118100d9c7fa19c97e39ebd2c3636daaab28abba)
1*118100d9Sriastradh /*	$NetBSD: fenv.h,v 1.5 2024/05/12 20:04:12 riastradh Exp $	*/
26cf6fe02Smatt 
36cf6fe02Smatt /*
46cf6fe02Smatt  * Based on ieeefp.h written by J.T. Conklin, Apr 28, 1995
56cf6fe02Smatt  * Public domain.
66cf6fe02Smatt  */
76cf6fe02Smatt 
86cf6fe02Smatt #ifndef _RISCV_FENV_H_
96cf6fe02Smatt #define _RISCV_FENV_H_
106cf6fe02Smatt 
116cf6fe02Smatt typedef int fenv_t;		/* FPSCR */
126cf6fe02Smatt typedef int fexcept_t;
136cf6fe02Smatt 
14*118100d9Sriastradh #define	FE_INEXACT	((int)__BIT(0))	/* Result inexact */
15*118100d9Sriastradh #define	FE_UNDERFLOW	((int)__BIT(1))	/* Result underflowed */
16*118100d9Sriastradh #define	FE_OVERFLOW	((int)__BIT(2))	/* Result overflowed */
17*118100d9Sriastradh #define	FE_DIVBYZERO	((int)__BIT(3))	/* divide-by-zero */
18*118100d9Sriastradh #define	FE_INVALID	((int)__BIT(4))	/* Result invalid */
196cf6fe02Smatt 
2040dd220aSskrll #define	FE_ALL_EXCEPT	\
2140dd220aSskrll     (FE_INEXACT | FE_UNDERFLOW | FE_OVERFLOW | FE_DIVBYZERO | FE_INVALID)
226cf6fe02Smatt 
236cf6fe02Smatt #define	FE_TONEAREST	0	/* round to nearest representable number */
246cf6fe02Smatt #define	FE_TOWARDZERO	1	/* round to zero (truncate) */
256cf6fe02Smatt #define	FE_DOWNWARD	2	/* round toward negative infinity */
266cf6fe02Smatt #define	FE_UPWARD	3	/* round toward positive infinity */
276cf6fe02Smatt 
286cf6fe02Smatt __BEGIN_DECLS
296cf6fe02Smatt 
306cf6fe02Smatt /* Default floating-point environment */
317e30e943Schs extern const fenv_t	__fe_dfl_env;
326cf6fe02Smatt #define FE_DFL_ENV	(&__fe_dfl_env)
336cf6fe02Smatt 
346cf6fe02Smatt __END_DECLS
356cf6fe02Smatt 
366cf6fe02Smatt #endif /* _RISCV_FENV_H_ */
37