Skip to documentation
SLOP

tiny.simd.allEqual

Reference tiny.simd allEqual

Defined in algo.

Returns whether every lane of input equals value, as std.mem.allEqual does.

Called byCallsNo direct callsprivate sourcelib.simd.src.algoverifyAllTypeAlgorithmsprivate sourcelib.simd.src.algoverifyUniformSpanalgoallEqual
Static calls · unresolved targets: 0 · external targets: 0.

Source

Source: lib/simd/src/algo.zig:148

zig
/// Returns whether every lane of `input` equals `value`, as/// `std.mem.allEqual` does. Whole vectors compare with the broadcast value,/// and the last vector overlaps lanes already compared. A span shorter than/// a vector compares lane by lane.pub fn allEqual(comptime D: type, input: []const D.Lane, value: D.Lane) bool {    if (input.len < D.lane_count) {        for (input) |lane| {            if (lane != value) return false;        }        return true;    }    const broadcast: D.Vector = @splat(value);    const last = input.len - D.lane_count;    var index: usize = 0;    while (index < last) : (index += D.lane_count) {        const lanes: D.Vector = input[index..][0..D.lane_count].*;        if (@reduce(.Or, lanes != broadcast)) return false;    }    std.debug.assert(index >= last);    std.debug.assert(index - last < D.lane_count);    const lanes: D.Vector = input[last..][0..D.lane_count].*;    return !@reduce(.Or, lanes != broadcast);}

Source: lib/simd/src/root.zig:462

zig
pub const allEqual = algo.allEqual;

Audit

Definitions1
Public names2
Members0
Version26.7.0
Revisiondaab053ee433