nir/builder: Add bany_inequal and bany helpers.
The first simply picks the bany_inequal[234] opcodes based on the SSA def's number of components. The latter implicitly compares with zero to achieve the same semantics of GLSL's any(). Cc: mesa-stable@lists.freedesktop.org Signed-off-by: Kenneth Graunke <kenneth@whitecape.org> Reviewed-by: Alejandro Piñeiro <apinheiro@igalia.com>
This commit is contained in:
@@ -317,6 +317,25 @@ nir_fdot(nir_builder *build, nir_ssa_def *src0, nir_ssa_def *src1)
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static inline nir_ssa_def *
|
||||
nir_bany_inequal(nir_builder *b, nir_ssa_def *src0, nir_ssa_def *src1)
|
||||
{
|
||||
switch (src0->num_components) {
|
||||
case 1: return nir_ine(b, src0, src1);
|
||||
case 2: return nir_bany_inequal2(b, src0, src1);
|
||||
case 3: return nir_bany_inequal3(b, src0, src1);
|
||||
case 4: return nir_bany_inequal4(b, src0, src1);
|
||||
default:
|
||||
unreachable("bad component size");
|
||||
}
|
||||
}
|
||||
|
||||
static inline nir_ssa_def *
|
||||
nir_bany(nir_builder *b, nir_ssa_def *src)
|
||||
{
|
||||
return nir_bany_inequal(b, src, nir_imm_int(b, 0));
|
||||
}
|
||||
|
||||
static inline nir_ssa_def *
|
||||
nir_channel(nir_builder *b, nir_ssa_def *def, unsigned c)
|
||||
{
|
||||
|
Reference in New Issue
Block a user