[libc] Add diff and perf targets for more math functions
authorHedin Garca <hedingarcia@google.com>
Wed, 4 Aug 2021 13:49:41 +0000 (13:49 +0000)
committerHedin García <hedingarcia@google.com>
Thu, 5 Aug 2021 17:57:04 +0000 (17:57 +0000)
commita9628e96ca5b3d264d88147494c82cb63e8ac973
tree5c2bd8bb94c6ac9adf066131badfb7e6883de11e
parentfec8f1a008c311d96689dbe7876b23ecc82d00d5
[libc] Add diff and perf targets for more math functions

Comparing the run time of math functions from LLVM libc
with the MSVCRT libc:
|function |perf-LLVM libc     |perf-MSVCRT
|ceilf |2.36 mins (141491389600 ns)|47.10 sec (47100940100 ns)
|exp2f             |6.37 mins (358441794700 ns)|12.39 mins (719404388300 ns)
|expf |6.35 mins (381204661800 ns)|6.17 mins (346150163200 ns)
|fabsf |1.18 mins (78425546600 ns) |53.75 sec (53745301900 ns)
|floorf |3.15 mins (164770963800 ns)|45.94 sec (45935988400 ns)
|logbf |4.38 mins (262508058800 ns)|55.47 sec (55466377700 ns)
|nearbyintf |3.20 mins (167972868000 ns)|9.13 mins (523822963600 ns)
|rintf |3.20 mins (168001498700 ns)|22.35 mins (1341266448800 ns)
|roundf |2.35 mins (141151500600 ns)|1.42 mins (85326429800 ns)
|truncf |2.31 mins (114846424000 ns)|59.41 sec (59414309100 ns)

Evaluating the number of differing results in Windows:
|function |diff
|ceilf          |8388606 differing results
|exp2f         |213303887 differing results
|expf           |193922 differing results
|fabsf          |8388606 differing results
|floorf         |8388606 differing results
|logbf          |0 differing results
|nearbyintf     |0 differing results
|rintf          |0 differing results
|roundf         |0 differing results
|truncf  |0 differing results

Reviewed By: sivachandra

Differential Revision: https://reviews.llvm.org/D107462
23 files changed:
libc/test/src/math/differential_testing/CMakeLists.txt
libc/test/src/math/differential_testing/ceilf_diff.cpp [new file with mode: 0644]
libc/test/src/math/differential_testing/ceilf_perf.cpp [new file with mode: 0644]
libc/test/src/math/differential_testing/exp2f_diff.cpp [new file with mode: 0644]
libc/test/src/math/differential_testing/exp2f_perf.cpp [new file with mode: 0644]
libc/test/src/math/differential_testing/expf_diff.cpp [new file with mode: 0644]
libc/test/src/math/differential_testing/expf_perf.cpp [new file with mode: 0644]
libc/test/src/math/differential_testing/fabsf_diff.cpp [new file with mode: 0644]
libc/test/src/math/differential_testing/fabsf_perf.cpp [new file with mode: 0644]
libc/test/src/math/differential_testing/floorf_diff.cpp [new file with mode: 0644]
libc/test/src/math/differential_testing/floorf_perf.cpp [new file with mode: 0644]
libc/test/src/math/differential_testing/logbf_diff.cpp [new file with mode: 0644]
libc/test/src/math/differential_testing/logbf_perf.cpp [new file with mode: 0644]
libc/test/src/math/differential_testing/nearbyintf_diff.cpp [new file with mode: 0644]
libc/test/src/math/differential_testing/nearbyintf_perf.cpp [new file with mode: 0644]
libc/test/src/math/differential_testing/rintf_diff.cpp [new file with mode: 0644]
libc/test/src/math/differential_testing/rintf_perf.cpp [new file with mode: 0644]
libc/test/src/math/differential_testing/roundf_diff.cpp [new file with mode: 0644]
libc/test/src/math/differential_testing/roundf_perf.cpp [new file with mode: 0644]
libc/test/src/math/differential_testing/sqrtf_diff.cpp
libc/test/src/math/differential_testing/sqrtf_perf.cpp
libc/test/src/math/differential_testing/truncf_diff.cpp [new file with mode: 0644]
libc/test/src/math/differential_testing/truncf_perf.cpp [new file with mode: 0644]