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;
|
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 *
|
static inline nir_ssa_def *
|
||||||
nir_channel(nir_builder *b, nir_ssa_def *def, unsigned c)
|
nir_channel(nir_builder *b, nir_ssa_def *def, unsigned c)
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user