llvm-project/libcxx
Marco Gelmi 194d1965d2 Introduce branchless sorting functions for sort3, sort4 and sort5.
We are introducing branchless variants for sort3, sort4 and sort5.
These sorting functions have been generated using Reinforcement
Learning and aim to replace __sort3, __sort4 and __sort5 variants
for integral types.

The libc++ benchmarks were run on isolated machines for Skylake, ARM and
AMD architectures and achieve statistically significant improvement in
sorting random integers on test cases from sort1 to sort262144 for
uint32 and uint64.

A full performance overview for Intel Skylake, AMD and Arm can be
found here: https://bit.ly/3AtesYf

Reviewed By: ldionne, #libc, philnik

Spies: daniel.mankowitz, mgrang, Quuxplusone, andreamichi, philnik, libcxx-commits, nilayvaish, kristof.beyls

Differential Revision: https://reviews.llvm.org/D118029
2022-04-08 09:00:30 +02:00
..
benchmarks Introduce branchless sorting functions for sort3, sort4 and sort5. 2022-04-08 09:00:30 +02:00
cmake [libcxx] Stop recommending setting LIBCXX_HAS_WIN32_THREAD_API in the MinGW builds 2022-04-04 23:07:40 +03:00
docs [libc++][ranges] Implement ranges::count{, _if} 2022-04-07 15:18:14 +02:00
include Introduce branchless sorting functions for sort3, sort4 and sort5. 2022-04-08 09:00:30 +02:00
lib [libc++][NFC] Refactor the ABI changelog 2022-03-24 10:24:43 -04:00
src [libcxx] random_device, specify optimal entropy properties for all OS's using arc4random() 2022-03-28 22:43:11 -04:00
test Introduce branchless sorting functions for sort3, sort4 and sort5. 2022-04-08 09:00:30 +02:00
utils [libc++] Add back-deployment testing on arm64 macs 2022-04-07 10:15:40 -04:00
.clang-format [libc++] Update clang-format to C++20. 2021-10-30 12:50:57 +02:00
.clang-tidy [libc++] Enable modernize-loop-convert 2022-03-18 20:34:19 +01:00
.gitignore
CMakeLists.txt [libc++] Add a lightweight overridable assertion handler 2022-03-23 15:35:46 -04:00
CREDITS.TXT Microsoft's floating-point to_chars powered by Ryu and Ryu Printf 2021-12-12 16:34:50 +01:00
LICENSE.TXT
TODO.TXT [libc++] Disallow volatile types in std::allocator 2021-09-22 11:47:38 -04:00
appveyor-reqs-install.cmd
appveyor.yml