[libc-commits] [libc] [llvm] [libc][math] Fix powf exact cases, improve its performance, and add code-size optimized float-only version. (PR #226588)
Jan Patrick Lehr via libc-commits
libc-commits at lists.llvm.org
Mon Oct 5 08:48:26 PDT 2026
jplehr wrote:
I see build errors in the buildbot build that this came in: https://lab.llvm.org/buildbot/#/builders/10/builds/36988
```
FAILED: libc/test/src/math/smoke/CMakeFiles/libc.test.src.math.smoke.powf_test.__build__.dir/powf_test.cpp.o
/home/botworker/builds/openmp-offload-amdgpu-runtime-2/build/llvm.build/bin/clang++ --target=amdgpu-amd-amdhsa -DLIBC_NAMESPACE=__llvm_libc_24_0_0_git -D__LIBC_USE_FLOAT16_CONVERSION -I/home/botworker/builds/openmp-offload-amdgpu-runtime-2/llvm.src/libc -isystem /home/botworker/builds/openmp-offload-amdgpu-runtime-2/build/llvm.build/include/amdgpu-amd-amdhsa -fvisibility-inlines-hidden -Werror=date-time -Werror=unguarded-availability-new -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -Wimplicit-fallthrough -Wcovered-switch-default -Wno-noexcept-type -Wnon-virtual-dtor -Wdelete-non-virtual-dtor -Wsuggest-override -Wno-comment -Wstring-conversion -Wno-pass-failed -fdiagnostics-color -ffunction-sections -fdata-sections -Xclang -fno-pch-timestamp -O3 -DNDEBUG -std=gnu++17 -UNDEBUG --target=amdgpu-amd-amdhsa -D__LIBC_USE_BUILTIN_ISNAN -DLIBC_QSORT_IMPL=LIBC_QSORT_QUICK_SORT -DLIBC_COPT_STRING_LENGTH_IMPL=element -DLIBC_COPT_FIND_FIRST_CHARACTER_IMPL=element -DLIBC_COPT_MEMCPY_X86_USE_NTA_STORES "-DLIBC_MATH=((LIBC_MATH_SKIP_ACCURATE_PASS | LIBC_MATH_INTERMEDIATE_COMP_IN_FLOAT | LIBC_MATH_SMALL_TABLES | LIBC_MATH_NO_ERRNO | LIBC_MATH_NO_EXCEPT))" -fno-math-errno -DLIBC_ERRNO_MODE=LIBC_ERRNO_MODE_SHARED -DLIBC_THREAD_MODE=LIBC_THREAD_MODE_SINGLE -DLIBC_COPT_TIMEOUT_ENSURE_MONOTONICITY -DLIBC_CONF_WCTYPE_MODE=LIBC_WCTYPE_MODE_ASCII -DLIBC_COPT_RAW_MUTEX_DEFAULT_SPIN_COUNT=100 -DLIBC_COPT_HARDENING_MODE=LIBC_HARDENING_MODE_NONE -DLIBC_TARGET_OS_IS_GPU -DLIBC_TEST_FLOAT_RANGE_COUNT=1231 -DLIBC_TEST_SUBPROCESS_TESTS=0 -DLIBC_TEST_UNDER_EMULATOR -fpie -DLIBC_FULL_BUILD -ffreestanding -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables -fno-rtti -ffixed-point -Wall -Wextra -Wconversion -Wno-sign-conversion -Wimplicit-fallthrough -Wwrite-strings -Wno-c99-extensions -Wno-gnu-imaginary-constant -Wno-pedantic -Wstrict-prototypes -Wextra-semi -Wnewline-eof -Wnonportable-system-include-path -Wthread-safety -DLIBC_COMPILER_HAS_STDC_FENV_ACCESS -Wno-multi-gpu -nogpulib -mcpu=native -flto -mcode-object-version=6 -MD -MT libc/test/src/math/smoke/CMakeFiles/libc.test.src.math.smoke.powf_test.__build__.dir/powf_test.cpp.o -MF libc/test/src/math/smoke/CMakeFiles/libc.test.src.math.smoke.powf_test.__build__.dir/powf_test.cpp.o.d -o libc/test/src/math/smoke/CMakeFiles/libc.test.src.math.smoke.powf_test.__build__.dir/powf_test.cpp.o -c /home/botworker/builds/openmp-offload-amdgpu-runtime-2/llvm.src/libc/test/src/math/smoke/powf_test.cpp
In file included from /home/botworker/builds/openmp-offload-amdgpu-runtime-2/llvm.src/libc/test/src/math/smoke/powf_test.cpp:18:
/home/botworker/builds/openmp-offload-amdgpu-runtime-2/llvm.src/libc/src/__support/math/powf_double_eval.h:205:36: error: no member named 'is_exact_rounding_boundary' in namespace '__llvm_libc_24_0_0_git::math::powf_internal'
205 | if (LIBC_UNLIKELY(powf_internal::is_exact_rounding_boundary(x, y, exact_m,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~
/home/botworker/builds/openmp-offload-amdgpu-runtime-2/llvm.src/libc/src/__support/math/powf_double_eval.h:421:12: warning: unused variable 'pp_lo' [-Wunused-variable]
421 | double pp_lo = fputil::multiply_add(f, poly, 1.0 - ERR);
| ^~~~~
/home/botworker/builds/openmp-offload-amdgpu-runtime-2/llvm.src/libc/src/__support/math/powf_double_eval.h:296:9: warning: unused variable 'orig_x_abs' [-Wunused-variable]
296 | float orig_x_abs = xbits.abs().get_val();
| ^~~~~~~~~~
/home/botworker/builds/openmp-offload-amdgpu-runtime-2/llvm.src/libc/src/__support/math/powf_double_eval.h:297:9: warning: unused variable 'orig_y' [-Wunused-variable]
297 | float orig_y = y;
| ^~~~~~
3 warnings and 1 error generated.
```
https://github.com/llvm/llvm-project/pull/226588
More information about the libc-commits
mailing list