Louis Dionne
d145f716ae
[libc++] Bump Xcode support ( #148651 )
...
Libc++'s policy is to support only the latest released Xcode, which is
Xcode 16.x. We did update our CI jobs to Xcode 16.x, but we forgot to
update the documentation, which still mentioned Xcode 15. This patch
updates the documentation and cleans up outdated mentions of
apple-clang-15 in the test suite.
2025-07-15 10:45:37 -04:00
Louis Dionne
aa80388cf9
[libc++] Ensure that we vectorize algorithms on all Clang-based compilers ( #132090 )
...
Otherwise, we wouldn't vectorize on compilers like AppleClang when in
reality we know perfectly well how to do it.
2025-03-24 13:22:40 -04:00
Nikolas Klauser
fb44f00641
[libc++] Add [[gnu::nodebug]] on type traits ( #128502 )
2025-03-23 21:01:25 +01:00
Nikolas Klauser
1a6f9fd87f
[libc++] Enable algorithm vectorization on arm neon ( #128873 )
...
Previously the wrong detection macro has been used to check whether arm
NEON is available. This fixes it, and removes a few unnecessary includes
from `__algorithm/simd_utils.h` as a drive-by.
2025-02-28 13:38:52 +01:00
Vitaly Buka
570f03096a
Revert "Reapply "[libc++] Explicitly convert to masks in SIMD code ( #107983 )"" ( #122022 )
...
Reverts llvm/llvm-project#121352
Triggers "vector type should not be a bool!" on:
```
bool a[100];
bool b[100];
auto t = std::mismatch(std::begin(a), std::end(a), std::begin(b), std::end(b));
```
https://godbolt.org/z/Y73s3sdef
2025-01-08 18:14:39 +01:00
Nikolas Klauser
f69585235e
[libc++] Put _LIBCPP_NODEBUG on all internal aliases ( #118710 )
...
This significantly reduces the amount of debug information generated
for codebases using libc++, without hurting the debugging experience.
2025-01-08 11:12:59 -05:00
Vitaly Buka
ed572f2003
Reapply "[libc++] Explicitly convert to masks in SIMD code ( #107983 )" ( #121352 )
...
This reverts commit 0ea40bf02138c02e7680ce6fa8169502f2a8bd42.
Passes with https://github.com/llvm/llvm-project/issues/121365 fix:
https://lab.llvm.org/buildbot/#/builders/55/builds/4930
2025-01-01 11:30:35 +01:00
Nikolas Klauser
e99c4906e4
[libc++] Granularize <cstddef> includes ( #108696 )
2024-10-31 02:20:10 +01:00
Thurston Dang
0ea40bf021
Revert "[libc++] Explicitly convert to masks in SIMD code ( #107983 )"
...
This reverts commit 1603f99a37c5b179a21dbb8000c39a471a950927.
Reason: buildbot breakage e.g., https://lab.llvm.org/buildbot/#/builders/55/builds/2061
llvm-libc++-shared.cfg.in :: std/algorithms/alg.nonmodifying/alg.starts_with/ranges.starts_with.pass.cpp
llvm-libc++-shared.cfg.in :: std/algorithms/alg.nonmodifying/mismatch/mismatch.pass.cpp
llvm-libc++-shared.cfg.in :: std/algorithms/alg.nonmodifying/mismatch/ranges_mismatch.pass.cpp
...
(Buildbot re-run passed with the previous revision, 1fc288bf481726393c73133eef9aa73c0f78312e)
2024-09-17 21:52:33 +00:00
Nikolas Klauser
1603f99a37
[libc++] Explicitly convert to masks in SIMD code ( #107983 )
...
This makes it clearer when we use masks and avoids MSan complaining.
2024-09-17 12:04:54 +02:00
Nikolas Klauser
17e0686ab1
[libc++][NFC] Use [[__nodiscard__]] unconditionally ( #80454 )
...
`__has_cpp_attribute(__nodiscard__)` is always true now, so we might as
well replace `_LIBCPP_NODISCARD`. It's one less macro that can result in
bad diagnostics.
2024-09-12 21:18:43 +02:00
Zibi Sarbinowski
ffc3a6b286
[libc++] Fix endianness for algorithm mismatch ( #93082 )
...
This PR is required to fix
`std/algorithms/alg.nonmodifying/mismatch/mismatch.pass.cpp` test for
big endian platrofrms such as z/OS.
2024-06-11 08:29:12 -04:00
zibi2
af57ad6536
[libc++][z/OS] Correct a definition of __native_vector_size ( #91995 )
...
Fix `std/ranges/range.adaptors/range.lazy.split/general.pass.cpp` which
started failing on z/OS after this
[commit](https://github.com/llvm/llvm-project/commit/985c1a44f8d49e0af ).
This test case is passing on other platforms such as AIX. This is
because the `__ALTIVEC__` macro is defined and `__mismatch` under
`_LIBCPP_VECTORIZE_ALGORITHMS` guard is compiled out. However, on z/OS
`_LIBCPP_VECTORIZE_ALGORITHMS` is defined. Analyzing the algorithm of
`__mismatch` shows that the culprit is the definition of
`__native_vector_size` which was defined wrongly as 1. This PR corrects
the definition of `__native_vector_size` and fixes the affected test.
2024-05-16 08:58:44 -04:00
Nikolas Klauser
05cc2d5fe1
[libc++] Vectorize std::mismatch with trivially equality comparable types ( #87716 )
2024-05-11 23:32:48 +02:00
Mark de Wever
0ad663ead1
[libc++] Removes Clang-16 support. ( #87810 )
...
With the release of Clang-18 we no longer officially support Clang-16.
2024-04-10 17:51:02 +02:00
Nikolas Klauser
985c1a44f8
[libc++] Optimize the two range overload of mismatch ( #86853 )
...
```
-----------------------------------------------------------------------------
Benchmark old new
-----------------------------------------------------------------------------
bm_mismatch_two_range_overload<char>/1 0.941 ns 1.88 ns
bm_mismatch_two_range_overload<char>/2 1.43 ns 2.15 ns
bm_mismatch_two_range_overload<char>/3 1.95 ns 2.55 ns
bm_mismatch_two_range_overload<char>/4 2.58 ns 2.90 ns
bm_mismatch_two_range_overload<char>/5 3.75 ns 3.31 ns
bm_mismatch_two_range_overload<char>/6 5.00 ns 3.83 ns
bm_mismatch_two_range_overload<char>/7 5.59 ns 4.35 ns
bm_mismatch_two_range_overload<char>/8 6.37 ns 4.84 ns
bm_mismatch_two_range_overload<char>/16 11.8 ns 6.72 ns
bm_mismatch_two_range_overload<char>/64 45.5 ns 2.59 ns
bm_mismatch_two_range_overload<char>/512 366 ns 12.6 ns
bm_mismatch_two_range_overload<char>/4096 2890 ns 91.6 ns
bm_mismatch_two_range_overload<char>/32768 23038 ns 758 ns
bm_mismatch_two_range_overload<char>/262144 142813 ns 6573 ns
bm_mismatch_two_range_overload<char>/1048576 366679 ns 26710 ns
bm_mismatch_two_range_overload<short>/1 0.934 ns 1.88 ns
bm_mismatch_two_range_overload<short>/2 1.30 ns 2.58 ns
bm_mismatch_two_range_overload<short>/3 1.76 ns 3.28 ns
bm_mismatch_two_range_overload<short>/4 2.24 ns 3.98 ns
bm_mismatch_two_range_overload<short>/5 2.80 ns 4.92 ns
bm_mismatch_two_range_overload<short>/6 3.58 ns 6.01 ns
bm_mismatch_two_range_overload<short>/7 4.29 ns 7.03 ns
bm_mismatch_two_range_overload<short>/8 4.67 ns 7.39 ns
bm_mismatch_two_range_overload<short>/16 9.86 ns 13.1 ns
bm_mismatch_two_range_overload<short>/64 38.9 ns 4.55 ns
bm_mismatch_two_range_overload<short>/512 348 ns 27.7 ns
bm_mismatch_two_range_overload<short>/4096 2881 ns 225 ns
bm_mismatch_two_range_overload<short>/32768 23111 ns 1715 ns
bm_mismatch_two_range_overload<short>/262144 184846 ns 14416 ns
bm_mismatch_two_range_overload<short>/1048576 742885 ns 57264 ns
bm_mismatch_two_range_overload<int>/1 0.838 ns 1.19 ns
bm_mismatch_two_range_overload<int>/2 1.19 ns 1.65 ns
bm_mismatch_two_range_overload<int>/3 1.83 ns 2.06 ns
bm_mismatch_two_range_overload<int>/4 2.38 ns 2.42 ns
bm_mismatch_two_range_overload<int>/5 3.60 ns 2.47 ns
bm_mismatch_two_range_overload<int>/6 3.68 ns 3.05 ns
bm_mismatch_two_range_overload<int>/7 4.32 ns 3.36 ns
bm_mismatch_two_range_overload<int>/8 5.18 ns 3.58 ns
bm_mismatch_two_range_overload<int>/16 10.6 ns 2.84 ns
bm_mismatch_two_range_overload<int>/64 39.0 ns 7.78 ns
bm_mismatch_two_range_overload<int>/512 247 ns 53.9 ns
bm_mismatch_two_range_overload<int>/4096 1927 ns 429 ns
bm_mismatch_two_range_overload<int>/32768 15569 ns 3393 ns
bm_mismatch_two_range_overload<int>/262144 125413 ns 28504 ns
bm_mismatch_two_range_overload<int>/1048576 504549 ns 112729 ns
```
2024-04-01 18:21:51 +02:00
Nikolas Klauser
b68e2eba0b
[libc++] Vectorize mismatch ( #73255 )
...
```
---------------------------------------------------
Benchmark old new
---------------------------------------------------
bm_mismatch<char>/1 0.835 ns 2.37 ns
bm_mismatch<char>/2 1.44 ns 2.60 ns
bm_mismatch<char>/3 2.06 ns 2.83 ns
bm_mismatch<char>/4 2.60 ns 3.29 ns
bm_mismatch<char>/5 3.15 ns 3.77 ns
bm_mismatch<char>/6 3.82 ns 4.17 ns
bm_mismatch<char>/7 4.29 ns 4.52 ns
bm_mismatch<char>/8 4.78 ns 4.86 ns
bm_mismatch<char>/16 9.06 ns 7.54 ns
bm_mismatch<char>/64 31.7 ns 19.1 ns
bm_mismatch<char>/512 249 ns 8.16 ns
bm_mismatch<char>/4096 1956 ns 44.2 ns
bm_mismatch<char>/32768 15498 ns 501 ns
bm_mismatch<char>/262144 123965 ns 4479 ns
bm_mismatch<char>/1048576 495668 ns 21306 ns
bm_mismatch<short>/1 0.710 ns 2.12 ns
bm_mismatch<short>/2 1.03 ns 2.66 ns
bm_mismatch<short>/3 1.29 ns 3.56 ns
bm_mismatch<short>/4 1.68 ns 4.29 ns
bm_mismatch<short>/5 1.96 ns 5.18 ns
bm_mismatch<short>/6 2.59 ns 5.91 ns
bm_mismatch<short>/7 2.86 ns 6.63 ns
bm_mismatch<short>/8 3.19 ns 7.33 ns
bm_mismatch<short>/16 5.48 ns 13.0 ns
bm_mismatch<short>/64 16.6 ns 4.06 ns
bm_mismatch<short>/512 130 ns 13.8 ns
bm_mismatch<short>/4096 985 ns 93.8 ns
bm_mismatch<short>/32768 7846 ns 1002 ns
bm_mismatch<short>/262144 63217 ns 10637 ns
bm_mismatch<short>/1048576 251782 ns 42471 ns
bm_mismatch<int>/1 0.716 ns 1.91 ns
bm_mismatch<int>/2 1.21 ns 2.49 ns
bm_mismatch<int>/3 1.38 ns 3.46 ns
bm_mismatch<int>/4 1.71 ns 4.04 ns
bm_mismatch<int>/5 2.00 ns 4.98 ns
bm_mismatch<int>/6 2.43 ns 5.67 ns
bm_mismatch<int>/7 3.05 ns 6.38 ns
bm_mismatch<int>/8 3.22 ns 7.09 ns
bm_mismatch<int>/16 5.18 ns 12.8 ns
bm_mismatch<int>/64 16.6 ns 5.28 ns
bm_mismatch<int>/512 129 ns 25.2 ns
bm_mismatch<int>/4096 1009 ns 201 ns
bm_mismatch<int>/32768 7776 ns 2144 ns
bm_mismatch<int>/262144 62371 ns 20551 ns
bm_mismatch<int>/1048576 254750 ns 90097 ns
```
2024-03-23 15:28:22 +01:00