[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