blob: 3f0bd89a6ea35451f85ec55bd746081e89bb3735 [file] [log] [blame]
LLVM libc33e5bf02024-04-12 23:33:35 +02001//===-- Definition of macros from fenv.h ----------------------------------===//
2//
3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4// See https://llvm.org/LICENSE.txt for license information.
5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6//
7//===----------------------------------------------------------------------===//
8
9#ifndef LLVM_LIBC_HDR_FENV_MACROS_H
10#define LLVM_LIBC_HDR_FENV_MACROS_H
11
12#ifdef LIBC_FULL_BUILD
13
14#include "include/llvm-libc-macros/fenv-macros.h"
15
16#else // Overlay mode
17
18#include <fenv.h>
19
LLVM libcaf661192024-05-10 16:38:13 -050020// In some environment, FE_ALL_EXCEPT is set to 0 and the remaining exceptions
21// FE_* are missing.
LLVM libcaf661192024-05-10 16:38:13 -050022#ifndef FE_DIVBYZERO
23#define FE_DIVBYZERO 0
24#endif // FE_DIVBYZERO
25
26#ifndef FE_INEXACT
27#define FE_INEXACT 0
28#endif // FE_INEXACT
29
30#ifndef FE_INVALID
31#define FE_INVALID 0
32#endif // FE_INVALID
33
34#ifndef FE_OVERFLOW
35#define FE_OVERFLOW 0
36#endif // FE_OVERFLOW
37
38#ifndef FE_UNDERFLOW
39#define FE_UNDERFLOW 0
40#endif // FE_UNDERFLOW
LLVM libcaf661192024-05-10 16:38:13 -050041
42// Rounding mode macros might be missing.
43#ifndef FE_DOWNWARD
44#define FE_DOWNWARD 0x400
45#endif // FE_DOWNWARD
46
47#ifndef FE_TONEAREST
48#define FE_TONEAREST 0
49#endif // FE_TONEAREST
50
51#ifndef FE_TOWARDZERO
52#define FE_TOWARDZERO 0xC00
53#endif // FE_TOWARDZERO
54
55#ifndef FE_UPWARD
56#define FE_UPWARD 0x800
57#endif // FE_UPWARD
58
LLVM libc33e5bf02024-04-12 23:33:35 +020059#endif // LLVM_LIBC_FULL_BUILD
60
61#endif // LLVM_LIBC_HDR_FENV_MACROS_H