File: blake3_tbb.cpp

package info (click to toggle)
rust-blake3 1.8.1-1
  • links: PTS, VCS
  • area: main
  • in suites: sid, trixie
  • size: 2,056 kB
  • sloc: asm: 28,570; ansic: 4,241; python: 70; cpp: 29; makefile: 2
file content (37 lines) | stat: -rw-r--r-- 1,301 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#include <cstddef>
#include <cstdint>

#include <oneapi/tbb/parallel_invoke.h>

#include "blake3_impl.h"

static_assert(TBB_USE_EXCEPTIONS == 0,
              "This file should be compiled with C++ exceptions disabled.");

extern "C" void blake3_compress_subtree_wide_join_tbb(
    // shared params
    const uint32_t key[8], uint8_t flags, bool use_tbb,
    // left-hand side params
    const uint8_t *l_input, size_t l_input_len, uint64_t l_chunk_counter,
    uint8_t *l_cvs, size_t *l_n,
    // right-hand side params
    const uint8_t *r_input, size_t r_input_len, uint64_t r_chunk_counter,
    uint8_t *r_cvs, size_t *r_n) noexcept {
  if (!use_tbb) {
    *l_n = blake3_compress_subtree_wide(l_input, l_input_len, key,
                                        l_chunk_counter, flags, l_cvs, use_tbb);
    *r_n = blake3_compress_subtree_wide(r_input, r_input_len, key,
                                        r_chunk_counter, flags, r_cvs, use_tbb);
    return;
  }

  oneapi::tbb::parallel_invoke(
      [=]() {
        *l_n = blake3_compress_subtree_wide(
            l_input, l_input_len, key, l_chunk_counter, flags, l_cvs, use_tbb);
      },
      [=]() {
        *r_n = blake3_compress_subtree_wide(
            r_input, r_input_len, key, r_chunk_counter, flags, r_cvs, use_tbb);
      });
}