diff --git a/libc/shared/math.h b/libc/shared/math.h index ba6b1c2a7e28e..b2f1a03e0940d 100644 --- a/libc/shared/math.h +++ b/libc/shared/math.h @@ -16,6 +16,7 @@ #include "math/frexpf.h" #include "math/frexpf128.h" #include "math/frexpf16.h" +#include "math/ldexpf.h" #include "math/ldexpf128.h" #include "math/ldexpf16.h" diff --git a/libc/shared/math/ldexpf.h b/libc/shared/math/ldexpf.h new file mode 100644 index 0000000000000..497933c47321f --- /dev/null +++ b/libc/shared/math/ldexpf.h @@ -0,0 +1,23 @@ +//===-- Shared ldexpf 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_LDEXPF_H +#define LLVM_LIBC_SHARED_MATH_LDEXPF_H + +#include "shared/libc_common.h" +#include "src/__support/math/ldexpf.h" + +namespace LIBC_NAMESPACE_DECL { +namespace shared { + +using math::ldexpf; + +} // namespace shared +} // namespace LIBC_NAMESPACE_DECL + +#endif // LLVM_LIBC_SHARED_MATH_LDEXPF_H diff --git a/libc/src/__support/math/CMakeLists.txt b/libc/src/__support/math/CMakeLists.txt index 2215695bd9e5f..900c0ab04d3a3 100644 --- a/libc/src/__support/math/CMakeLists.txt +++ b/libc/src/__support/math/CMakeLists.txt @@ -102,3 +102,11 @@ add_header_library( libc.src.__support.FPUtil.manipulation_functions libc.include.llvm-libc-macros.float16_macros ) + +add_header_library( + ldexpf + HDRS + ldexpf.h + DEPENDS + libc.src.__support.FPUtil.manipulation_functions +) diff --git a/libc/src/__support/math/ldexpf.h b/libc/src/__support/math/ldexpf.h new file mode 100644 index 0000000000000..3a5ec1d471337 --- /dev/null +++ b/libc/src/__support/math/ldexpf.h @@ -0,0 +1,28 @@ +//===-- Implementation header for ldexpf ------------------------*- 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_LDEXPF_H +#define LLVM_LIBC_SRC___SUPPORT_MATH_LDEXPF_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 ldexpf(float x, int exp) { + return fputil::ldexp(x, exp); +} + +} // namespace math + +} // namespace LIBC_NAMESPACE_DECL + +#endif // LLVM_LIBC_SRC___SUPPORT_MATH_LDEXPF_H diff --git a/libc/src/math/generic/CMakeLists.txt b/libc/src/math/generic/CMakeLists.txt index 8be57cd97c3f3..a9237741788ae 100644 --- a/libc/src/math/generic/CMakeLists.txt +++ b/libc/src/math/generic/CMakeLists.txt @@ -1913,7 +1913,7 @@ add_entrypoint_object( HDRS ../ldexpf.h DEPENDS - libc.src.__support.FPUtil.manipulation_functions + libc.src.__support.math.ldexpf ) add_entrypoint_object( diff --git a/libc/src/math/generic/ldexpf.cpp b/libc/src/math/generic/ldexpf.cpp index 63c5d219f7a79..c5f30bb725e6b 100644 --- a/libc/src/math/generic/ldexpf.cpp +++ b/libc/src/math/generic/ldexpf.cpp @@ -7,14 +7,12 @@ //===----------------------------------------------------------------------===// #include "src/math/ldexpf.h" -#include "src/__support/FPUtil/ManipulationFunctions.h" -#include "src/__support/common.h" -#include "src/__support/macros/config.h" +#include "src/__support/math/ldexpf.h" namespace LIBC_NAMESPACE_DECL { LLVM_LIBC_FUNCTION(float, ldexpf, (float x, int exp)) { - return fputil::ldexp(x, exp); + return math::ldexpf(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 5476a178bfc5a..cd608a1352a7a 100644 --- a/utils/bazel/llvm-project-overlay/libc/BUILD.bazel +++ b/utils/bazel/llvm-project-overlay/libc/BUILD.bazel @@ -2197,6 +2197,14 @@ libc_support_library( ], ) +libc_support_library( + name = "__support_math_ldexpf", + hdrs = ["src/__support/math/ldexpf.h"], + deps = [ + ":__support_fputil_manipulation_functions", + ], +) + ############################### complex targets ################################ libc_function( @@ -3346,7 +3354,12 @@ libc_math_function(name = "ilogbf16") libc_math_function(name = "ldexp") -libc_math_function(name = "ldexpf") +libc_math_function( + name = "ldexpf", + additional_deps = [ + ":__support_math_ldexpf", + ] +) libc_math_function(name = "ldexpl")