49b3118302
Without this, we replace vote_ieq(b) with vote_ieq(u2u32(b)) which is wonky because we're doing a u2u on a 1-bit type. With this, we now replace it with vote_ieq(b2b32(b)). For other subgroup ops, we replace things like *scan[op](b) with *scan[op](b2b32(b)). For scan ops, this assumes that b2b1(op(b1b32(x), b2b32(y))) = op(x, y) for all of the ops iand, ior, and ixor. This is true on all the back-ends I'm aware of. Reviewed-by: Daniel Schürmann <daniel@schuermann.dev> Reviewed-by: Timur Kristóf <timur.kristof@gmail.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25894>