Zig 0.17.0-dev (Split by item)

This is an example of documentation generated by ZigDoc, an alternative to Zig's built-in Auto Doc feature. See also examples in other modes/formats. The project being documented here (as the example) is the Zig library itself.

compressSubtreeToParentNode

blake3.compressSubtreeToParentNode
fn compressSubtreeToParentNode(input: []const u8, key: [8]u32, chunk_counter: u64, flags: Flags, out: *[2 * Blake3.digest_length]u8) void

File

lib/std/crypto/blake3.zig:656

Code

fn compressSubtreeToParentNode(input: []const u8, key: [8]u32, chunk_counter: u64, flags: Flags, out: *[2 * Blake3.digest_length]u8) void {
    var cv_array: [max_simd_degree_or_2 * Blake3.digest_length]u8 = undefined;
    var num_cvs = compressSubtreeWide(input, key, chunk_counter, flags, &cv_array);

    if (max_simd_degree_or_2 > 2) {
        var out_array: [max_simd_degree_or_2 * Blake3.digest_length / 2]u8 = undefined;
        while (num_cvs > 2) {
            num_cvs = compressParentsParallel(&cv_array, num_cvs, key, flags, &out_array);
            @memcpy(cv_array[0 .. num_cvs * Blake3.digest_length], out_array[0 .. num_cvs * Blake3.digest_length]);
        }
    }

    @memcpy(out, cv_array[0 .. 2 * Blake3.digest_length]);
}