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.
Zig › std/ › compress/ › flate/ › Compress.zig › clenHlen
clenHlen
Compress.clenHlen
fn clenHlen (freqs : [19 ]u16 ) u4
File
Code
fn clenHlen (freqs : [19 ]u16 ) u4 {
if (builtin .mode != .small and (std .simd .suggestVectorLength (u16 ) orelse 1 ) >= 8 ) {
const V = @Vector (16 , u16 );
const hlen_mul : V = comptime m : {
var hlen_mul : [16 ]u16 = undefined ;
for (token .codegen_order [3 ..], 0 ..) |i , hlen | {
hlen_mul [i ] = hlen ;
}
break :m hlen_mul ;
};
const encoded = freqs [0 ..16 ].* != @as (V , @splat (0 ));
return @intCast (@reduce (.Max , @intFromBool (encoded ) * hlen_mul ));
} else {
var max : u4 = 0 ;
for (token .codegen_order [4 ..], 1 ..) |i , len | {
max = if (freqs [i ] == 0 ) max else @intCast (len );
}
return max ;
}
}