diff --git a/libc/shared/math.h b/libc/shared/math.h index 13c0f9abcdbd3..e2950e075a81d 100644 --- a/libc/shared/math.h +++ b/libc/shared/math.h @@ -13,6 +13,7 @@ #include "math/expf.h" #include "math/expf16.h" +#include "math/frexpf.h" #include "math/frexpf128.h" #include "math/frexpf16.h" diff --git a/libc/shared/math/frexpf.h b/libc/shared/math/frexpf.h new file mode 100644 index 0000000000000..35f23a70eb253 --- /dev/null +++ b/libc/shared/math/frexpf.h @@ -0,0 +1,24 @@ +//===-- Shared frexpf function ------------------------------------*- C++ +//-*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_LIBC_SHARED_MATH_FREXPF_H +#define LLVM_LIBC_SHARED_MATH_FREXPF_H + +#include "shared/libc_common.h" +#include "src/__support/math/frexpf.h" + +namespace LIBC_NAMESPACE_DECL { +namespace shared { + +using math::frexpf; + +} // namespace shared +} // namespace LIBC_NAMESPACE_DECL + +#endif // LLVM_LIBC_SHARED_MATH_FREXPF_H diff --git a/libc/src/__support/math/CMakeLists.txt b/libc/src/__support/math/CMakeLists.txt index e745c07529ac5..0baf12a26a9d5 100644 --- a/libc/src/__support/math/CMakeLists.txt +++ b/libc/src/__support/math/CMakeLists.txt @@ -74,3 +74,11 @@ add_header_library( libc.src.__support.macros.properties.types libc.src.__support.FPUtil.manipulation_functions ) + +add_header_library( + frexpf + HDRS + frexpf.h + DEPENDS + libc.src.__support.FPUtil.manipulation_functions +) diff --git a/libc/src/__support/math/frexpf.h b/libc/src/__support/math/frexpf.h new file mode 100644 index 0000000000000..4d2f4948f2af6 --- /dev/null +++ b/libc/src/__support/math/frexpf.h @@ -0,0 +1,28 @@ +//===-- Implementation header for frexpf ------------------------*- C++ -*-===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_LIBC_SRC___SUPPORT_MATH_FREXPF_H +#define LLVM_LIBC_SRC___SUPPORT_MATH_FREXPF_H + +#include "src/__support/FPUtil/ManipulationFunctions.h" +#include "src/__support/common.h" +#include "src/__support/macros/config.h" + +namespace LIBC_NAMESPACE_DECL { + +namespace math { + +static constexpr float frexpf(float x, int *exp) { + return fputil::frexp(x, *exp); +} + +} // namespace math + +} // namespace LIBC_NAMESPACE_DECL + +#endif // LLVM_LIBC_SRC___SUPPORT_MATH_FREXPF_H diff --git a/libc/src/math/generic/CMakeLists.txt b/libc/src/math/generic/CMakeLists.txt index 6b540b2aafc90..60b8f83f6101d 100644 --- a/libc/src/math/generic/CMakeLists.txt +++ b/libc/src/math/generic/CMakeLists.txt @@ -1759,7 +1759,7 @@ add_entrypoint_object( HDRS ../frexpf.h DEPENDS - libc.src.__support.FPUtil.manipulation_functions + libc.src.__support.math.frexpf ) add_entrypoint_object( diff --git a/libc/src/math/generic/frexpf.cpp b/libc/src/math/generic/frexpf.cpp index 09227badc3417..783880d44ce61 100644 --- a/libc/src/math/generic/frexpf.cpp +++ b/libc/src/math/generic/frexpf.cpp @@ -7,14 +7,13 @@ //===----------------------------------------------------------------------===// #include "src/math/frexpf.h" -#include "src/__support/FPUtil/ManipulationFunctions.h" -#include "src/__support/common.h" -#include "src/__support/macros/config.h" + +#include "src/__support/math/frexpf.h" namespace LIBC_NAMESPACE_DECL { LLVM_LIBC_FUNCTION(float, frexpf, (float x, int *exp)) { - return fputil::frexp(x, *exp); + return math::frexpf(x, exp); } } // namespace LIBC_NAMESPACE_DECL diff --git a/utils/bazel/llvm-project-overlay/libc/BUILD.bazel b/utils/bazel/llvm-project-overlay/libc/BUILD.bazel index 3b1d108109ed3..11ea06897f822 100644 --- a/utils/bazel/llvm-project-overlay/libc/BUILD.bazel +++ b/utils/bazel/llvm-project-overlay/libc/BUILD.bazel @@ -2169,6 +2169,14 @@ libc_support_library( ], ) +libc_support_library( + name = "__support_math_frexpf", + hdrs = ["src/__support/math/frexpf.h"], + deps = [ + ":__support_fputil_manipulation_functions", + ], +) + ############################### complex targets ################################ libc_function( @@ -3216,7 +3224,12 @@ libc_math_function(name = "fmulf128") libc_math_function(name = "frexp") -libc_math_function(name = "frexpf") +libc_math_function( + name = "frexpf", + additional_deps = [ + ":__support_math_frexpf", + ], +) libc_math_function(name = "frexpl")