feature. See also
. The project being documented here (as the example) is the Zig library itself.
blake3.compressParentsParallel
fn compressParentsParallel(child_chaining_values: []const u8, num_chaining_values: usize, key: [8]u32, flags: Flags, out: []u8) usize
File
Code
fn compressParentsParallel(child_chaining_values: []const u8, num_chaining_values: usize, key: [8]u32, flags: Flags, out: []u8) usize {
var parents_array: [max_simd_degree_or_2][*]const u8 = undefined;
var parents_array_len: usize = 0;
while (num_chaining_values - (2 * parents_array_len) >= 2) {
parents_array[parents_array_len] = child_chaining_values[2 * parents_array_len * Blake3.digest_length ..].ptr;
parents_array_len += 1;
}
hashMany(parents_array[0..parents_array_len], parents_array_len, 1, key, 0, false, flags.with(.{ .parent = true }), .{}, .{}, out);
if (num_chaining_values > 2 * parents_array_len) {
@memcpy(out[parents_array_len * Blake3.digest_length ..][0..Blake3.digest_length], child_chaining_values[2 * parents_array_len * Blake3.digest_length ..][0..Blake3.digest_length]);
return parents_array_len + 1;
} else {
return parents_array_len;
}
}