GCC Code Coverage Report


ernie/
Coverage:
low: ≥ 0%
medium: ≥ 75.0%
high: ≥ 90.0%
Lines:
120 / 122
98.4%
Branches:
85 / 136
62.5%
Functions:
11 / 11
100.0%

util/parallel.h
Line Branch Exec Source
1 // SPDX-License-Identifier: BSD-3-Clause
2 /// @file parallel.h
3 /// @brief Runs a loop's iterations across CPU threads.
4 #pragma once
5
6 #include <algorithm>
7 #include <atomic>
8 #include <cstddef>
9 #include <thread>
10 #include <vector>
11
12 namespace ernie {
13
14 /// @brief Calls body(i) for every i in [0, count), spread over half the machine's threads.
15 /// Iterations are handed out one at a time, so uneven ones balance. Half the threads leaves the
16 /// rest of the machine responsive while tables and textures are built.
17 /// @param count The number of iterations.
18 /// @param body Called once per iteration, from any thread, possibly concurrently.
19 497 template <typename Body> void ParallelLoop(std::size_t count, const Body& body) {
20 497 std::atomic<std::size_t> next{0};
21 513 const auto work = [&] {
22
2/2
✓ Branch 0 taken 31 times.
✓ Branch 1 taken 8 times.
39 for (std::size_t i; (i = next.fetch_add(1)) < count;) {
23 31 body(i);
24 }
25 };
26
10/20
ernie::ParallelLoop<ernie::DiurnalTemperatureTable(ernie::RegolithProperties const&, int, int, std::vector<float, std::allocator<float> >, std::vector<float, std::allocator<float> >)::{lambda(unsigned long)#1}>(unsigned long, ernie::DiurnalTemperatureTable(ernie::RegolithProperties const&, int, int, std::vector<float, std::allocator<float> >, std::vector<float, std::allocator<float> >)::{lambda(unsigned long)#1} const&)::{lambda()#1}::operator()() const:
✗ Branch 1 not taken.
✓ Branch 2 taken 4 times.
void ernie::ParallelLoop<ernie::(anonymous namespace)::EncodeBlocks(ernie::TextureFormat, std::span<unsigned char const, 18446744073709551615ul>, unsigned int, unsigned int, std::byte*, bc7enc_compress_block_params const&)::{lambda(unsigned long)#1}>(unsigned long, ernie::(anonymous namespace)::EncodeBlocks(ernie::TextureFormat, std::span<unsigned char const, 18446744073709551615ul>, unsigned int, unsigned int, std::byte*, bc7enc_compress_block_params const&)::{lambda(unsigned long)#1} const&):
✗ Branch 1 not taken.
✓ Branch 2 taken 240 times.
void ernie::ParallelLoop<ernie::(anonymous namespace)::HalveRgba8(std::span<unsigned char const, 18446744073709551615ul>, unsigned int, unsigned int, bool)::{lambda(unsigned long)#1}>(unsigned long, ernie::(anonymous namespace)::HalveRgba8(std::span<unsigned char const, 18446744073709551615ul>, unsigned int, unsigned int, bool)::{lambda(unsigned long)#1} const&):
✗ Branch 1 not taken.
✓ Branch 2 taken 245 times.
void ernie::ParallelLoop<ernie::(anonymous namespace)::MakeDetailNoise(unsigned long)::{lambda(unsigned long)#1}>(unsigned long, ernie::(anonymous namespace)::MakeDetailNoise(unsigned long)::{lambda(unsigned long)#1} const&):
✗ Branch 1 not taken.
✓ Branch 2 taken 1 time.
void ernie::ParallelLoop<ernie::(anonymous namespace)::MakeShapeNoise(unsigned long)::{lambda(unsigned long)#1}>(unsigned long, ernie::(anonymous namespace)::MakeShapeNoise(unsigned long)::{lambda(unsigned long)#1} const&):
✗ Branch 1 not taken.
✓ Branch 2 taken 1 time.
void ernie::ParallelLoop<ernie::(anonymous namespace)::MakeTurbulenceMap(unsigned long)::{lambda(unsigned long)#1}>(unsigned long, ernie::(anonymous namespace)::MakeTurbulenceMap(unsigned long)::{lambda(unsigned long)#1} const&):
✗ Branch 1 not taken.
✓ Branch 2 taken 1 time.
void ernie::ParallelLoop<ernie::(anonymous namespace)::MakeWeatherMap(unsigned long)::{lambda(unsigned long)#1}>(unsigned long, ernie::(anonymous namespace)::MakeWeatherMap(unsigned long)::{lambda(unsigned long)#1} const&):
✗ Branch 1 not taken.
✓ Branch 2 taken 1 time.
void ernie::ParallelLoop<ernie::(anonymous namespace)::Parallel_AcceptsNoIterations_Test::TestBody()::{lambda(unsigned long)#1}>(unsigned long, ernie::(anonymous namespace)::Parallel_AcceptsNoIterations_Test::TestBody()::{lambda(unsigned long)#1} const&):
✗ Branch 1 not taken.
✓ Branch 2 taken 1 time.
void ernie::ParallelLoop<ernie::(anonymous namespace)::Parallel_RunsEveryIterationExactlyOnce_Test::TestBody()::{lambda(unsigned long)#1}>(unsigned long, ernie::(anonymous namespace)::Parallel_RunsEveryIterationExactlyOnce_Test::TestBody()::{lambda(unsigned long)#1} const&):
✗ Branch 1 not taken.
✓ Branch 2 taken 1 time.
void ernie::ParallelLoop<ernie::SimulateCloudTransport(ernie::DropletPhaseTable const&, ernie::CloudTransportOptions const&)::{lambda(unsigned long)#1}>(unsigned long, ernie::SimulateCloudTransport(ernie::DropletPhaseTable const&, ernie::CloudTransportOptions const&)::{lambda(unsigned long)#1} const&):
✗ Branch 1 not taken.
✓ Branch 2 taken 2 times.
497 const std::size_t threads = std::clamp<std::size_t>(std::thread::hardware_concurrency() / 2, 1,
27
10/20
ernie::ParallelLoop<ernie::DiurnalTemperatureTable(ernie::RegolithProperties const&, int, int, std::vector<float, std::allocator<float> >, std::vector<float, std::allocator<float> >)::{lambda(unsigned long)#1}>(unsigned long, ernie::DiurnalTemperatureTable(ernie::RegolithProperties const&, int, int, std::vector<float, std::allocator<float> >, std::vector<float, std::allocator<float> >)::{lambda(unsigned long)#1} const&)::{lambda()#1}::operator()() const:
✗ Branch 0 not taken.
✓ Branch 1 taken 4 times.
void ernie::ParallelLoop<ernie::(anonymous namespace)::EncodeBlocks(ernie::TextureFormat, std::span<unsigned char const, 18446744073709551615ul>, unsigned int, unsigned int, std::byte*, bc7enc_compress_block_params const&)::{lambda(unsigned long)#1}>(unsigned long, ernie::(anonymous namespace)::EncodeBlocks(ernie::TextureFormat, std::span<unsigned char const, 18446744073709551615ul>, unsigned int, unsigned int, std::byte*, bc7enc_compress_block_params const&)::{lambda(unsigned long)#1} const&):
✗ Branch 0 not taken.
✓ Branch 1 taken 240 times.
void ernie::ParallelLoop<ernie::(anonymous namespace)::HalveRgba8(std::span<unsigned char const, 18446744073709551615ul>, unsigned int, unsigned int, bool)::{lambda(unsigned long)#1}>(unsigned long, ernie::(anonymous namespace)::HalveRgba8(std::span<unsigned char const, 18446744073709551615ul>, unsigned int, unsigned int, bool)::{lambda(unsigned long)#1} const&):
✗ Branch 0 not taken.
✓ Branch 1 taken 245 times.
void ernie::ParallelLoop<ernie::(anonymous namespace)::MakeDetailNoise(unsigned long)::{lambda(unsigned long)#1}>(unsigned long, ernie::(anonymous namespace)::MakeDetailNoise(unsigned long)::{lambda(unsigned long)#1} const&):
✗ Branch 0 not taken.
✓ Branch 1 taken 1 time.
void ernie::ParallelLoop<ernie::(anonymous namespace)::MakeShapeNoise(unsigned long)::{lambda(unsigned long)#1}>(unsigned long, ernie::(anonymous namespace)::MakeShapeNoise(unsigned long)::{lambda(unsigned long)#1} const&):
✗ Branch 0 not taken.
✓ Branch 1 taken 1 time.
void ernie::ParallelLoop<ernie::(anonymous namespace)::MakeTurbulenceMap(unsigned long)::{lambda(unsigned long)#1}>(unsigned long, ernie::(anonymous namespace)::MakeTurbulenceMap(unsigned long)::{lambda(unsigned long)#1} const&):
✗ Branch 0 not taken.
✓ Branch 1 taken 1 time.
void ernie::ParallelLoop<ernie::(anonymous namespace)::MakeWeatherMap(unsigned long)::{lambda(unsigned long)#1}>(unsigned long, ernie::(anonymous namespace)::MakeWeatherMap(unsigned long)::{lambda(unsigned long)#1} const&):
✗ Branch 0 not taken.
✓ Branch 1 taken 1 time.
void ernie::ParallelLoop<ernie::(anonymous namespace)::Parallel_AcceptsNoIterations_Test::TestBody()::{lambda(unsigned long)#1}>(unsigned long, ernie::(anonymous namespace)::Parallel_AcceptsNoIterations_Test::TestBody()::{lambda(unsigned long)#1} const&):
✓ Branch 0 taken 1 time.
✗ Branch 1 not taken.
void ernie::ParallelLoop<ernie::(anonymous namespace)::Parallel_RunsEveryIterationExactlyOnce_Test::TestBody()::{lambda(unsigned long)#1}>(unsigned long, ernie::(anonymous namespace)::Parallel_RunsEveryIterationExactlyOnce_Test::TestBody()::{lambda(unsigned long)#1} const&):
✗ Branch 0 not taken.
✓ Branch 1 taken 1 time.
void ernie::ParallelLoop<ernie::SimulateCloudTransport(ernie::DropletPhaseTable const&, ernie::CloudTransportOptions const&)::{lambda(unsigned long)#1}>(unsigned long, ernie::SimulateCloudTransport(ernie::DropletPhaseTable const&, ernie::CloudTransportOptions const&)::{lambda(unsigned long)#1} const&):
✗ Branch 0 not taken.
✓ Branch 1 taken 2 times.
497 std::max<std::size_t>(count, 1));
28 497 std::vector<std::thread> pool;
29
19/20
ernie::ParallelLoop<ernie::DiurnalTemperatureTable(ernie::RegolithProperties const&, int, int, std::vector<float, std::allocator<float> >, std::vector<float, std::allocator<float> >)::{lambda(unsigned long)#1}>(unsigned long, ernie::DiurnalTemperatureTable(ernie::RegolithProperties const&, int, int, std::vector<float, std::allocator<float> >, std::vector<float, std::allocator<float> >)::{lambda(unsigned long)#1} const&)::{lambda()#1}::operator()() const:
✓ Branch 0 taken 4 times.
✓ Branch 1 taken 4 times.
void ernie::ParallelLoop<ernie::(anonymous namespace)::EncodeBlocks(ernie::TextureFormat, std::span<unsigned char const, 18446744073709551615ul>, unsigned int, unsigned int, std::byte*, bc7enc_compress_block_params const&)::{lambda(unsigned long)#1}>(unsigned long, ernie::(anonymous namespace)::EncodeBlocks(ernie::TextureFormat, std::span<unsigned char const, 18446744073709551615ul>, unsigned int, unsigned int, std::byte*, bc7enc_compress_block_params const&)::{lambda(unsigned long)#1} const&):
✓ Branch 0 taken 141 times.
✓ Branch 1 taken 240 times.
void ernie::ParallelLoop<ernie::(anonymous namespace)::HalveRgba8(std::span<unsigned char const, 18446744073709551615ul>, unsigned int, unsigned int, bool)::{lambda(unsigned long)#1}>(unsigned long, ernie::(anonymous namespace)::HalveRgba8(std::span<unsigned char const, 18446744073709551615ul>, unsigned int, unsigned int, bool)::{lambda(unsigned long)#1} const&):
✓ Branch 0 taken 205 times.
✓ Branch 1 taken 245 times.
void ernie::ParallelLoop<ernie::(anonymous namespace)::MakeDetailNoise(unsigned long)::{lambda(unsigned long)#1}>(unsigned long, ernie::(anonymous namespace)::MakeDetailNoise(unsigned long)::{lambda(unsigned long)#1} const&):
✓ Branch 0 taken 1 time.
✓ Branch 1 taken 1 time.
void ernie::ParallelLoop<ernie::(anonymous namespace)::MakeShapeNoise(unsigned long)::{lambda(unsigned long)#1}>(unsigned long, ernie::(anonymous namespace)::MakeShapeNoise(unsigned long)::{lambda(unsigned long)#1} const&):
✓ Branch 0 taken 1 time.
✓ Branch 1 taken 1 time.
void ernie::ParallelLoop<ernie::(anonymous namespace)::MakeTurbulenceMap(unsigned long)::{lambda(unsigned long)#1}>(unsigned long, ernie::(anonymous namespace)::MakeTurbulenceMap(unsigned long)::{lambda(unsigned long)#1} const&):
✓ Branch 0 taken 1 time.
✓ Branch 1 taken 1 time.
void ernie::ParallelLoop<ernie::(anonymous namespace)::MakeWeatherMap(unsigned long)::{lambda(unsigned long)#1}>(unsigned long, ernie::(anonymous namespace)::MakeWeatherMap(unsigned long)::{lambda(unsigned long)#1} const&):
✓ Branch 0 taken 1 time.
✓ Branch 1 taken 1 time.
void ernie::ParallelLoop<ernie::(anonymous namespace)::Parallel_AcceptsNoIterations_Test::TestBody()::{lambda(unsigned long)#1}>(unsigned long, ernie::(anonymous namespace)::Parallel_AcceptsNoIterations_Test::TestBody()::{lambda(unsigned long)#1} const&):
✗ Branch 0 not taken.
✓ Branch 1 taken 1 time.
void ernie::ParallelLoop<ernie::(anonymous namespace)::Parallel_RunsEveryIterationExactlyOnce_Test::TestBody()::{lambda(unsigned long)#1}>(unsigned long, ernie::(anonymous namespace)::Parallel_RunsEveryIterationExactlyOnce_Test::TestBody()::{lambda(unsigned long)#1} const&):
✓ Branch 0 taken 1 time.
✓ Branch 1 taken 1 time.
void ernie::ParallelLoop<ernie::SimulateCloudTransport(ernie::DropletPhaseTable const&, ernie::CloudTransportOptions const&)::{lambda(unsigned long)#1}>(unsigned long, ernie::SimulateCloudTransport(ernie::DropletPhaseTable const&, ernie::CloudTransportOptions const&)::{lambda(unsigned long)#1} const&):
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 2 times.
854 for (std::size_t t = 1; t < threads; ++t) {
30
9/20
ernie::ParallelLoop<ernie::DiurnalTemperatureTable(ernie::RegolithProperties const&, int, int, std::vector<float, std::allocator<float> >, std::vector<float, std::allocator<float> >)::{lambda(unsigned long)#1}>(unsigned long, ernie::DiurnalTemperatureTable(ernie::RegolithProperties const&, int, int, std::vector<float, std::allocator<float> >, std::vector<float, std::allocator<float> >)::{lambda(unsigned long)#1} const&)::{lambda()#1}::operator()() const:
✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
void ernie::ParallelLoop<ernie::(anonymous namespace)::EncodeBlocks(ernie::TextureFormat, std::span<unsigned char const, 18446744073709551615ul>, unsigned int, unsigned int, std::byte*, bc7enc_compress_block_params const&)::{lambda(unsigned long)#1}>(unsigned long, ernie::(anonymous namespace)::EncodeBlocks(ernie::TextureFormat, std::span<unsigned char const, 18446744073709551615ul>, unsigned int, unsigned int, std::byte*, bc7enc_compress_block_params const&)::{lambda(unsigned long)#1} const&):
✓ Branch 1 taken 141 times.
✗ Branch 2 not taken.
void ernie::ParallelLoop<ernie::(anonymous namespace)::HalveRgba8(std::span<unsigned char const, 18446744073709551615ul>, unsigned int, unsigned int, bool)::{lambda(unsigned long)#1}>(unsigned long, ernie::(anonymous namespace)::HalveRgba8(std::span<unsigned char const, 18446744073709551615ul>, unsigned int, unsigned int, bool)::{lambda(unsigned long)#1} const&):
✓ Branch 1 taken 205 times.
✗ Branch 2 not taken.
void ernie::ParallelLoop<ernie::(anonymous namespace)::MakeDetailNoise(unsigned long)::{lambda(unsigned long)#1}>(unsigned long, ernie::(anonymous namespace)::MakeDetailNoise(unsigned long)::{lambda(unsigned long)#1} const&):
✓ Branch 1 taken 1 time.
✗ Branch 2 not taken.
void ernie::ParallelLoop<ernie::(anonymous namespace)::MakeShapeNoise(unsigned long)::{lambda(unsigned long)#1}>(unsigned long, ernie::(anonymous namespace)::MakeShapeNoise(unsigned long)::{lambda(unsigned long)#1} const&):
✓ Branch 1 taken 1 time.
✗ Branch 2 not taken.
void ernie::ParallelLoop<ernie::(anonymous namespace)::MakeTurbulenceMap(unsigned long)::{lambda(unsigned long)#1}>(unsigned long, ernie::(anonymous namespace)::MakeTurbulenceMap(unsigned long)::{lambda(unsigned long)#1} const&):
✓ Branch 1 taken 1 time.
✗ Branch 2 not taken.
void ernie::ParallelLoop<ernie::(anonymous namespace)::MakeWeatherMap(unsigned long)::{lambda(unsigned long)#1}>(unsigned long, ernie::(anonymous namespace)::MakeWeatherMap(unsigned long)::{lambda(unsigned long)#1} const&):
✓ Branch 1 taken 1 time.
✗ Branch 2 not taken.
void ernie::ParallelLoop<ernie::(anonymous namespace)::Parallel_AcceptsNoIterations_Test::TestBody()::{lambda(unsigned long)#1}>(unsigned long, ernie::(anonymous namespace)::Parallel_AcceptsNoIterations_Test::TestBody()::{lambda(unsigned long)#1} const&):
✗ Branch 1 not taken.
✗ Branch 2 not taken.
void ernie::ParallelLoop<ernie::(anonymous namespace)::Parallel_RunsEveryIterationExactlyOnce_Test::TestBody()::{lambda(unsigned long)#1}>(unsigned long, ernie::(anonymous namespace)::Parallel_RunsEveryIterationExactlyOnce_Test::TestBody()::{lambda(unsigned long)#1} const&):
✓ Branch 1 taken 1 time.
✗ Branch 2 not taken.
void ernie::ParallelLoop<ernie::SimulateCloudTransport(ernie::DropletPhaseTable const&, ernie::CloudTransportOptions const&)::{lambda(unsigned long)#1}>(unsigned long, ernie::SimulateCloudTransport(ernie::DropletPhaseTable const&, ernie::CloudTransportOptions const&)::{lambda(unsigned long)#1} const&):
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
357 pool.emplace_back(work);
31 }
32
7/14
ernie::ParallelLoop<ernie::DiurnalTemperatureTable(ernie::RegolithProperties const&, int, int, std::vector<float, std::allocator<float> >, std::vector<float, std::allocator<float> >)::{lambda(unsigned long)#1}>(unsigned long, ernie::DiurnalTemperatureTable(ernie::RegolithProperties const&, int, int, std::vector<float, std::allocator<float> >, std::vector<float, std::allocator<float> >)::{lambda(unsigned long)#1} const&)::{lambda()#1}::operator()() const:
✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
void ernie::ParallelLoop<ernie::(anonymous namespace)::EncodeBlocks(ernie::TextureFormat, std::span<unsigned char const, 18446744073709551615ul>, unsigned int, unsigned int, std::byte*, bc7enc_compress_block_params const&)::{lambda(unsigned long)#1}>(unsigned long, ernie::(anonymous namespace)::EncodeBlocks(ernie::TextureFormat, std::span<unsigned char const, 18446744073709551615ul>, unsigned int, unsigned int, std::byte*, bc7enc_compress_block_params const&)::{lambda(unsigned long)#1} const&):
✓ Branch 1 taken 240 times.
✗ Branch 2 not taken.
void ernie::ParallelLoop<ernie::(anonymous namespace)::MakeDetailNoise(unsigned long)::{lambda(unsigned long)#1}>(unsigned long, ernie::(anonymous namespace)::MakeDetailNoise(unsigned long)::{lambda(unsigned long)#1} const&):
✓ Branch 1 taken 1 time.
✗ Branch 2 not taken.
void ernie::ParallelLoop<ernie::(anonymous namespace)::MakeShapeNoise(unsigned long)::{lambda(unsigned long)#1}>(unsigned long, ernie::(anonymous namespace)::MakeShapeNoise(unsigned long)::{lambda(unsigned long)#1} const&):
✓ Branch 1 taken 1 time.
✗ Branch 2 not taken.
void ernie::ParallelLoop<ernie::(anonymous namespace)::MakeTurbulenceMap(unsigned long)::{lambda(unsigned long)#1}>(unsigned long, ernie::(anonymous namespace)::MakeTurbulenceMap(unsigned long)::{lambda(unsigned long)#1} const&):
✓ Branch 1 taken 1 time.
✗ Branch 2 not taken.
void ernie::ParallelLoop<ernie::(anonymous namespace)::MakeWeatherMap(unsigned long)::{lambda(unsigned long)#1}>(unsigned long, ernie::(anonymous namespace)::MakeWeatherMap(unsigned long)::{lambda(unsigned long)#1} const&):
✓ Branch 1 taken 1 time.
✗ Branch 2 not taken.
void ernie::ParallelLoop<ernie::SimulateCloudTransport(ernie::DropletPhaseTable const&, ernie::CloudTransportOptions const&)::{lambda(unsigned long)#1}>(unsigned long, ernie::SimulateCloudTransport(ernie::DropletPhaseTable const&, ernie::CloudTransportOptions const&)::{lambda(unsigned long)#1} const&):
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
497 work();
33
19/20
ernie::ParallelLoop<ernie::DiurnalTemperatureTable(ernie::RegolithProperties const&, int, int, std::vector<float, std::allocator<float> >, std::vector<float, std::allocator<float> >)::{lambda(unsigned long)#1}>(unsigned long, ernie::DiurnalTemperatureTable(ernie::RegolithProperties const&, int, int, std::vector<float, std::allocator<float> >, std::vector<float, std::allocator<float> >)::{lambda(unsigned long)#1} const&)::{lambda()#1}::operator()() const:
✓ Branch 0 taken 4 times.
✓ Branch 1 taken 4 times.
void ernie::ParallelLoop<ernie::(anonymous namespace)::EncodeBlocks(ernie::TextureFormat, std::span<unsigned char const, 18446744073709551615ul>, unsigned int, unsigned int, std::byte*, bc7enc_compress_block_params const&)::{lambda(unsigned long)#1}>(unsigned long, ernie::(anonymous namespace)::EncodeBlocks(ernie::TextureFormat, std::span<unsigned char const, 18446744073709551615ul>, unsigned int, unsigned int, std::byte*, bc7enc_compress_block_params const&)::{lambda(unsigned long)#1} const&):
✓ Branch 0 taken 141 times.
✓ Branch 1 taken 240 times.
void ernie::ParallelLoop<ernie::(anonymous namespace)::HalveRgba8(std::span<unsigned char const, 18446744073709551615ul>, unsigned int, unsigned int, bool)::{lambda(unsigned long)#1}>(unsigned long, ernie::(anonymous namespace)::HalveRgba8(std::span<unsigned char const, 18446744073709551615ul>, unsigned int, unsigned int, bool)::{lambda(unsigned long)#1} const&):
✓ Branch 0 taken 205 times.
✓ Branch 1 taken 245 times.
void ernie::ParallelLoop<ernie::(anonymous namespace)::MakeDetailNoise(unsigned long)::{lambda(unsigned long)#1}>(unsigned long, ernie::(anonymous namespace)::MakeDetailNoise(unsigned long)::{lambda(unsigned long)#1} const&):
✓ Branch 0 taken 1 time.
✓ Branch 1 taken 1 time.
void ernie::ParallelLoop<ernie::(anonymous namespace)::MakeShapeNoise(unsigned long)::{lambda(unsigned long)#1}>(unsigned long, ernie::(anonymous namespace)::MakeShapeNoise(unsigned long)::{lambda(unsigned long)#1} const&):
✓ Branch 0 taken 1 time.
✓ Branch 1 taken 1 time.
void ernie::ParallelLoop<ernie::(anonymous namespace)::MakeTurbulenceMap(unsigned long)::{lambda(unsigned long)#1}>(unsigned long, ernie::(anonymous namespace)::MakeTurbulenceMap(unsigned long)::{lambda(unsigned long)#1} const&):
✓ Branch 0 taken 1 time.
✓ Branch 1 taken 1 time.
void ernie::ParallelLoop<ernie::(anonymous namespace)::MakeWeatherMap(unsigned long)::{lambda(unsigned long)#1}>(unsigned long, ernie::(anonymous namespace)::MakeWeatherMap(unsigned long)::{lambda(unsigned long)#1} const&):
✓ Branch 0 taken 1 time.
✓ Branch 1 taken 1 time.
void ernie::ParallelLoop<ernie::(anonymous namespace)::Parallel_AcceptsNoIterations_Test::TestBody()::{lambda(unsigned long)#1}>(unsigned long, ernie::(anonymous namespace)::Parallel_AcceptsNoIterations_Test::TestBody()::{lambda(unsigned long)#1} const&):
✗ Branch 0 not taken.
✓ Branch 1 taken 1 time.
void ernie::ParallelLoop<ernie::(anonymous namespace)::Parallel_RunsEveryIterationExactlyOnce_Test::TestBody()::{lambda(unsigned long)#1}>(unsigned long, ernie::(anonymous namespace)::Parallel_RunsEveryIterationExactlyOnce_Test::TestBody()::{lambda(unsigned long)#1} const&):
✓ Branch 0 taken 1 time.
✓ Branch 1 taken 1 time.
void ernie::ParallelLoop<ernie::SimulateCloudTransport(ernie::DropletPhaseTable const&, ernie::CloudTransportOptions const&)::{lambda(unsigned long)#1}>(unsigned long, ernie::SimulateCloudTransport(ernie::DropletPhaseTable const&, ernie::CloudTransportOptions const&)::{lambda(unsigned long)#1} const&):
✓ Branch 0 taken 2 times.
✓ Branch 1 taken 2 times.
854 for (std::thread& thread : pool) {
34
9/20
ernie::ParallelLoop<ernie::DiurnalTemperatureTable(ernie::RegolithProperties const&, int, int, std::vector<float, std::allocator<float> >, std::vector<float, std::allocator<float> >)::{lambda(unsigned long)#1}>(unsigned long, ernie::DiurnalTemperatureTable(ernie::RegolithProperties const&, int, int, std::vector<float, std::allocator<float> >, std::vector<float, std::allocator<float> >)::{lambda(unsigned long)#1} const&)::{lambda()#1}::operator()() const:
✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
void ernie::ParallelLoop<ernie::(anonymous namespace)::EncodeBlocks(ernie::TextureFormat, std::span<unsigned char const, 18446744073709551615ul>, unsigned int, unsigned int, std::byte*, bc7enc_compress_block_params const&)::{lambda(unsigned long)#1}>(unsigned long, ernie::(anonymous namespace)::EncodeBlocks(ernie::TextureFormat, std::span<unsigned char const, 18446744073709551615ul>, unsigned int, unsigned int, std::byte*, bc7enc_compress_block_params const&)::{lambda(unsigned long)#1} const&):
✓ Branch 1 taken 141 times.
✗ Branch 2 not taken.
void ernie::ParallelLoop<ernie::(anonymous namespace)::HalveRgba8(std::span<unsigned char const, 18446744073709551615ul>, unsigned int, unsigned int, bool)::{lambda(unsigned long)#1}>(unsigned long, ernie::(anonymous namespace)::HalveRgba8(std::span<unsigned char const, 18446744073709551615ul>, unsigned int, unsigned int, bool)::{lambda(unsigned long)#1} const&):
✓ Branch 1 taken 205 times.
✗ Branch 2 not taken.
void ernie::ParallelLoop<ernie::(anonymous namespace)::MakeDetailNoise(unsigned long)::{lambda(unsigned long)#1}>(unsigned long, ernie::(anonymous namespace)::MakeDetailNoise(unsigned long)::{lambda(unsigned long)#1} const&):
✓ Branch 1 taken 1 time.
✗ Branch 2 not taken.
void ernie::ParallelLoop<ernie::(anonymous namespace)::MakeShapeNoise(unsigned long)::{lambda(unsigned long)#1}>(unsigned long, ernie::(anonymous namespace)::MakeShapeNoise(unsigned long)::{lambda(unsigned long)#1} const&):
✓ Branch 1 taken 1 time.
✗ Branch 2 not taken.
void ernie::ParallelLoop<ernie::(anonymous namespace)::MakeTurbulenceMap(unsigned long)::{lambda(unsigned long)#1}>(unsigned long, ernie::(anonymous namespace)::MakeTurbulenceMap(unsigned long)::{lambda(unsigned long)#1} const&):
✓ Branch 1 taken 1 time.
✗ Branch 2 not taken.
void ernie::ParallelLoop<ernie::(anonymous namespace)::MakeWeatherMap(unsigned long)::{lambda(unsigned long)#1}>(unsigned long, ernie::(anonymous namespace)::MakeWeatherMap(unsigned long)::{lambda(unsigned long)#1} const&):
✓ Branch 1 taken 1 time.
✗ Branch 2 not taken.
void ernie::ParallelLoop<ernie::(anonymous namespace)::Parallel_AcceptsNoIterations_Test::TestBody()::{lambda(unsigned long)#1}>(unsigned long, ernie::(anonymous namespace)::Parallel_AcceptsNoIterations_Test::TestBody()::{lambda(unsigned long)#1} const&):
✗ Branch 1 not taken.
✗ Branch 2 not taken.
void ernie::ParallelLoop<ernie::(anonymous namespace)::Parallel_RunsEveryIterationExactlyOnce_Test::TestBody()::{lambda(unsigned long)#1}>(unsigned long, ernie::(anonymous namespace)::Parallel_RunsEveryIterationExactlyOnce_Test::TestBody()::{lambda(unsigned long)#1} const&):
✓ Branch 1 taken 1 time.
✗ Branch 2 not taken.
void ernie::ParallelLoop<ernie::SimulateCloudTransport(ernie::DropletPhaseTable const&, ernie::CloudTransportOptions const&)::{lambda(unsigned long)#1}>(unsigned long, ernie::SimulateCloudTransport(ernie::DropletPhaseTable const&, ernie::CloudTransportOptions const&)::{lambda(unsigned long)#1} const&):
✓ Branch 1 taken 2 times.
✗ Branch 2 not taken.
357 thread.join();
35 }
36 497 }
37
38 } // namespace ernie
39