| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
[libc] Refactor sqrt implementations and add tests for generic sqrt implementations. Re-apply https://reviews.llvm.org/D118173 with fix for aarch64. Reviewed By: michaelrj Differential Revision: https://reviews.llvm.org/D118433 | 4 年前 | |
[libc] Update exhaustive testing documentations. | 4 年前 | |
[libc] Use nearest_integer instructions to improve expm1f performance. Use nearest_integer instructions to improve expf performance. Performance tests with CORE-MATH's perf tool: Before the patch: $ ./perf.sh expm1f LIBC-location: /home/lnt/experiment/llvm/llvm-project/build/projects/libc/lib/libllvmlibc.a GNU libc version: 2.31 GNU libc release: stable CORE-MATH reciprocal throughput : 10.096 System LIBC reciprocal throughput : 44.036 LIBC reciprocal throughput : 11.575 $ ./perf.sh expm1f --latency LIBC-location: /home/lnt/experiment/llvm/llvm-project/build/projects/libc/lib/libllvmlibc.a GNU libc version: 2.31 GNU libc release: stable CORE-MATH latency : 42.239 System LIBC latency : 122.815 LIBC latency : 50.122 After the patch: $ ./perf.sh expm1f LIBC-location: /home/lnt/experiment/llvm/llvm-project/build/projects/libc/lib/libllvmlibc.a GNU libc version: 2.31 GNU libc release: stable CORE-MATH reciprocal throughput : 10.046 System LIBC reciprocal throughput : 43.899 LIBC reciprocal throughput : 9.179 $ ./perf.sh expm1f --latency LIBC-location: /home/lnt/experiment/llvm/llvm-project/build/projects/libc/lib/libllvmlibc.a GNU libc version: 2.31 GNU libc release: stable CORE-MATH latency : 42.078 System LIBC latency : 120.488 LIBC latency : 41.528 Reviewed By: zimmermann6 Differential Revision: https://reviews.llvm.org/D130502 | 3 年前 | |
[libc] Use '+' constraint on inline assembly As suggested by @mcgrathr in D118099 Reviewed By: lntue Differential Revision: https://reviews.llvm.org/D119978 | 4 年前 | |
[libc][math] fmod/fmodf implementation. This is a implementation of find remainder fmod function from standard libm. The underline algorithm is developed by myself, but probably it was first invented before. Some features of the implementation: 1. The code is written on more-or-less modern C++. 2. One general implementation for both float and double precision numbers. 3. Spitted platform/architecture dependent and independent code and tests. 4. Tests covers 100% of the code for both float and double numbers. Tests cases with NaN/Inf etc is copied from glibc. 5. The new implementation in general 2-4 times faster for “regular” x,y values. It can be 20 times faster for x/y huge value, but can also be 2 times slower for double denormalized range (according to perf tests provided). 6. Two different implementation of division loop are provided. In some platforms division can be very time consuming operation. Depend on platform it can be 3-10 times slower than multiplication. Performance tests: The test is based on core-math project (https://gitlab.inria.fr/core-math/core-math). By Tue Ly suggestion I took hypot function and use it as template for fmod. Preserving all test cases. ./check.sh <--special|--worst> fmodf passed. CORE_MATH_PERF_MODE=rdtsc ./perf.sh fmodf results are GNU libc version: 2.35 GNU libc release: stable 21.166 <-- FPU 51.031 <-- current glibc 37.659 <-- this fmod version. | 3 年前 | |
[libc] Add implementations of ceil[f], floor[f] and trunc[f] from math.h. Reviewers: abrachet Differential Revision: https://reviews.llvm.org/D80612 | 5 年前 | |
[libc] Add implementations of ceil[f], floor[f] and trunc[f] from math.h. Reviewers: abrachet Differential Revision: https://reviews.llvm.org/D80612 | 5 年前 | |
[libc] Add the remaining long double flavors of nearest integer functions. Specifically: ceill, floorl and roundl have been added. Reviewers: asteinhauser Differential Revision: https://reviews.llvm.org/D82591 | 5 年前 | |
[libc] Add implementation of few floating point manipulation functions. Implementations of copysign[f], frexp[f], logb[f], and modf[f] are added. Reviewers: asteinhauser Differential Revision: https://reviews.llvm.org/D81134 | 5 年前 | |
[libc] Add implementation of few floating point manipulation functions. Implementations of copysign[f], frexp[f], logb[f], and modf[f] are added. Reviewers: asteinhauser Differential Revision: https://reviews.llvm.org/D81134 | 5 年前 | |
[libc] Add long double flavors of the floating point manipulation functions. Specifically: copysignl, frexpl, logbl and modfl have been added. Reviewers: asteinhauser Differential Revision: https://reviews.llvm.org/D82357 | 5 年前 | |
[libc] Add x86_64 implementations of double precision cos, sin and tan. The implementations use the x86_64 FPU instructions. These instructions are extremely slow compared to a polynomial based software implementation. Also, their accuracy falls drastically once the input goes beyond 2PI. To improve both the speed and accuracy, we will be taking the following approach going forward: 1. As a follow up to this CL, we will implement a range reduction algorithm which will expand the accuracy to the entire double precision range. 2. After that, we will replace the HW instructions with a polynomial implementation to improve the run time. After step 2, the implementations will be accurate, performant and target architecture independent. Reviewed By: lntue Differential Revision: https://reviews.llvm.org/D102384 | 5 年前 | |
[libc] Move implementations of cosf, sinf, sincosf to src/math directory. NFC intended in the implementaton. Only mechanical changes to fit the LLVM libc implementation standard have been done. Math testing infrastructure has been added. This infrastructure compares the results produced by the libc with the high precision results from MPFR. Tests making use of this infrastructure have been added for cosf, sinf and sincosf. Reviewers: abrachet, phosek Differential Revision: https://reviews.llvm.org/D76825 | 6 年前 | |
[libc] Move implementations of expf and exp2f from the AOR to src/math. Reviewers: phosek Differential Revision: https://reviews.llvm.org/D79149 | 6 年前 | |
[libc] Move implementations of expf and exp2f from the AOR to src/math. Reviewers: phosek Differential Revision: https://reviews.llvm.org/D79149 | 6 年前 | |
[libc] Add implementation of expm1f. Use expm1f(x) = exp(x) - 1 for |x| > ln(2). For |x| <= ln(2), divide it into 3 subintervals: [-ln2, -1/8], [-1/8, 1/8], [1/8, ln2] and use a degree-6 polynomial approximation generated by Sollya's fpminmax for each interval. Errors < 1.5 ULPs when we use fma to evaluate the polynomials. Differential Revision: https://reviews.llvm.org/D101134 | 4 年前 | |
[libc] Add implementation of fabs and fabsf. Reviewers: phosek Differential Revision: https://reviews.llvm.org/D79725 | 6 年前 | |
[libc] Add implementation of fabs and fabsf. Reviewers: phosek Differential Revision: https://reviews.llvm.org/D79725 | 6 年前 | |
[libc] Add implementations long double fabsl and truncl functions. Current implementations of single precision and double precision floating point operations operate on bits of the integer type of same size. The code made use of magic masks which were listed as literal integer values. This is not possible in the case of long double type as the mantissa of quad-precision long double type used on non-x86 architectures is wider that the widest integer type for which we can list literal values. So, in this patch, to avoid using magic masks specified with literal values, we use packed bit-field struct types and let the compiler generate the masks. This new scheme allows us to implement long double flavors of the various floating point operations. To keep the size of the patch small, only the implementations of fabs and trunc have been switched to the new scheme. In following patches, all exisiting implementations will be switched to the new scheme. Reviewers: asteinhauser Differential Revision: https://reviews.llvm.org/D82036 | 5 年前 | |
[libc] Add implementations of fdim[f|l]. Implementing fdim, fdimf, and fdiml for llvm-libc. Differential Revision: https://reviews.llvm.org/D90906 | 5 年前 | |
[libc] Add implementations of fdim[f|l]. Implementing fdim, fdimf, and fdiml for llvm-libc. Differential Revision: https://reviews.llvm.org/D90906 | 5 年前 | |
[libc] Add implementations of fdim[f|l]. Implementing fdim, fdimf, and fdiml for llvm-libc. Differential Revision: https://reviews.llvm.org/D90906 | 5 年前 | |
[libc] Add implementations of ceil[f], floor[f] and trunc[f] from math.h. Reviewers: abrachet Differential Revision: https://reviews.llvm.org/D80612 | 5 年前 | |
[libc] Add implementations of ceil[f], floor[f] and trunc[f] from math.h. Reviewers: abrachet Differential Revision: https://reviews.llvm.org/D80612 | 5 年前 | |
[libc] Add the remaining long double flavors of nearest integer functions. Specifically: ceill, floorl and roundl have been added. Reviewers: asteinhauser Differential Revision: https://reviews.llvm.org/D82591 | 5 年前 | |
[libc] Automatically add -mfma flag for architectures supporting FMA. Detect if the architecture supports FMA instructions and if the targets depend on fma. Reviewed By: gchatelet Differential Revision: https://reviews.llvm.org/D123615 | 3 年前 | |
[libc] Add hardware implementations of fma and fmaf for x86_64 and aarch64. The current generic implementation of the fmaf function has been moved to the FPUtil directory. This allows one use the fma operation from implementations of other math functions like the trignometric functions without depending on/requiring the fma/fmaf/fmal function targets. If this pattern ends being convenient, we will switch all generic math implementations to this pattern. Reviewed By: lntue Differential Revision: https://reviews.llvm.org/D100811 | 5 年前 | |
[libc] Automatically add -mfma flag for architectures supporting FMA. Detect if the architecture supports FMA instructions and if the targets depend on fma. Reviewed By: gchatelet Differential Revision: https://reviews.llvm.org/D123615 | 3 年前 | |
[libc] Add implementation of fmaf. Differential Revision: https://reviews.llvm.org/D94018 | 5 年前 | |
[libc] Add implementations of fmax, fmaxf, and fmaxl. Summary: Add implementations of fmax, fmaxf, and fmaxl. Reviewers: sivachandra Subscribers: mgorny, tschuett, libc-commits, ecnelises Tags: #libc-project Differential Revision: https://reviews.llvm.org/D84385 | 5 年前 | |
[libc] Add implementations of fmax, fmaxf, and fmaxl. Summary: Add implementations of fmax, fmaxf, and fmaxl. Reviewers: sivachandra Subscribers: mgorny, tschuett, libc-commits, ecnelises Tags: #libc-project Differential Revision: https://reviews.llvm.org/D84385 | 5 年前 | |
[libc] Add implementations of fmax, fmaxf, and fmaxl. Summary: Add implementations of fmax, fmaxf, and fmaxl. Reviewers: sivachandra Subscribers: mgorny, tschuett, libc-commits, ecnelises Tags: #libc-project Differential Revision: https://reviews.llvm.org/D84385 | 5 年前 | |
Add implementations for fmin, fminf, and fminl. Testing infrastructure update is splitted to https://reviews.llvm.org/D83931. | 5 年前 | |
Add implementations for fmin, fminf, and fminl. Testing infrastructure update is splitted to https://reviews.llvm.org/D83931. | 5 年前 | |
Add implementations for fmin, fminf, and fminl. Testing infrastructure update is splitted to https://reviews.llvm.org/D83931. | 5 年前 | |
[libc][math] fmod/fmodf implementation. This is a implementation of find remainder fmod function from standard libm. The underline algorithm is developed by myself, but probably it was first invented before. Some features of the implementation: 1. The code is written on more-or-less modern C++. 2. One general implementation for both float and double precision numbers. 3. Spitted platform/architecture dependent and independent code and tests. 4. Tests covers 100% of the code for both float and double numbers. Tests cases with NaN/Inf etc is copied from glibc. 5. The new implementation in general 2-4 times faster for “regular” x,y values. It can be 20 times faster for x/y huge value, but can also be 2 times slower for double denormalized range (according to perf tests provided). 6. Two different implementation of division loop are provided. In some platforms division can be very time consuming operation. Depend on platform it can be 3-10 times slower than multiplication. Performance tests: The test is based on core-math project (https://gitlab.inria.fr/core-math/core-math). By Tue Ly suggestion I took hypot function and use it as template for fmod. Preserving all test cases. ./check.sh <--special|--worst> fmodf passed. CORE_MATH_PERF_MODE=rdtsc ./perf.sh fmodf results are GNU libc version: 2.35 GNU libc release: stable 21.166 <-- FPU 51.031 <-- current glibc 37.659 <-- this fmod version. | 3 年前 | |
[libc][math] fmod/fmodf implementation. This is a implementation of find remainder fmod function from standard libm. The underline algorithm is developed by myself, but probably it was first invented before. Some features of the implementation: 1. The code is written on more-or-less modern C++. 2. One general implementation for both float and double precision numbers. 3. Spitted platform/architecture dependent and independent code and tests. 4. Tests covers 100% of the code for both float and double numbers. Tests cases with NaN/Inf etc is copied from glibc. 5. The new implementation in general 2-4 times faster for “regular” x,y values. It can be 20 times faster for x/y huge value, but can also be 2 times slower for double denormalized range (according to perf tests provided). 6. Two different implementation of division loop are provided. In some platforms division can be very time consuming operation. Depend on platform it can be 3-10 times slower than multiplication. Performance tests: The test is based on core-math project (https://gitlab.inria.fr/core-math/core-math). By Tue Ly suggestion I took hypot function and use it as template for fmod. Preserving all test cases. ./check.sh <--special|--worst> fmodf passed. CORE_MATH_PERF_MODE=rdtsc ./perf.sh fmodf results are GNU libc version: 2.35 GNU libc release: stable 21.166 <-- FPU 51.031 <-- current glibc 37.659 <-- this fmod version. | 3 年前 | |
[libc] Add implementation of few floating point manipulation functions. Implementations of copysign[f], frexp[f], logb[f], and modf[f] are added. Reviewers: asteinhauser Differential Revision: https://reviews.llvm.org/D81134 | 5 年前 | |
[libc] Add implementation of few floating point manipulation functions. Implementations of copysign[f], frexp[f], logb[f], and modf[f] are added. Reviewers: asteinhauser Differential Revision: https://reviews.llvm.org/D81134 | 5 年前 | |
[libc] Add long double flavors of the floating point manipulation functions. Specifically: copysignl, frexpl, logbl and modfl have been added. Reviewers: asteinhauser Differential Revision: https://reviews.llvm.org/D82357 | 5 年前 | |
[libc] Add implementation of hypot. Refactor src/math/hypotf.cpp and test/src/math/hypotf_test.cpp and reuse them for hypot and hypot_test Differential Revision: https://reviews.llvm.org/D91831 | 5 年前 | |
[libc] Add implementation for hypotf Truncating the sum of squares, and then use shift-and-add algorithm to compute its square root. Required MPFR testing infra is updated in https://reviews.llvm.org/D87514 Differential Revision: https://reviews.llvm.org/D87516 | 5 年前 | |
[libc] Add implementations of ilogb[f|l]. Depends on D90805. Reviewed By: lntue Differential Revision: https://reviews.llvm.org/D90806 | 5 年前 | |
[libc] Add implementations of ilogb[f|l]. Depends on D90805. Reviewed By: lntue Differential Revision: https://reviews.llvm.org/D90806 | 5 年前 | |
[libc] Add implementations of ilogb[f|l]. Depends on D90805. Reviewed By: lntue Differential Revision: https://reviews.llvm.org/D90806 | 5 年前 | |
[libc] Add implementations of ldexp[f|l]. The rounding behavior of NormalFloat to float format has been changed to round to nearest. Also, a bug in NormalFloat to subnormal number conversion has been fixed. Reviewed By: lntue Differential Revision: https://reviews.llvm.org/D91591 | 5 年前 | |
[libc] Add implementations of ldexp[f|l]. The rounding behavior of NormalFloat to float format has been changed to round to nearest. Also, a bug in NormalFloat to subnormal number conversion has been fixed. Reviewed By: lntue Differential Revision: https://reviews.llvm.org/D91591 | 5 年前 | |
[libc] Add implementations of ldexp[f|l]. The rounding behavior of NormalFloat to float format has been changed to round to nearest. Also, a bug in NormalFloat to subnormal number conversion has been fixed. Reviewed By: lntue Differential Revision: https://reviews.llvm.org/D91591 | 5 年前 | |
[libc] Add implementations of rounding functions which depend rounding mode. Namely, implementations for rint, rintf, rintl, lrint, lrintf, lrintl, llrint, llrintf and llrintl have been added. Reviewed By: lntue Differential Revision: https://reviews.llvm.org/D93889 | 5 年前 | |
[libc] Add implementations of rounding functions which depend rounding mode. Namely, implementations for rint, rintf, rintl, lrint, lrintf, lrintl, llrint, llrintf and llrintl have been added. Reviewed By: lntue Differential Revision: https://reviews.llvm.org/D93889 | 5 年前 | |
[libc] Add implementations of rounding functions which depend rounding mode. Namely, implementations for rint, rintf, rintl, lrint, lrintf, lrintl, llrint, llrintf and llrintl have been added. Reviewed By: lntue Differential Revision: https://reviews.llvm.org/D93889 | 5 年前 | |
[libc] Add implementations of lround[f|l] and llround[f|l]. A new function to MPFRWrapper has been added, which is used to set up the unit tests. Reviewed By: lntue Differential Revision: https://reviews.llvm.org/D93007 | 5 年前 | |
[libc] Add implementations of lround[f|l] and llround[f|l]. A new function to MPFRWrapper has been added, which is used to set up the unit tests. Reviewed By: lntue Differential Revision: https://reviews.llvm.org/D93007 | 5 年前 | |
[libc] Add implementations of lround[f|l] and llround[f|l]. A new function to MPFRWrapper has been added, which is used to set up the unit tests. Reviewed By: lntue Differential Revision: https://reviews.llvm.org/D93007 | 5 年前 | |
[libc] Implement log10f correctly rounded for all rounding modes. Based on RLIBM implementation similar to logf and log2f. Most of the exceptional inputs are the exact powers of 10. Reviewed By: sivachandra, zimmermann6, santoshn, jpl169 Differential Revision: https://reviews.llvm.org/D118093 | 4 年前 | |
[libc] Implement log1pf correctly rounded to all rounding modes. Implement log1pf correctly rounded to all rounding modes relying on logf implementation for exponent > 2^(-8). Reviewed By: sivachandra, zimmermann6 Differential Revision: https://reviews.llvm.org/D118962 | 4 年前 | |
[libc] Implement correctly rounded log2f based on RLIBM library. Implement log2f based on RLIBM library correctly rounded for all rounding modes. Reviewed By: sivachandra, michaelrj, santoshn, jpl169, zimmermann6 Differential Revision: https://reviews.llvm.org/D115828 | 4 年前 | |
[libc] Add implementation of few floating point manipulation functions. Implementations of copysign[f], frexp[f], logb[f], and modf[f] are added. Reviewers: asteinhauser Differential Revision: https://reviews.llvm.org/D81134 | 5 年前 | |
[libc] Add implementation of few floating point manipulation functions. Implementations of copysign[f], frexp[f], logb[f], and modf[f] are added. Reviewers: asteinhauser Differential Revision: https://reviews.llvm.org/D81134 | 5 年前 | |
[libc] Add long double flavors of the floating point manipulation functions. Specifically: copysignl, frexpl, logbl and modfl have been added. Reviewers: asteinhauser Differential Revision: https://reviews.llvm.org/D82357 | 5 年前 | |
[libc] Implement correctly rounded logf based on RLIBM library. Implement correctly rounded logf based on RLIBM library: https://people.cs.rutgers.edu/~sn349/rlibm/. Reviewed By: sivachandra, santoshn, jpl169, zimmermann6 Differential Revision: https://reviews.llvm.org/D115408 | 4 年前 | |
[libc] Add implementations of rounding functions which depend rounding mode. Namely, implementations for rint, rintf, rintl, lrint, lrintf, lrintl, llrint, llrintf and llrintl have been added. Reviewed By: lntue Differential Revision: https://reviews.llvm.org/D93889 | 5 年前 | |
[libc] Add implementations of rounding functions which depend rounding mode. Namely, implementations for rint, rintf, rintl, lrint, lrintf, lrintl, llrint, llrintf and llrintl have been added. Reviewed By: lntue Differential Revision: https://reviews.llvm.org/D93889 | 5 年前 | |
[libc] Add implementations of rounding functions which depend rounding mode. Namely, implementations for rint, rintf, rintl, lrint, lrintf, lrintl, llrint, llrintf and llrintl have been added. Reviewed By: lntue Differential Revision: https://reviews.llvm.org/D93889 | 5 年前 | |
[libc] Add implementations of lround[f|l] and llround[f|l]. A new function to MPFRWrapper has been added, which is used to set up the unit tests. Reviewed By: lntue Differential Revision: https://reviews.llvm.org/D93007 | 5 年前 | |
[libc] Add implementations of lround[f|l] and llround[f|l]. A new function to MPFRWrapper has been added, which is used to set up the unit tests. Reviewed By: lntue Differential Revision: https://reviews.llvm.org/D93007 | 5 年前 | |
[libc] Add implementations of lround[f|l] and llround[f|l]. A new function to MPFRWrapper has been added, which is used to set up the unit tests. Reviewed By: lntue Differential Revision: https://reviews.llvm.org/D93007 | 5 年前 | |
[libc] Add implementation of few floating point manipulation functions. Implementations of copysign[f], frexp[f], logb[f], and modf[f] are added. Reviewers: asteinhauser Differential Revision: https://reviews.llvm.org/D81134 | 5 年前 | |
[libc] Add implementation of few floating point manipulation functions. Implementations of copysign[f], frexp[f], logb[f], and modf[f] are added. Reviewers: asteinhauser Differential Revision: https://reviews.llvm.org/D81134 | 5 年前 | |
[libc] Add long double flavors of the floating point manipulation functions. Specifically: copysignl, frexpl, logbl and modfl have been added. Reviewers: asteinhauser Differential Revision: https://reviews.llvm.org/D82357 | 5 年前 | |
[libc] Add implementations of nearbyint[f|l]. The implementation is exactly the same as rint* as even rint does not raise any floating point exceptions currently. [Note that the standards do not specify that floating point exceptions must be raised - they leave it up to the implementation to choose to raise FE_INEXACT when rounding non-integral values.] Reviewed By: lntue Differential Revision: https://reviews.llvm.org/D94112 | 5 年前 | |
[libc] Add implementations of nearbyint[f|l]. The implementation is exactly the same as rint* as even rint does not raise any floating point exceptions currently. [Note that the standards do not specify that floating point exceptions must be raised - they leave it up to the implementation to choose to raise FE_INEXACT when rounding non-integral values.] Reviewed By: lntue Differential Revision: https://reviews.llvm.org/D94112 | 5 年前 | |
[libc] Add implementations of nearbyint[f|l]. The implementation is exactly the same as rint* as even rint does not raise any floating point exceptions currently. [Note that the standards do not specify that floating point exceptions must be raised - they leave it up to the implementation to choose to raise FE_INEXACT when rounding non-integral values.] Reviewed By: lntue Differential Revision: https://reviews.llvm.org/D94112 | 5 年前 | |
[libc] Add implementations of nextafter[f|l] functions. A differential fuzzer for these functions has also been added. Along the way, a small correction has been done to the normal/subnormal limits of x86 long double values. Reviewed By: lntue Differential Revision: https://reviews.llvm.org/D94109 | 5 年前 | |
[libc] Add implementations of nextafter[f|l] functions. A differential fuzzer for these functions has also been added. Along the way, a small correction has been done to the normal/subnormal limits of x86 long double values. Reviewed By: lntue Differential Revision: https://reviews.llvm.org/D94109 | 5 年前 | |
[libc] Add implementations of nextafter[f|l] functions. A differential fuzzer for these functions has also been added. Along the way, a small correction has been done to the normal/subnormal limits of x86 long double values. Reviewed By: lntue Differential Revision: https://reviews.llvm.org/D94109 | 5 年前 | |
[libc] Add implementations of remquo[f|l] and remainder[f|l]. The implementation is not fully standards compliant in the sense that errno is not set on error, and floating point exceptions are not raised. Subnormal range and normal range are tested separately in the tests. Reviewed By: lntue Differential Revision: https://reviews.llvm.org/D86666 | 5 年前 | |
[libc] Add implementations of remquo[f|l] and remainder[f|l]. The implementation is not fully standards compliant in the sense that errno is not set on error, and floating point exceptions are not raised. Subnormal range and normal range are tested separately in the tests. Reviewed By: lntue Differential Revision: https://reviews.llvm.org/D86666 | 5 年前 | |
[libc] Add implementations of remquo[f|l] and remainder[f|l]. The implementation is not fully standards compliant in the sense that errno is not set on error, and floating point exceptions are not raised. Subnormal range and normal range are tested separately in the tests. Reviewed By: lntue Differential Revision: https://reviews.llvm.org/D86666 | 5 年前 | |
[libc] Add implementations of remquo[f|l] and remainder[f|l]. The implementation is not fully standards compliant in the sense that errno is not set on error, and floating point exceptions are not raised. Subnormal range and normal range are tested separately in the tests. Reviewed By: lntue Differential Revision: https://reviews.llvm.org/D86666 | 5 年前 | |
[libc] Add implementations of remquo[f|l] and remainder[f|l]. The implementation is not fully standards compliant in the sense that errno is not set on error, and floating point exceptions are not raised. Subnormal range and normal range are tested separately in the tests. Reviewed By: lntue Differential Revision: https://reviews.llvm.org/D86666 | 5 年前 | |
[libc] Add implementations of remquo[f|l] and remainder[f|l]. The implementation is not fully standards compliant in the sense that errno is not set on error, and floating point exceptions are not raised. Subnormal range and normal range are tested separately in the tests. Reviewed By: lntue Differential Revision: https://reviews.llvm.org/D86666 | 5 年前 | |
[libc] Add implementations of rounding functions which depend rounding mode. Namely, implementations for rint, rintf, rintl, lrint, lrintf, lrintl, llrint, llrintf and llrintl have been added. Reviewed By: lntue Differential Revision: https://reviews.llvm.org/D93889 | 5 年前 | |
[libc] Add implementations of rounding functions which depend rounding mode. Namely, implementations for rint, rintf, rintl, lrint, lrintf, lrintl, llrint, llrintf and llrintl have been added. Reviewed By: lntue Differential Revision: https://reviews.llvm.org/D93889 | 5 年前 | |
[libc] Add implementations of rounding functions which depend rounding mode. Namely, implementations for rint, rintf, rintl, lrint, lrintf, lrintl, llrint, llrintf and llrintl have been added. Reviewed By: lntue Differential Revision: https://reviews.llvm.org/D93889 | 5 年前 | |
[libc][NFC] Make all top of file comments consistent. Summary: Made all header files consistent based of this documentation: https://llvm.org/docs/CodingStandards.html#file-headers. And did the same for all source files top of file comments. Reviewers: sivachandra, abrachet Reviewed By: sivachandra, abrachet Subscribers: MaskRay, tschuett, libc-commits Tags: #libc-project Differential Revision: https://reviews.llvm.org/D77533 | 6 年前 | |
[libc] Add implementations of round and roundf. Reviewers: asteinhauser Differential Revision: https://reviews.llvm.org/D80779 | 5 年前 | |
[libc] Add the remaining long double flavors of nearest integer functions. Specifically: ceill, floorl and roundl have been added. Reviewers: asteinhauser Differential Revision: https://reviews.llvm.org/D82591 | 5 年前 | |
[libc] Add x86_64 implementations of double precision cos, sin and tan. The implementations use the x86_64 FPU instructions. These instructions are extremely slow compared to a polynomial based software implementation. Also, their accuracy falls drastically once the input goes beyond 2PI. To improve both the speed and accuracy, we will be taking the following approach going forward: 1. As a follow up to this CL, we will implement a range reduction algorithm which will expand the accuracy to the entire double precision range. 2. After that, we will replace the HW instructions with a polynomial implementation to improve the run time. After step 2, the implementations will be accurate, performant and target architecture independent. Reviewed By: lntue Differential Revision: https://reviews.llvm.org/D102384 | 5 年前 | |
[libc] Move implementations of cosf, sinf, sincosf to src/math directory. NFC intended in the implementaton. Only mechanical changes to fit the LLVM libc implementation standard have been done. Math testing infrastructure has been added. This infrastructure compares the results produced by the libc with the high precision results from MPFR. Tests making use of this infrastructure have been added for cosf, sinf and sincosf. Reviewers: abrachet, phosek Differential Revision: https://reviews.llvm.org/D76825 | 6 年前 | |
[libc] Move implementations of cosf, sinf, sincosf to src/math directory. NFC intended in the implementaton. Only mechanical changes to fit the LLVM libc implementation standard have been done. Math testing infrastructure has been added. This infrastructure compares the results produced by the libc with the high precision results from MPFR. Tests making use of this infrastructure have been added for cosf, sinf and sincosf. Reviewers: abrachet, phosek Differential Revision: https://reviews.llvm.org/D76825 | 6 年前 | |
[libc] Add implementations for sqrt, sqrtf, and sqrtl. Differential Revision: https://reviews.llvm.org/D84726 | 5 年前 | |
[libc] Add implementations for sqrt, sqrtf, and sqrtl. Differential Revision: https://reviews.llvm.org/D84726 | 5 年前 | |
[libc] Add implementations for sqrt, sqrtf, and sqrtl. Differential Revision: https://reviews.llvm.org/D84726 | 5 年前 | |
[libc] Add x86_64 implementations of double precision cos, sin and tan. The implementations use the x86_64 FPU instructions. These instructions are extremely slow compared to a polynomial based software implementation. Also, their accuracy falls drastically once the input goes beyond 2PI. To improve both the speed and accuracy, we will be taking the following approach going forward: 1. As a follow up to this CL, we will implement a range reduction algorithm which will expand the accuracy to the entire double precision range. 2. After that, we will replace the HW instructions with a polynomial implementation to improve the run time. After step 2, the implementations will be accurate, performant and target architecture independent. Reviewed By: lntue Differential Revision: https://reviews.llvm.org/D102384 | 5 年前 | |
[libc] Add implementations of ceil[f], floor[f] and trunc[f] from math.h. Reviewers: abrachet Differential Revision: https://reviews.llvm.org/D80612 | 5 年前 | |
[libc] Add implementations of ceil[f], floor[f] and trunc[f] from math.h. Reviewers: abrachet Differential Revision: https://reviews.llvm.org/D80612 | 5 年前 | |
[libc] Add implementations long double fabsl and truncl functions. Current implementations of single precision and double precision floating point operations operate on bits of the integer type of same size. The code made use of magic masks which were listed as literal integer values. This is not possible in the case of long double type as the mantissa of quad-precision long double type used on non-x86 architectures is wider that the widest integer type for which we can list literal values. So, in this patch, to avoid using magic masks specified with literal values, we use packed bit-field struct types and let the compiler generate the masks. This new scheme allows us to implement long double flavors of the various floating point operations. To keep the size of the patch small, only the implementations of fabs and trunc have been switched to the new scheme. In following patches, all exisiting implementations will be switched to the new scheme. Reviewers: asteinhauser Differential Revision: https://reviews.llvm.org/D82036 | 5 年前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 4 年前 | ||
| 4 年前 | ||
| 3 年前 | ||
| 4 年前 | ||
| 3 年前 | ||
| 5 年前 | ||
| 5 年前 | ||
| 5 年前 | ||
| 5 年前 | ||
| 5 年前 | ||
| 5 年前 | ||
| 5 年前 | ||
| 6 年前 | ||
| 6 年前 | ||
| 6 年前 | ||
| 4 年前 | ||
| 6 年前 | ||
| 6 年前 | ||
| 5 年前 | ||
| 5 年前 | ||
| 5 年前 | ||
| 5 年前 | ||
| 5 年前 | ||
| 5 年前 | ||
| 5 年前 | ||
| 3 年前 | ||
| 5 年前 | ||
| 3 年前 | ||
| 5 年前 | ||
| 5 年前 | ||
| 5 年前 | ||
| 5 年前 | ||
| 5 年前 | ||
| 5 年前 | ||
| 5 年前 | ||
| 3 年前 | ||
| 3 年前 | ||
| 5 年前 | ||
| 5 年前 | ||
| 5 年前 | ||
| 5 年前 | ||
| 5 年前 | ||
| 5 年前 | ||
| 5 年前 | ||
| 5 年前 | ||
| 5 年前 | ||
| 5 年前 | ||
| 5 年前 | ||
| 5 年前 | ||
| 5 年前 | ||
| 5 年前 | ||
| 5 年前 | ||
| 5 年前 | ||
| 5 年前 | ||
| 4 年前 | ||
| 4 年前 | ||
| 4 年前 | ||
| 5 年前 | ||
| 5 年前 | ||
| 5 年前 | ||
| 4 年前 | ||
| 5 年前 | ||
| 5 年前 | ||
| 5 年前 | ||
| 5 年前 | ||
| 5 年前 | ||
| 5 年前 | ||
| 5 年前 | ||
| 5 年前 | ||
| 5 年前 | ||
| 5 年前 | ||
| 5 年前 | ||
| 5 年前 | ||
| 5 年前 | ||
| 5 年前 | ||
| 5 年前 | ||
| 5 年前 | ||
| 5 年前 | ||
| 5 年前 | ||
| 5 年前 | ||
| 5 年前 | ||
| 5 年前 | ||
| 5 年前 | ||
| 5 年前 | ||
| 5 年前 | ||
| 6 年前 | ||
| 5 年前 | ||
| 5 年前 | ||
| 5 年前 | ||
| 6 年前 | ||
| 6 年前 | ||
| 5 年前 | ||
| 5 年前 | ||
| 5 年前 | ||
| 5 年前 | ||
| 5 年前 | ||
| 5 年前 | ||
| 5 年前 |