Skip to content
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

[libc][math] implement signbit #96322

Closed
nickdesaulniers opened this issue Jun 21, 2024 · 7 comments · Fixed by #97791
Closed

[libc][math] implement signbit #96322

nickdesaulniers opened this issue Jun 21, 2024 · 7 comments · Fixed by #97791
Labels
good first issue https://github.com/llvm/llvm-project/contribute libc

Comments

@nickdesaulniers
Copy link
Member

https://android-review.googlesource.com/c/platform/bionic/+/3141224/1/libc/include/math.h demonstrates that __builtin_signbit can be used to implement this macro (or a few fallbacks in case this builtin isn't available). We should use godbolt.org to figure out what compilers and compiler versions support this macro.

I would put these in libc/include/llvm-libc-macros/math-macros.h (there's a comment at the bottom to start a new header for these).

It seems that we don't have tests for isfinite, isinf, or isnan macros from our math.h, which is problematic. We should start a new "include" test under libc/test/include (similar to stdbit_test.cpp).

cc @lntue

@nickdesaulniers nickdesaulniers added good first issue https://github.com/llvm/llvm-project/contribute libc labels Jun 21, 2024
@llvmbot
Copy link
Collaborator

llvmbot commented Jun 21, 2024

Hi!

This issue may be a good introductory issue for people new to working on LLVM. If you would like to work on this issue, your first steps are:

  1. Check that no other contributor has already been assigned to this issue. If you believe that no one is actually working on it despite an assignment, ping the person. After one week without a response, the assignee may be changed.
  2. In the comments of this issue, request for it to be assigned to you, or just create a pull request after following the steps below. Mention this issue in the description of the pull request.
  3. Fix the issue locally.
  4. Run the test suite locally. Remember that the subdirectories under test/ create fine-grained testing targets, so you can e.g. use make check-clang-ast to only run Clang's AST tests.
  5. Create a Git commit.
  6. Run git clang-format HEAD~1 to format your changes.
  7. Open a pull request to the upstream repository on GitHub. Detailed instructions can be found in GitHub's documentation. Mention this issue in the description of the pull request.

If you have any further questions about this issue, don't hesitate to ask via a comment in the thread below.

@llvmbot
Copy link
Collaborator

llvmbot commented Jun 21, 2024

@llvm/issue-subscribers-good-first-issue

Author: Nick Desaulniers (paternity leave) (nickdesaulniers)

https://android-review.googlesource.com/c/platform/bionic/+/3141224/1/libc/include/math.h demonstrates that `__builtin_signbit` can be used to implement this macro (or a few fallbacks in case this builtin isn't available). We should use godbolt.org to figure out what compilers and compiler versions support this macro.

I would put these in libc/include/llvm-libc-macros/math-macros.h (there's a comment at the bottom to start a new header for these).

It seems that we don't have tests for isfinite, isinf, or isnan macros from our math.h, which is problematic. We should start a new "include" test under libc/test/include (similar to stdbit_test.cpp).

cc @lntue

@llvmbot
Copy link
Collaborator

llvmbot commented Jun 21, 2024

@llvm/issue-subscribers-libc

Author: Nick Desaulniers (paternity leave) (nickdesaulniers)

https://android-review.googlesource.com/c/platform/bionic/+/3141224/1/libc/include/math.h demonstrates that `__builtin_signbit` can be used to implement this macro (or a few fallbacks in case this builtin isn't available). We should use godbolt.org to figure out what compilers and compiler versions support this macro.

I would put these in libc/include/llvm-libc-macros/math-macros.h (there's a comment at the bottom to start a new header for these).

It seems that we don't have tests for isfinite, isinf, or isnan macros from our math.h, which is problematic. We should start a new "include" test under libc/test/include (similar to stdbit_test.cpp).

cc @lntue

@nickdesaulniers
Copy link
Member Author

https://android-review.googlesource.com/c/platform/bionic/+/3141226/1/tests/math_test.cpp also has a list of other type generic macros we should provide+test.

fpclassify, signbit,
isfinite, isinf, isnan, isnormal, isgreater, isgreaterequal, isless,
islessequal, islessgreater, and isunordered.

@TejasvOnly
Copy link

I'd like to work on this.

@ChristianWolff1
Copy link

Hello, I want to work in this issue... Is someone working in this issue now? ._.

@lntue
Copy link
Contributor

lntue commented Jul 6, 2024

@TejasvOnly and @ChristianWolff1 : Sorry I completely missed the notifications from this issue. Are you still interested in implementing the remaining math function macros? If so please create a github issue for the one that you are going to implement+test, and tag/cc me to the issue. Please let me know if you are interested in other type of functions in libc also.

Since @akielaries already sent out a PR for signbit, I will assign this issue to @akielaries.

Thanks,

lntue pushed a commit that referenced this issue Jul 14, 2024
This PR resolves #96322 and implements the `signbit` macro under a new
header `generic-math-macros.h`. This also removed the `TODO` in
`math-macros.h` and moves `isfinite`, `isinf`, and `isnan` to the same
generic maths header. Finally, a test file
`generic-math-macros_test.cpp` that adds coverage to the above 4 macros.

Fixes #96322.
aaryanshukla pushed a commit to aaryanshukla/llvm-project that referenced this issue Jul 14, 2024
This PR resolves llvm#96322 and implements the `signbit` macro under a new
header `generic-math-macros.h`. This also removed the `TODO` in
`math-macros.h` and moves `isfinite`, `isinf`, and `isnan` to the same
generic maths header. Finally, a test file
`generic-math-macros_test.cpp` that adds coverage to the above 4 macros.

Fixes llvm#96322.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
good first issue https://github.com/llvm/llvm-project/contribute libc
Projects
None yet
Development

Successfully merging a pull request may close this issue.

5 participants