[libc][complex] add cfloat16 and cfloat128 compiler flags (#121140)

Proper fix for the temporary fix in #114696
This commit is contained in:
Shourya Goel 2024-12-26 12:50:07 +05:30 committed by GitHub
parent 03093b62d4
commit abd9102344
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
30 changed files with 62 additions and 132 deletions

View File

@ -13,6 +13,8 @@ set(
"float16_conversion"
"float128"
"fixed_point"
"cfloat16"
"cfloat128"
)
# Making sure ALL_COMPILER_FEATURES is sorted.
@ -110,6 +112,10 @@ foreach(feature IN LISTS ALL_COMPILER_FEATURES)
set(LIBC_TYPES_HAS_FLOAT128 TRUE)
elseif(${feature} STREQUAL "fixed_point")
set(LIBC_COMPILER_HAS_FIXED_POINT TRUE)
elseif(${feature} STREQUAL "cfloat16")
set(LIBC_TYPES_HAS_CFLOAT16 TRUE)
elseif(${feature} STREQUAL "cfloat128")
set(LIBC_TYPES_HAS_CFLOAT128 TRUE)
elseif(${feature} STREQUAL "builtin_ceil_floor_rint_trunc")
set(LIBC_COMPILER_HAS_BUILTIN_CEIL_FLOOR_RINT_TRUNC TRUE)
elseif(${feature} STREQUAL "builtin_fmax_fmin")

View File

@ -0,0 +1,5 @@
#include "src/__support/macros/properties/complex_types.h"
#ifndef LIBC_TYPES_HAS_CFLOAT128
#error unsupported
#endif

View File

@ -0,0 +1,5 @@
#include "src/__support/macros/properties/complex_types.h"
#ifndef LIBC_TYPES_HAS_CFLOAT16
#error unsupported
#endif

View File

@ -619,14 +619,17 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.ufromfpxl
)
if(LIBC_TYPES_HAS_FLOAT16)
if(LIBC_TYPES_HAS_CFLOAT16)
list(APPEND TARGET_LIBM_ENTRYPOINTS
# complex.h C23 _Complex _Float16 entrypoints
# libc.src.complex.crealf16
# libc.src.complex.cimagf16
# libc.src.complex.conjf16
# libc.src.complex.cprojf16
libc.src.complex.crealf16
libc.src.complex.cimagf16
libc.src.complex.conjf16
libc.src.complex.cprojf16
)
endif()
if(LIBC_TYPES_HAS_FLOAT16)
# math.h C23 _Float16 entrypoints
libc.src.math.canonicalizef16
libc.src.math.ceilf16
@ -726,14 +729,18 @@ if(LIBC_TYPES_HAS_FLOAT16)
# endif()
endif()
if(LIBC_TYPES_HAS_FLOAT128)
if(LIBC_TYPES_HAS_CFLOAT128)
list(APPEND TARGET_LIBM_ENTRYPOINTS
# complex.h C23 _Complex _Float128 entrypoints
libc.src.complex.crealf128
libc.src.complex.cimagf128
libc.src.complex.conjf128
libc.src.complex.cprojf128
)
endif()
if(LIBC_TYPES_HAS_FLOAT128)
list(APPEND TARGET_LIBM_ENTRYPOINTS
# math.h C23 _Float128 entrypoints
libc.src.math.canonicalizef128
libc.src.math.ceilf128

View File

@ -620,14 +620,17 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.ufromfpxl
)
if(LIBC_TYPES_HAS_FLOAT128)
if(LIBC_TYPES_HAS_CFLOAT128)
list(APPEND TARGET_LIBM_ENTRYPOINTS
# complex.h C23 _Complex _Float128 entrypoints
libc.src.complex.crealf128
libc.src.complex.cimagf128
libc.src.complex.conjf128
libc.src.complex.cprojf128
)
endif()
if(LIBC_TYPES_HAS_FLOAT128)
# math.h C23 _Float128 entrypoints
libc.src.math.canonicalizef128
libc.src.math.ceilf128

View File

@ -624,14 +624,18 @@ set(TARGET_LIBM_ENTRYPOINTS
libc.src.math.ufromfpxl
)
if(LIBC_TYPES_HAS_FLOAT16)
if(LIBC_TYPES_HAS_CFLOAT16)
list(APPEND TARGET_LIBM_ENTRYPOINTS
# complex.h C23 _Complex _Float16 entrypoints
libc.src.complex.crealf16
libc.src.complex.cimagf16
libc.src.complex.conjf16
libc.src.complex.cprojf16
)
endif()
if(LIBC_TYPES_HAS_FLOAT16)
list(APPEND TARGET_LIBM_ENTRYPOINTS
# math.h C23 _Float16 entrypoints
libc.src.math.canonicalizef16
libc.src.math.ceilf16
@ -736,14 +740,18 @@ if(LIBC_TYPES_HAS_FLOAT16)
endif()
endif()
if(LIBC_TYPES_HAS_FLOAT128)
if(LIBC_TYPES_HAS_CFLOAT128)
list(APPEND TARGET_LIBM_ENTRYPOINTS
# complex.h C23 _Complex _Float128 entrypoints
# libc.src.complex.crealf128
# libc.src.complex.cimagf128
# libc.src.complex.conjf128
# libc.src.complex.cprojf128
libc.src.complex.crealf128
libc.src.complex.cimagf128
libc.src.complex.conjf128
libc.src.complex.cprojf128
)
endif()
if(LIBC_TYPES_HAS_FLOAT128)
list(APPEND TARGET_LIBM_ENTRYPOINTS
# math.h C23 _Float128 entrypoints
libc.src.math.canonicalizef128
libc.src.math.ceilf128

View File

@ -6,15 +6,12 @@
//
//===----------------------------------------------------------------------===//
#include "src/__support/macros/properties/complex_types.h"
#include "src/__support/macros/properties/types.h"
#if defined(LIBC_TYPES_HAS_CFLOAT128)
#ifndef LLVM_LIBC_SRC_COMPLEX_CIMAGF128_H
#define LLVM_LIBC_SRC_COMPLEX_CIMAGF128_H
#include "src/__support/macros/config.h"
#include "src/__support/macros/properties/complex_types.h"
#include "src/__support/macros/properties/types.h"
namespace LIBC_NAMESPACE_DECL {
@ -23,5 +20,3 @@ float128 cimagf128(cfloat128 x);
} // namespace LIBC_NAMESPACE_DECL
#endif // LLVM_LIBC_SRC_COMPLEX_CIMAGF128_H
#endif // LIBC_TYPES_HAS_CFLOAT128

View File

@ -6,15 +6,12 @@
//
//===----------------------------------------------------------------------===//
#include "src/__support/macros/properties/complex_types.h"
#include "src/__support/macros/properties/types.h"
#if defined(LIBC_TYPES_HAS_CFLOAT16)
#ifndef LLVM_LIBC_SRC_COMPLEX_CIMAGF16_H
#define LLVM_LIBC_SRC_COMPLEX_CIMAGF16_H
#include "src/__support/macros/config.h"
#include "src/__support/macros/properties/complex_types.h"
#include "src/__support/macros/properties/types.h"
namespace LIBC_NAMESPACE_DECL {
@ -23,5 +20,3 @@ float16 cimagf16(cfloat16 x);
} // namespace LIBC_NAMESPACE_DECL
#endif // LLVM_LIBC_SRC_COMPLEX_CIMAGF16_H
#endif // LIBC_TYPES_HAS_CFLOAT16

View File

@ -6,14 +6,11 @@
//
//===----------------------------------------------------------------------===//
#include "src/__support/macros/properties/complex_types.h"
#if defined(LIBC_TYPES_HAS_CFLOAT128)
#ifndef LLVM_LIBC_SRC_COMPLEX_CONJF128_H
#define LLVM_LIBC_SRC_COMPLEX_CONJF128_H
#include "src/__support/macros/config.h"
#include "src/__support/macros/properties/complex_types.h"
namespace LIBC_NAMESPACE_DECL {
@ -22,5 +19,3 @@ cfloat128 conjf128(cfloat128 x);
} // namespace LIBC_NAMESPACE_DECL
#endif // LLVM_LIBC_SRC_COMPLEX_CONJF128_H
#endif // LIBC_TYPES_HAS_CFLOAT128

View File

@ -6,14 +6,11 @@
//
//===----------------------------------------------------------------------===//
#include "src/__support/macros/properties/complex_types.h"
#if defined(LIBC_TYPES_HAS_CFLOAT16)
#ifndef LLVM_LIBC_SRC_COMPLEX_CONJF16_H
#define LLVM_LIBC_SRC_COMPLEX_CONJF16_H
#include "src/__support/macros/config.h"
#include "src/__support/macros/properties/complex_types.h"
namespace LIBC_NAMESPACE_DECL {
@ -22,5 +19,3 @@ cfloat16 conjf16(cfloat16 x);
} // namespace LIBC_NAMESPACE_DECL
#endif // LLVM_LIBC_SRC_COMPLEX_CONJF16_H
#endif // LIBC_TYPES_HAS_CFLOAT16

View File

@ -6,14 +6,11 @@
//
//===----------------------------------------------------------------------===//
#include "src/__support/macros/properties/complex_types.h"
#if defined(LIBC_TYPES_HAS_CFLOAT128)
#ifndef LLVM_LIBC_SRC_COMPLEX_CPROJF128_H
#define LLVM_LIBC_SRC_COMPLEX_CPROJF128_H
#include "src/__support/macros/config.h"
#include "src/__support/macros/properties/complex_types.h"
namespace LIBC_NAMESPACE_DECL {
@ -22,5 +19,3 @@ cfloat128 cprojf128(cfloat128 x);
} // namespace LIBC_NAMESPACE_DECL
#endif // LLVM_LIBC_SRC_COMPLEX_CPROJF128_H
#endif // LIBC_TYPES_HAS_CFLOAT128

View File

@ -6,14 +6,11 @@
//
//===----------------------------------------------------------------------===//
#include "src/__support/macros/properties/complex_types.h"
#if defined(LIBC_TYPES_HAS_CFLOAT16)
#ifndef LLVM_LIBC_SRC_COMPLEX_CPROJF16_H
#define LLVM_LIBC_SRC_COMPLEX_CPROJF16_H
#include "src/__support/macros/config.h"
#include "src/__support/macros/properties/complex_types.h"
namespace LIBC_NAMESPACE_DECL {
@ -22,5 +19,3 @@ cfloat16 cprojf16(cfloat16 x);
} // namespace LIBC_NAMESPACE_DECL
#endif // LLVM_LIBC_SRC_COMPLEX_CPROJF16_H
#endif // LIBC_TYPES_HAS_CFLOAT16

View File

@ -6,15 +6,12 @@
//
//===----------------------------------------------------------------------===//
#include "src/__support/macros/properties/complex_types.h"
#include "src/__support/macros/properties/types.h"
#if defined(LIBC_TYPES_HAS_CFLOAT128)
#ifndef LLVM_LIBC_SRC_COMPLEX_CREALF128_H
#define LLVM_LIBC_SRC_COMPLEX_CREALF128_H
#include "src/__support/macros/config.h"
#include "src/__support/macros/properties/complex_types.h"
#include "src/__support/macros/properties/types.h"
namespace LIBC_NAMESPACE_DECL {
@ -23,5 +20,3 @@ float128 crealf128(cfloat128 x);
} // namespace LIBC_NAMESPACE_DECL
#endif // LLVM_LIBC_SRC_COMPLEX_CREALF128_H
#endif // LIBC_TYPES_HAS_CFLOAT128

View File

@ -6,15 +6,12 @@
//
//===----------------------------------------------------------------------===//
#include "src/__support/macros/properties/complex_types.h"
#include "src/__support/macros/properties/types.h"
#if defined(LIBC_TYPES_HAS_CFLOAT16)
#ifndef LLVM_LIBC_SRC_COMPLEX_CREALF16_H
#define LLVM_LIBC_SRC_COMPLEX_CREALF16_H
#include "src/__support/macros/config.h"
#include "src/__support/macros/properties/complex_types.h"
#include "src/__support/macros/properties/types.h"
namespace LIBC_NAMESPACE_DECL {
@ -23,5 +20,3 @@ float16 crealf16(cfloat16 x);
} // namespace LIBC_NAMESPACE_DECL
#endif // LLVM_LIBC_SRC_COMPLEX_CREALF16_H
#endif // LIBC_TYPES_HAS_CFLOAT16

View File

@ -7,8 +7,6 @@
//===----------------------------------------------------------------------===//
#include "src/complex/cimagf128.h"
#if defined(LIBC_TYPES_HAS_CFLOAT128)
#include "src/__support/CPP/bit.h"
#include "src/__support/common.h"
#include "src/__support/complex_type.h"
@ -21,5 +19,3 @@ LLVM_LIBC_FUNCTION(float128, cimagf128, (cfloat128 x)) {
}
} // namespace LIBC_NAMESPACE_DECL
#endif // LIBC_TYPES_HAS_CFLOAT128

View File

@ -7,8 +7,6 @@
//===----------------------------------------------------------------------===//
#include "src/complex/cimagf16.h"
#if defined(LIBC_TYPES_HAS_CFLOAT16)
#include "src/__support/CPP/bit.h"
#include "src/__support/common.h"
#include "src/__support/complex_type.h"
@ -21,5 +19,3 @@ LLVM_LIBC_FUNCTION(float16, cimagf16, (cfloat16 x)) {
}
} // namespace LIBC_NAMESPACE_DECL
#endif // LIBC_TYPES_HAS_CFLOAT16

View File

@ -7,8 +7,6 @@
//===----------------------------------------------------------------------===//
#include "src/complex/conjf128.h"
#if defined(LIBC_TYPES_HAS_CFLOAT128)
#include "src/__support/common.h"
#include "src/__support/complex_type.h"
@ -19,5 +17,3 @@ LLVM_LIBC_FUNCTION(cfloat128, conjf128, (cfloat128 x)) {
}
} // namespace LIBC_NAMESPACE_DECL
#endif // LIBC_TYPES_HAS_CFLOAT128

View File

@ -7,8 +7,6 @@
//===----------------------------------------------------------------------===//
#include "src/complex/conjf16.h"
#if defined(LIBC_TYPES_HAS_CFLOAT16)
#include "src/__support/common.h"
#include "src/__support/complex_type.h"
@ -19,5 +17,3 @@ LLVM_LIBC_FUNCTION(cfloat16, conjf16, (cfloat16 x)) {
}
} // namespace LIBC_NAMESPACE_DECL
#endif // LIBC_TYPES_HAS_CFLOAT16

View File

@ -7,8 +7,6 @@
//===----------------------------------------------------------------------===//
#include "src/complex/cprojf128.h"
#if defined(LIBC_TYPES_HAS_CFLOAT128)
#include "src/__support/common.h"
#include "src/__support/complex_type.h"
@ -19,5 +17,3 @@ LLVM_LIBC_FUNCTION(cfloat128, cprojf128, (cfloat128 x)) {
}
} // namespace LIBC_NAMESPACE_DECL
#endif // LIBC_TYPES_HAS_CFLOAT128

View File

@ -7,8 +7,6 @@
//===----------------------------------------------------------------------===//
#include "src/complex/cprojf16.h"
#if defined(LIBC_TYPES_HAS_CFLOAT16)
#include "src/__support/common.h"
#include "src/__support/complex_type.h"
@ -19,5 +17,3 @@ LLVM_LIBC_FUNCTION(cfloat16, cprojf16, (cfloat16 x)) {
}
} // namespace LIBC_NAMESPACE_DECL
#endif // LIBC_TYPES_HAS_CFLOAT16

View File

@ -7,8 +7,6 @@
//===----------------------------------------------------------------------===//
#include "src/complex/crealf128.h"
#if defined(LIBC_TYPES_HAS_CFLOAT128)
#include "src/__support/CPP/bit.h"
#include "src/__support/common.h"
#include "src/__support/complex_type.h"
@ -21,5 +19,3 @@ LLVM_LIBC_FUNCTION(float128, crealf128, (cfloat128 x)) {
}
} // namespace LIBC_NAMESPACE_DECL
#endif // LIBC_TYPES_HAS_CFLOAT128

View File

@ -7,8 +7,6 @@
//===----------------------------------------------------------------------===//
#include "src/complex/crealf16.h"
#if defined(LIBC_TYPES_HAS_CFLOAT16)
#include "src/__support/CPP/bit.h"
#include "src/__support/common.h"
#include "src/__support/complex_type.h"
@ -21,5 +19,3 @@ LLVM_LIBC_FUNCTION(float16, crealf16, (cfloat16 x)) {
}
} // namespace LIBC_NAMESPACE_DECL
#endif // LIBC_TYPES_HAS_CFLOAT16

View File

@ -10,8 +10,4 @@
#include "src/complex/cimagf128.h"
#if defined(LIBC_TYPES_HAS_CFLOAT128)
LIST_CIMAG_TESTS(cfloat128, float128, LIBC_NAMESPACE::cimagf128)
#endif // LIBC_TYPES_HAS_CFLOAT128

View File

@ -10,8 +10,4 @@
#include "src/complex/cimagf16.h"
#if defined(LIBC_TYPES_HAS_CFLOAT16)
LIST_CIMAG_TESTS(cfloat16, float16, LIBC_NAMESPACE::cimagf16)
#endif // LIBC_TYPES_HAS_CFLOAT16

View File

@ -10,8 +10,4 @@
#include "src/complex/conjf128.h"
#if defined(LIBC_TYPES_HAS_CFLOAT128)
LIST_CONJ_TESTS(cfloat128, float128, LIBC_NAMESPACE::conjf128)
#endif // LIBC_TYPES_HAS_CFLOAT128

View File

@ -10,8 +10,4 @@
#include "src/complex/conjf16.h"
#if defined(LIBC_TYPES_HAS_CFLOAT16)
LIST_CONJ_TESTS(cfloat16, float16, LIBC_NAMESPACE::conjf16)
#endif // LIBC_TYPES_HAS_CFLOAT16

View File

@ -10,8 +10,4 @@
#include "src/complex/cprojf128.h"
#if defined(LIBC_TYPES_HAS_CFLOAT128)
LIST_CPROJ_TESTS(cfloat128, float128, LIBC_NAMESPACE::cprojf128)
#endif // LIBC_TYPES_HAS_CFLOAT128

View File

@ -10,8 +10,4 @@
#include "src/complex/cprojf16.h"
#if defined(LIBC_TYPES_HAS_CFLOAT16)
LIST_CPROJ_TESTS(cfloat16, float16, LIBC_NAMESPACE::cprojf16)
#endif // LIBC_TYPES_HAS_CFLOAT16

View File

@ -10,8 +10,4 @@
#include "src/complex/crealf128.h"
#if defined(LIBC_TYPES_HAS_CFLOAT128)
LIST_CREAL_TESTS(cfloat128, float128, LIBC_NAMESPACE::crealf128)
#endif // LIBC_TYPES_HAS_CFLOAT128

View File

@ -10,8 +10,4 @@
#include "src/complex/crealf16.h"
#if defined(LIBC_TYPES_HAS_CFLOAT16)
LIST_CREAL_TESTS(cfloat16, float16, LIBC_NAMESPACE::crealf16)
#endif // LIBC_TYPES_HAS_CFLOAT16