Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions libc/shared/math.h
Original file line number Diff line number Diff line change
Expand Up @@ -13,5 +13,6 @@

#include "math/expf.h"
#include "math/expf16.h"
#include "math/frexpf128.h"

#endif // LLVM_LIBC_SHARED_MATH_H
29 changes: 29 additions & 0 deletions libc/shared/math/frexpf128.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
//===-- Shared frexpf128 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_FREXPF128_H
#define LLVM_LIBC_SHARED_MATH_FREXPF128_H

#include "include/llvm-libc-types/float128.h"

#ifdef LIBC_TYPES_HAS_FLOAT128

#include "shared/libc_common.h"
#include "src/__support/macros/properties/complex_types.h"

namespace LIBC_NAMESPACE_DECL {
namespace shared {

using math::frexpf128;

} // namespace shared
} // namespace LIBC_NAMESPACE_DECL

#endif // LIBC_TYPES_HAS_FLOAT128

#endif // LLVM_LIBC_SHARED_MATH_FREXPF128_H
9 changes: 9 additions & 0 deletions libc/src/__support/math/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -55,3 +55,12 @@ add_header_library(
libc.src.__support.macros.optimization
libc.include.llvm-libc-macros.float16_macros
)

add_header_library(
frexpf128
HDRS
frexpf128.h
DEPENDS
libc.src.__support.macros.properties.types
libc.src.__support.FPUtil.manipulation_functions
)
34 changes: 34 additions & 0 deletions libc/src/__support/math/frexpf128.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
//===-- Implementation header for expf --------------------------*- 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_FREXPF128_H
#define LLVM_LIBC_SRC___SUPPORT_MATH_FREXPF128_H

#include "include/llvm-libc-types/float128.h"

#ifdef LIBC_TYPES_HAS_FLOAT128

#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 float128 frexpf128(float128 x, int *exp) {
return fputil::frexp(x, *exp);
}

} // namespace math

} // namespace LIBC_NAMESPACE_DECL

#endif // LIBC_TYPES_HAS_FLOAT128

#endif // LLVM_LIBC_SRC___SUPPORT_MATH_FREXPF128_H
3 changes: 1 addition & 2 deletions libc/src/math/generic/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -1775,8 +1775,7 @@ add_entrypoint_object(
HDRS
../frexpf128.h
DEPENDS
libc.src.__support.macros.properties.types
libc.src.__support.FPUtil.manipulation_functions
libc.src.__support.math.frexpf128
)

add_entrypoint_object(
Expand Down
7 changes: 3 additions & 4 deletions libc/src/math/generic/frexpf128.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,13 @@
//===----------------------------------------------------------------------===//

#include "src/math/frexpf128.h"
#include "src/__support/FPUtil/ManipulationFunctions.h"
#include "src/__support/common.h"
#include "src/__support/macros/config.h"

#include "src/__support/math/frexpf128.h"

namespace LIBC_NAMESPACE_DECL {

LLVM_LIBC_FUNCTION(float128, frexpf128, (float128 x, int *exp)) {
return fputil::frexp(x, *exp);
return math::frexpf128(x, exp);
}

} // namespace LIBC_NAMESPACE_DECL
16 changes: 15 additions & 1 deletion utils/bazel/llvm-project-overlay/libc/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -2149,6 +2149,15 @@ libc_support_library(
],
)

libc_support_library(
name = "__support_math_frexpf128",
hdrs = ["src/__support/math/frexpf128.h"],
deps = [
":__support_macros_properties_types",
":__support_fputil_manipulation_functions",
],
)

############################### complex targets ################################

libc_function(
Expand Down Expand Up @@ -3200,7 +3209,12 @@ libc_math_function(name = "frexpf")

libc_math_function(name = "frexpl")

libc_math_function(name = "frexpf128")
libc_math_function(
name = "frexpf128",
additional_deps = [
":__support_math_frexpf128",
]
)

libc_math_function(name = "frexpf16")

Expand Down
Loading