11.5Sriastrad/*	$NetBSD: fenv.h,v 1.5 2024/05/12 20:04:12 riastradh Exp $	*/
21.1Smatt
31.3Sskrll/*
41.1Smatt * Based on ieeefp.h written by J.T. Conklin, Apr 28, 1995
51.1Smatt * Public domain.
61.1Smatt */
71.1Smatt
81.1Smatt#ifndef _RISCV_FENV_H_
91.1Smatt#define _RISCV_FENV_H_
101.1Smatt
111.1Smatttypedef int fenv_t;		/* FPSCR */
121.1Smatttypedef int fexcept_t;
131.1Smatt
141.5Sriastrad#define	FE_INEXACT	((int)__BIT(0))	/* Result inexact */
151.5Sriastrad#define	FE_UNDERFLOW	((int)__BIT(1))	/* Result underflowed */
161.5Sriastrad#define	FE_OVERFLOW	((int)__BIT(2))	/* Result overflowed */
171.5Sriastrad#define	FE_DIVBYZERO	((int)__BIT(3))	/* divide-by-zero */
181.5Sriastrad#define	FE_INVALID	((int)__BIT(4))	/* Result invalid */
191.1Smatt
201.4Sskrll#define	FE_ALL_EXCEPT	\
211.4Sskrll    (FE_INEXACT | FE_UNDERFLOW | FE_OVERFLOW | FE_DIVBYZERO | FE_INVALID)
221.1Smatt
231.1Smatt#define	FE_TONEAREST	0	/* round to nearest representable number */
241.1Smatt#define	FE_TOWARDZERO	1	/* round to zero (truncate) */
251.1Smatt#define	FE_DOWNWARD	2	/* round toward negative infinity */
261.1Smatt#define	FE_UPWARD	3	/* round toward positive infinity */
271.1Smatt
281.1Smatt__BEGIN_DECLS
291.1Smatt
301.1Smatt/* Default floating-point environment */
311.2Schsextern const fenv_t	__fe_dfl_env;
321.1Smatt#define FE_DFL_ENV	(&__fe_dfl_env)
331.1Smatt
341.1Smatt__END_DECLS
351.1Smatt
361.1Smatt#endif /* _RISCV_FENV_H_ */
37