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