//===----------------------------------------------------------------------===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// // // REQUIRES: libcpp-pstl-backend-libdispatch // __chunk_partitions __partition_chunks(ptrdiff_t); #include <__pstl/backends/libdispatch.h> #include #include int main(int, char**) { { auto chunks = std::__pstl::__libdispatch::__partition_chunks(0); assert(chunks.__chunk_count_ == 1); assert(chunks.__first_chunk_size_ == 0); assert(chunks.__chunk_size_ == 0); } { auto chunks = std::__pstl::__libdispatch::__partition_chunks(1); assert(chunks.__chunk_count_ == 1); assert(chunks.__first_chunk_size_ == 1); assert(chunks.__chunk_size_ == 1); } for (std::ptrdiff_t i = 2; i != 2ll << 20; ++i) { auto chunks = std::__pstl::__libdispatch::__partition_chunks(i); assert(chunks.__chunk_count_ >= 1); assert(chunks.__chunk_count_ <= i); assert((chunks.__chunk_count_ - 1) * chunks.__chunk_size_ + chunks.__first_chunk_size_ == i); } return 0; }