[Mesa-dev] [PATCH 1/4] nir/builder: Add bany_inequal and bany helpers.
Alejandro Piñeiro
apinheiro at igalia.com
Wed Aug 17 19:30:40 UTC 2016
Reviewed-by: Alejandro Piñeiro <apinheiro at igalia.com>
On 17/08/16 16:15, Kenneth Graunke wrote:
> 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 at lists.freedesktop.org
> Signed-off-by: Kenneth Graunke <kenneth at whitecape.org>
> ---
> src/compiler/nir/nir_builder.h | 19 +++++++++++++++++++
> 1 file changed, 19 insertions(+)
>
> diff --git a/src/compiler/nir/nir_builder.h b/src/compiler/nir/nir_builder.h
> index 435582a..affa29c 100644
> --- a/src/compiler/nir/nir_builder.h
> +++ b/src/compiler/nir/nir_builder.h
> @@ -318,6 +318,25 @@ nir_fdot(nir_builder *build, nir_ssa_def *src0, nir_ssa_def *src1)
> }
>
> 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)
> {
> unsigned swizzle[4] = {c, c, c, c};
>
--
Alejandro Piñeiro <apinheiro at igalia.com>
More information about the mesa-dev
mailing list