Repository navigation
[libc][math] Refactor floor family to header-only #182194
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from 4 commits
Commits
Show all changes
9 commits
Select commit
Hold shift + click to select a range
e9bb55f
[libc][math] Refactor floor family to header-only
hulxv b1c26a0
Merge branch 'main' into libc/math/refactor/header-only/floor
hulxv fb2df62
Merge branch 'main' into libc/math/refactor/header-only/floor
hulxv 8fe259b
[libc][math] Refactor floor family to header-only
hulxv 1dc659b
Merge branch 'main' into libc/math/refactor/header-only/floor
hulxv b4a5193
correct build deps
hulxv 7b094d4
Merge branch 'main' into libc/math/refactor/header-only/floor
hulxv e9d26a1
fix: format
hulxv 83437fa
Merge branch 'main' into libc/math/refactor/header-only/floor
hulxv File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,22 @@ | ||
| //===-- Shared floor 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_FLOOR_H | ||
| #define LLVM_LIBC_SHARED_MATH_FLOOR_H | ||
|
|
||
| #include "src/__support/math/floor.h" | ||
|
|
||
| namespace LIBC_NAMESPACE_DECL { | ||
| namespace shared { | ||
|
|
||
| using math::floor; | ||
|
|
||
| } // namespace shared | ||
| } // namespace LIBC_NAMESPACE_DECL | ||
|
|
||
| #endif // LLVM_LIBC_SHARED_MATH_FLOOR_H |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,22 @@ | ||
| //===-- Shared floorbf16 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_FLOORBF16_H | ||
| #define LLVM_LIBC_SHARED_MATH_FLOORBF16_H | ||
|
|
||
| #include "src/__support/math/floorbf16.h" | ||
|
|
||
| namespace LIBC_NAMESPACE_DECL { | ||
| namespace shared { | ||
|
|
||
| using math::floorbf16; | ||
|
|
||
| } // namespace shared | ||
| } // namespace LIBC_NAMESPACE_DECL | ||
|
|
||
| #endif // LLVM_LIBC_SHARED_MATH_FLOORBF16_H |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,22 @@ | ||
| //===-- Shared floorf 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_FLOORF_H | ||
| #define LLVM_LIBC_SHARED_MATH_FLOORF_H | ||
|
|
||
| #include "src/__support/math/floorf.h" | ||
|
|
||
| namespace LIBC_NAMESPACE_DECL { | ||
| namespace shared { | ||
|
|
||
| using math::floorf; | ||
|
|
||
| } // namespace shared | ||
| } // namespace LIBC_NAMESPACE_DECL | ||
|
|
||
| #endif // LLVM_LIBC_SHARED_MATH_FLOORF_H |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,28 @@ | ||
| //===-- Shared floorf128 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_FLOORF128_H | ||
| #define LLVM_LIBC_SHARED_MATH_FLOORF128_H | ||
|
|
||
| #include "include/llvm-libc-types/float128.h" | ||
|
|
||
| #ifdef LIBC_TYPES_HAS_FLOAT128 | ||
|
|
||
| #include "src/__support/math/floorf128.h" | ||
|
|
||
| namespace LIBC_NAMESPACE_DECL { | ||
| namespace shared { | ||
|
|
||
| using math::floorf128; | ||
|
|
||
| } // namespace shared | ||
| } // namespace LIBC_NAMESPACE_DECL | ||
|
|
||
| #endif // LIBC_TYPES_HAS_FLOAT128 | ||
|
|
||
| #endif // LLVM_LIBC_SHARED_MATH_FLOORF128_H |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,28 @@ | ||
| //===-- Shared floorf16 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_FLOORF16_H | ||
| #define LLVM_LIBC_SHARED_MATH_FLOORF16_H | ||
|
|
||
| #include "include/llvm-libc-macros/float16-macros.h" | ||
|
|
||
| #ifdef LIBC_TYPES_HAS_FLOAT16 | ||
|
|
||
| #include "src/__support/math/floorf16.h" | ||
|
|
||
| namespace LIBC_NAMESPACE_DECL { | ||
| namespace shared { | ||
|
|
||
| using math::floorf16; | ||
|
|
||
| } // namespace shared | ||
| } // namespace LIBC_NAMESPACE_DECL | ||
|
|
||
| #endif // LIBC_TYPES_HAS_FLOAT16 | ||
|
|
||
| #endif // LLVM_LIBC_SHARED_MATH_FLOORF16_H |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,22 @@ | ||
| //===-- Shared floorl 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_FLOORL_H | ||
| #define LLVM_LIBC_SHARED_MATH_FLOORL_H | ||
|
|
||
| #include "src/__support/math/floorl.h" | ||
|
|
||
| namespace LIBC_NAMESPACE_DECL { | ||
| namespace shared { | ||
|
|
||
| using math::floorl; | ||
|
|
||
| } // namespace shared | ||
| } // namespace LIBC_NAMESPACE_DECL | ||
|
|
||
| #endif // LLVM_LIBC_SHARED_MATH_FLOORL_H |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,29 @@ | ||
| //===-- Implementation header for floor -------------------------*- 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_FLOOR_H | ||
| #define LLVM_LIBC_SRC___SUPPORT_MATH_FLOOR_H | ||
|
|
||
| #include "src/__support/FPUtil/NearestIntegerOperations.h" | ||
| #include "src/__support/macros/config.h" | ||
|
|
||
| namespace LIBC_NAMESPACE_DECL { | ||
| namespace math { | ||
|
|
||
| LIBC_INLINE double floor(double x) { | ||
| #ifdef __LIBC_USE_BUILTIN_CEIL_FLOOR_RINT_TRUNC | ||
| return __builtin_floor(x); | ||
| #else | ||
| return fputil::floor(x); | ||
| #endif | ||
| } | ||
|
|
||
| } // namespace math | ||
| } // namespace LIBC_NAMESPACE_DECL | ||
|
|
||
| #endif // LLVM_LIBC_SRC___SUPPORT_MATH_FLOOR_H |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,24 @@ | ||
| //===-- Implementation header for floorbf16 ---------------------*- 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_FLOORBF16_H | ||
| #define LLVM_LIBC_SRC___SUPPORT_MATH_FLOORBF16_H | ||
|
|
||
| #include "src/__support/FPUtil/NearestIntegerOperations.h" | ||
| #include "src/__support/FPUtil/bfloat16.h" | ||
| #include "src/__support/macros/config.h" | ||
|
|
||
| namespace LIBC_NAMESPACE_DECL { | ||
| namespace math { | ||
|
|
||
| LIBC_INLINE bfloat16 floorbf16(bfloat16 x) { return fputil::floor(x); } | ||
|
|
||
| } // namespace math | ||
| } // namespace LIBC_NAMESPACE_DECL | ||
|
|
||
| #endif // LLVM_LIBC_SRC___SUPPORT_MATH_FLOORBF16_H |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,29 @@ | ||
| //===-- Implementation header for floorf ------------------------*- 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_FLOORF_H | ||
| #define LLVM_LIBC_SRC___SUPPORT_MATH_FLOORF_H | ||
|
|
||
| #include "src/__support/FPUtil/NearestIntegerOperations.h" | ||
| #include "src/__support/macros/config.h" | ||
|
|
||
| namespace LIBC_NAMESPACE_DECL { | ||
| namespace math { | ||
|
|
||
| LIBC_INLINE float floorf(float x) { | ||
| #ifdef __LIBC_USE_BUILTIN_CEIL_FLOOR_RINT_TRUNC | ||
| return __builtin_floorf(x); | ||
| #else | ||
| return fputil::floor(x); | ||
| #endif | ||
| } | ||
|
|
||
| } // namespace math | ||
| } // namespace LIBC_NAMESPACE_DECL | ||
|
|
||
| #endif // LLVM_LIBC_SRC___SUPPORT_MATH_FLOORF_H |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,29 @@ | ||
| //===-- Implementation header for floorf128 ---------------------*- 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_FLOORF128_H | ||
| #define LLVM_LIBC_SRC___SUPPORT_MATH_FLOORF128_H | ||
|
|
||
| #include "include/llvm-libc-types/float128.h" | ||
|
|
||
| #ifdef LIBC_TYPES_HAS_FLOAT128 | ||
|
|
||
| #include "src/__support/FPUtil/NearestIntegerOperations.h" | ||
| #include "src/__support/macros/config.h" | ||
|
|
||
| namespace LIBC_NAMESPACE_DECL { | ||
| namespace math { | ||
|
|
||
| LIBC_INLINE float128 floorf128(float128 x) { return fputil::floor(x); } | ||
|
|
||
| } // namespace math | ||
| } // namespace LIBC_NAMESPACE_DECL | ||
|
|
||
| #endif // LIBC_TYPES_HAS_FLOAT128 | ||
|
|
||
| #endif // LLVM_LIBC_SRC___SUPPORT_MATH_FLOORF128_H |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,38 @@ | ||
| //===-- Implementation header for floorf16 ----------------------*- 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_FLOORF16_H | ||
| #define LLVM_LIBC_SRC___SUPPORT_MATH_FLOORF16_H | ||
|
|
||
| #include "include/llvm-libc-macros/float16-macros.h" | ||
|
|
||
| #ifdef LIBC_TYPES_HAS_FLOAT16 | ||
|
|
||
| #include "src/__support/FPUtil/NearestIntegerOperations.h" | ||
| #include "src/__support/FPUtil/cast.h" | ||
| #include "src/__support/macros/config.h" | ||
| #include "src/__support/macros/properties/cpu_features.h" | ||
|
|
||
| namespace LIBC_NAMESPACE_DECL { | ||
| namespace math { | ||
|
|
||
| LIBC_INLINE float16 floorf16(float16 x) { | ||
| #if defined(__LIBC_USE_BUILTIN_CEIL_FLOOR_RINT_TRUNC) && \ | ||
| defined(LIBC_TARGET_CPU_HAS_FAST_FLOAT16_OPS) | ||
| return fputil::cast<float16>(__builtin_floorf(x)); | ||
| #else | ||
| return fputil::floor(x); | ||
| #endif | ||
| } | ||
|
|
||
| } // namespace math | ||
| } // namespace LIBC_NAMESPACE_DECL | ||
|
|
||
| #endif // LIBC_TYPES_HAS_FLOAT16 | ||
|
|
||
| #endif // LLVM_LIBC_SRC___SUPPORT_MATH_FLOORF16_H |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,23 @@ | ||
| //===-- Implementation header for floorl ------------------------*- 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_FLOORL_H | ||
| #define LLVM_LIBC_SRC___SUPPORT_MATH_FLOORL_H | ||
|
|
||
| #include "src/__support/FPUtil/NearestIntegerOperations.h" | ||
| #include "src/__support/macros/config.h" | ||
|
|
||
| namespace LIBC_NAMESPACE_DECL { | ||
| namespace math { | ||
|
|
||
| LIBC_INLINE long double floorl(long double x) { return fputil::floor(x); } | ||
|
|
||
| } // namespace math | ||
| } // namespace LIBC_NAMESPACE_DECL | ||
|
|
||
| #endif // LLVM_LIBC_SRC___SUPPORT_MATH_FLOORL_H |
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.