9a9b91c940
It's finally done.. Signed-off-by: kaguya <vpshinomiya@protonmail.com>
94 lines
1.8 KiB
C
94 lines
1.8 KiB
C
#ifndef MLIBC_FENV_H
|
|
#define MLIBC_FENV_H
|
|
|
|
#if defined(__x86_64__) || defined(__i386__)
|
|
|
|
#define FE_DENORMAL 2
|
|
#define FE_DIVBYZERO 4
|
|
#define FE_INEXACT 32
|
|
#define FE_INVALID 1
|
|
#define FE_OVERFLOW 8
|
|
#define FE_UNDERFLOW 16
|
|
|
|
#define FE_ALL_EXCEPT (FE_DENORMAL | FE_DIVBYZERO | FE_INEXACT | FE_INVALID | FE_OVERFLOW | FE_UNDERFLOW)
|
|
|
|
#define FE_TONEAREST 0
|
|
#define FE_DOWNWARD 0x400
|
|
#define FE_UPWARD 0x800
|
|
#define FE_TOWARDZERO 0xC00
|
|
|
|
#elif defined(__aarch64__)
|
|
|
|
#define FE_INVALID 1
|
|
#define FE_DIVBYZERO 2
|
|
#define FE_OVERFLOW 4
|
|
#define FE_UNDERFLOW 8
|
|
#define FE_INEXACT 16
|
|
|
|
#define FE_ALL_EXCEPT 31
|
|
|
|
#define FE_TONEAREST 0
|
|
#define FE_UPWARD 0x400000
|
|
#define FE_DOWNWARD 0x800000
|
|
#define FE_TOWARDZERO 0xC00000
|
|
|
|
#elif defined(__riscv) && __riscv_xlen == 64
|
|
|
|
#define FE_INEXACT 1
|
|
#define FE_UNDERFLOW 2
|
|
#define FE_OVERFLOW 4
|
|
#define FE_DIVBYZERO 8
|
|
#define FE_INVALID 16
|
|
|
|
#define FE_ALL_EXCEPT 31
|
|
|
|
#define FE_TONEAREST 0
|
|
#define FE_TOWARDZERO 1
|
|
#define FE_DOWNWARD 2
|
|
#define FE_UPWARD 3
|
|
|
|
#elif defined (__m68k__)
|
|
|
|
#if __HAVE_68881__ || __mcffpu__ || __HAVE_FPU_
|
|
|
|
#define FE_INEXACT 8
|
|
#define FE_DIVBYZERO 16
|
|
#define FE_UNDERFLOW 32
|
|
#define FE_OVERFLOW 64
|
|
#define FE_INVALID 128
|
|
|
|
#define FE_ALL_EXCEPT 0xf8
|
|
|
|
#define FE_TONEAREST 0
|
|
#define FE_TOWARDZERO 16
|
|
#define FE_DOWNWARD 32
|
|
#define FE_UPWARD 48
|
|
|
|
#else
|
|
|
|
#define FE_ALL_EXCEPT 0
|
|
#define FE_TONEAREST 0
|
|
|
|
#endif
|
|
|
|
#elif defined(__loongarch64)
|
|
|
|
#define FE_INEXACT 0x010000
|
|
#define FE_UNDERFLOW 0x020000
|
|
#define FE_OVERFLOW 0x040000
|
|
#define FE_DIVBYZERO 0x080000
|
|
#define FE_INVALID 0x100000
|
|
|
|
#define FE_ALL_EXCEPT (FE_INEXACT | FE_DIVBYZERO | FE_UNDERFLOW | FE_OVERFLOW | FE_INVALID)
|
|
|
|
#define FE_TONEAREST 0x000
|
|
#define FE_TOWARDZERO 0x100
|
|
#define FE_UPWARD 0x200
|
|
#define FE_DOWNWARD 0x300
|
|
|
|
#else
|
|
#error Unknown architecture
|
|
#endif
|
|
|
|
#endif /* MLIBC_FENV_H */
|