llvm / llvm-project

The LLVM Project is a collection of modular and reusable compiler and toolchain technologies.
http://llvm.org
Other
26.68k stars 10.93k forks source link

[libc][math] implement `signbit` #96322

Open nickdesaulniers opened 1 week ago

nickdesaulniers commented 1 week ago

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 commented 1 week ago

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 commented 1 week ago

@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 commented 1 week ago

@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 commented 1 week ago

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 commented 1 week ago

I'd like to work on this.

ChristianWolff1 commented 1 week ago

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