diff --git a/libc/src/__support/FPUtil/CMakeLists.txt b/libc/src/__support/FPUtil/CMakeLists.txt --- a/libc/src/__support/FPUtil/CMakeLists.txt +++ b/libc/src/__support/FPUtil/CMakeLists.txt @@ -1,20 +1,7 @@ -if(${LIBC_TARGET_ARCHITECTURE_IS_X86}) - set(LONG_DOUBLE_HDR LongDoubleBitsX86.h) -else() - set(LONG_DOUBLE_HDR) -endif() - -if(EXISTS ${LIBC_TARGET_ARCHITECTURE}) - set(FENV_IMPL ${LIBC_TARGET_ARCHITECTURE}/FEnvImpl.h) -else() - set(FENV_IMPL DummyFEnvImpl.h) -endif() - add_header_library( fputil HDRS - ${LONG_DOUBLE_HDR} - ${FENV_IMPL} + FEnvImpl.h BasicOperations.h DivisionAndRemainderOperations.h FEnvUtils.h diff --git a/libc/src/__support/FPUtil/DummyFEnvImpl.h b/libc/src/__support/FPUtil/FEnvImpl.h rename from libc/src/__support/FPUtil/DummyFEnvImpl.h rename to libc/src/__support/FPUtil/FEnvImpl.h --- a/libc/src/__support/FPUtil/DummyFEnvImpl.h +++ b/libc/src/__support/FPUtil/FEnvImpl.h @@ -1,4 +1,4 @@ -//===-- Dummy floating point environment manipulation functins --*- C++ -*-===// +//===-- Floating point environment manipulation functions -------*- C++ -*-===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. @@ -9,6 +9,13 @@ #ifndef LLVM_LIBC_SRC_SUPPORT_FPUTIL_DUMMY_FENVIMPL_H #define LLVM_LIBC_SRC_SUPPORT_FPUTIL_DUMMY_FENVIMPL_H +#include "src/__support/architectures.h" + +#if defined(LLVM_LIBC_ARCH_AARCH64) +#include "aarch64/FEnvImpl.h" +#elif defined(LLVM_LIBC_ARCH_X86) +#include "x86_64/FEnvImpl.h" +#else #include #include @@ -35,5 +42,6 @@ } // namespace fputil } // namespace __llvm_libc +#endif #endif // LLVM_LIBC_SRC_SUPPORT_FPUTIL_DUMMY_FENVIMPL_H diff --git a/libc/src/__support/FPUtil/FMA.h b/libc/src/__support/FPUtil/FMA.h --- a/libc/src/__support/FPUtil/FMA.h +++ b/libc/src/__support/FPUtil/FMA.h @@ -9,7 +9,6 @@ #ifndef LLVM_LIBC_SRC_SUPPORT_FPUTIL_FMA_H #define LLVM_LIBC_SRC_SUPPORT_FPUTIL_FMA_H -#include "src/__support/CPP/TypeTraits.h" #include "src/__support/architectures.h" #if defined(LLVM_LIBC_ARCH_X86_64) @@ -18,6 +17,7 @@ #include "aarch64/FMA.h" #else #include "generic/FMA.h" +#include "src/__support/CPP/TypeTraits.h" namespace __llvm_libc { namespace fputil { diff --git a/libc/src/__support/FPUtil/FPBits.h b/libc/src/__support/FPUtil/FPBits.h --- a/libc/src/__support/FPUtil/FPBits.h +++ b/libc/src/__support/FPUtil/FPBits.h @@ -153,7 +153,7 @@ } // namespace __llvm_libc #ifdef SPECIAL_X86_LONG_DOUBLE -#include "src/__support/FPUtil/LongDoubleBitsX86.h" +#include "x86_64/LongDoubleBits.h" #endif #endif // LLVM_LIBC_SRC_SUPPORT_FPUTIL_FP_BITS_H diff --git a/libc/src/__support/FPUtil/ManipulationFunctions.h b/libc/src/__support/FPUtil/ManipulationFunctions.h --- a/libc/src/__support/FPUtil/ManipulationFunctions.h +++ b/libc/src/__support/FPUtil/ManipulationFunctions.h @@ -179,7 +179,7 @@ } // namespace __llvm_libc #ifdef SPECIAL_X86_LONG_DOUBLE -#include "NextAfterLongDoubleX86.h" +#include "x86_64/NextAfterLongDouble.h" #endif // SPECIAL_X86_LONG_DOUBLE #endif // LLVM_LIBC_SRC_SUPPORT_FPUTIL_MANIPULATION_FUNCTIONS_H diff --git a/libc/src/__support/FPUtil/Sqrt.h b/libc/src/__support/FPUtil/Sqrt.h --- a/libc/src/__support/FPUtil/Sqrt.h +++ b/libc/src/__support/FPUtil/Sqrt.h @@ -186,7 +186,7 @@ } // namespace __llvm_libc #ifdef SPECIAL_X86_LONG_DOUBLE -#include "SqrtLongDoubleX86.h" +#include "x86_64/SqrtLongDouble.h" #endif // SPECIAL_X86_LONG_DOUBLE #endif // LLVM_LIBC_SRC_SUPPORT_FPUTIL_SQRT_H diff --git a/libc/src/__support/FPUtil/aarch64/FEnvImpl.h b/libc/src/__support/FPUtil/aarch64/FEnvImpl.h --- a/libc/src/__support/FPUtil/aarch64/FEnvImpl.h +++ b/libc/src/__support/FPUtil/aarch64/FEnvImpl.h @@ -9,6 +9,12 @@ #ifndef LLVM_LIBC_SRC_SUPPORT_FPUTIL_AARCH64_FENVIMPL_H #define LLVM_LIBC_SRC_SUPPORT_FPUTIL_AARCH64_FENVIMPL_H +#include "src/__support/architectures.h" + +#if !defined(LLVM_LIBC_ARCH_AARCH64) +#error "Invalid include" +#endif + #include #include #include diff --git a/libc/src/__support/FPUtil/aarch64/FMA.h b/libc/src/__support/FPUtil/aarch64/FMA.h --- a/libc/src/__support/FPUtil/aarch64/FMA.h +++ b/libc/src/__support/FPUtil/aarch64/FMA.h @@ -9,6 +9,12 @@ #ifndef LLVM_LIBC_SRC_SUPPORT_FPUTIL_AARCH64_FMA_H #define LLVM_LIBC_SRC_SUPPORT_FPUTIL_AARCH64_FMA_H +#include "src/__support/architectures.h" + +#if !defined(LLVM_LIBC_ARCH_AARCH64) +#error "Invalid include" +#endif + #include "src/__support/CPP/TypeTraits.h" namespace __llvm_libc { diff --git a/libc/src/__support/FPUtil/x86_64/FEnvImpl.h b/libc/src/__support/FPUtil/x86_64/FEnvImpl.h --- a/libc/src/__support/FPUtil/x86_64/FEnvImpl.h +++ b/libc/src/__support/FPUtil/x86_64/FEnvImpl.h @@ -9,6 +9,12 @@ #ifndef LLVM_LIBC_SRC_SUPPORT_FPUTIL_X86_64_FENVIMPL_H #define LLVM_LIBC_SRC_SUPPORT_FPUTIL_X86_64_FENVIMPL_H +#include "src/__support/architectures.h" + +#if !defined(LLVM_LIBC_ARCH_X86) +#error "Invalid include" +#endif + #include #include diff --git a/libc/src/__support/FPUtil/x86_64/FMA.h b/libc/src/__support/FPUtil/x86_64/FMA.h --- a/libc/src/__support/FPUtil/x86_64/FMA.h +++ b/libc/src/__support/FPUtil/x86_64/FMA.h @@ -9,6 +9,12 @@ #ifndef LLVM_LIBC_SRC_SUPPORT_FPUTIL_X86_64_FMA_H #define LLVM_LIBC_SRC_SUPPORT_FPUTIL_X86_64_FMA_H +#include "src/__support/architectures.h" + +#if !defined(LLVM_LIBC_ARCH_X86) +#error "Invalid include" +#endif + #include "src/__support/CPP/TypeTraits.h" namespace __llvm_libc { diff --git a/libc/src/__support/FPUtil/LongDoubleBitsX86.h b/libc/src/__support/FPUtil/x86_64/LongDoubleBits.h rename from libc/src/__support/FPUtil/LongDoubleBitsX86.h rename to libc/src/__support/FPUtil/x86_64/LongDoubleBits.h --- a/libc/src/__support/FPUtil/LongDoubleBitsX86.h +++ b/libc/src/__support/FPUtil/x86_64/LongDoubleBits.h @@ -6,10 +6,16 @@ // //===----------------------------------------------------------------------===// -#ifndef LLVM_LIBC_SRC_SUPPORT_FPUTIL_LONG_DOUBLE_BITS_X86_H -#define LLVM_LIBC_SRC_SUPPORT_FPUTIL_LONG_DOUBLE_BITS_X86_H +#ifndef LLVM_LIBC_SRC_SUPPORT_FPUTIL_X86_64_LONG_DOUBLE_BITS_H +#define LLVM_LIBC_SRC_SUPPORT_FPUTIL_X86_64_LONG_DOUBLE_BITS_H -#include "FPBits.h" +#include "src/__support/architectures.h" + +#if !defined(LLVM_LIBC_ARCH_X86) +#error "Invalid include" +#endif + +#include "src/__support/FPUtil/FPBits.h" #include @@ -181,4 +187,4 @@ } // namespace fputil } // namespace __llvm_libc -#endif // LLVM_LIBC_SRC_SUPPORT_FPUTIL_LONG_DOUBLE_BITS_X86_H +#endif // LLVM_LIBC_SRC_SUPPORT_FPUTIL_X86_64_LONG_DOUBLE_BITS_H diff --git a/libc/src/__support/FPUtil/NextAfterLongDoubleX86.h b/libc/src/__support/FPUtil/x86_64/NextAfterLongDouble.h rename from libc/src/__support/FPUtil/NextAfterLongDoubleX86.h rename to libc/src/__support/FPUtil/x86_64/NextAfterLongDouble.h --- a/libc/src/__support/FPUtil/NextAfterLongDoubleX86.h +++ b/libc/src/__support/FPUtil/x86_64/NextAfterLongDouble.h @@ -6,10 +6,16 @@ // //===----------------------------------------------------------------------===// -#ifndef LLVM_LIBC_SRC_SUPPORT_FPUTIL_NEXT_AFTER_LONG_DOUBLE_X86_H -#define LLVM_LIBC_SRC_SUPPORT_FPUTIL_NEXT_AFTER_LONG_DOUBLE_X86_H +#ifndef LLVM_LIBC_SRC_SUPPORT_FPUTIL_X86_64_NEXT_AFTER_LONG_DOUBLE_H +#define LLVM_LIBC_SRC_SUPPORT_FPUTIL_X86_64_NEXT_AFTER_LONG_DOUBLE_H -#include "FPBits.h" +#include "src/__support/architectures.h" + +#if !defined(LLVM_LIBC_ARCH_X86) +#error "Invalid include" +#endif + +#include "src/__support/FPUtil/FPBits.h" #include @@ -111,4 +117,4 @@ } // namespace fputil } // namespace __llvm_libc -#endif // LLVM_LIBC_SRC_SUPPORT_FPUTIL_NEXT_AFTER_LONG_DOUBLE_X86_H +#endif // LLVM_LIBC_SRC_SUPPORT_FPUTIL_X86_64_NEXT_AFTER_LONG_DOUBLE_H diff --git a/libc/src/__support/FPUtil/SqrtLongDoubleX86.h b/libc/src/__support/FPUtil/x86_64/SqrtLongDouble.h rename from libc/src/__support/FPUtil/SqrtLongDoubleX86.h rename to libc/src/__support/FPUtil/x86_64/SqrtLongDouble.h --- a/libc/src/__support/FPUtil/SqrtLongDoubleX86.h +++ b/libc/src/__support/FPUtil/x86_64/SqrtLongDouble.h @@ -6,8 +6,14 @@ // //===----------------------------------------------------------------------===// -#ifndef LLVM_LIBC_SRC_SUPPORT_FPUTIL_SQRT_LONG_DOUBLE_X86_H -#define LLVM_LIBC_SRC_SUPPORT_FPUTIL_SQRT_LONG_DOUBLE_X86_H +#ifndef LLVM_LIBC_SRC_SUPPORT_FPUTIL_X86_64_SQRT_LONG_DOUBLE_H +#define LLVM_LIBC_SRC_SUPPORT_FPUTIL_X86_64_SQRT_LONG_DOUBLE_H + +#include "src/__support/architectures.h" + +#if !defined(LLVM_LIBC_ARCH_X86) +#error "Invalid include" +#endif #include "FPBits.h" #include "Sqrt.h" @@ -139,4 +145,4 @@ } // namespace fputil } // namespace __llvm_libc -#endif // LLVM_LIBC_SRC_SUPPORT_FPUTIL_SQRT_LONG_DOUBLE_X86_H +#endif // LLVM_LIBC_SRC_SUPPORT_FPUTIL_X86_64_SQRT_LONG_DOUBLE_H