• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 //===-- 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 
20 // In some environment, FE_ALL_EXCEPT is set to 0 and the remaining exceptions
21 // FE_* are missing.
22 #if (FE_ALL_EXCEPT == 0)
23 #ifndef FE_DIVBYZERO
24 #define FE_DIVBYZERO 0
25 #endif // FE_DIVBYZERO
26 
27 #ifndef FE_INEXACT
28 #define FE_INEXACT 0
29 #endif // FE_INEXACT
30 
31 #ifndef FE_INVALID
32 #define FE_INVALID 0
33 #endif // FE_INVALID
34 
35 #ifndef FE_OVERFLOW
36 #define FE_OVERFLOW 0
37 #endif // FE_OVERFLOW
38 
39 #ifndef FE_UNDERFLOW
40 #define FE_UNDERFLOW 0
41 #endif // FE_UNDERFLOW
42 #else
43 // If this is not provided by the system, define it for use internally.
44 #ifndef __FE_DENORM
45 #define __FE_DENORM (1 << 6)
46 #endif
47 #endif
48 
49 // Rounding mode macros might be missing.
50 #ifndef FE_DOWNWARD
51 #define FE_DOWNWARD 0x400
52 #endif // FE_DOWNWARD
53 
54 #ifndef FE_TONEAREST
55 #define FE_TONEAREST 0
56 #endif // FE_TONEAREST
57 
58 #ifndef FE_TOWARDZERO
59 #define FE_TOWARDZERO 0xC00
60 #endif // FE_TOWARDZERO
61 
62 #ifndef FE_UPWARD
63 #define FE_UPWARD 0x800
64 #endif // FE_UPWARD
65 
66 #endif // LLVM_LIBC_FULL_BUILD
67 
68 #endif // LLVM_LIBC_HDR_FENV_MACROS_H
69