[Mesa-dev] [PATCH] nir/search: handle explicitly sized sources in match_value

Connor Abbott cwabbott0 at gmail.com
Fri May 8 09:46:56 PDT 2015


Makes sense.

Reviewed-by: Connor Abbott <cwabbott0 at gmail.com>

On Fri, May 8, 2015 at 11:38 AM, Jason Ekstrand <jason at jlekstrand.net> wrote:
> Previously, this case was being handled in match_expression prior to
> calling match_value.  However, there is really no good reason for this
> given that match_value has all of the information it needs.  Also, they
> weren't being handled properly in the commutative case and putting it in
> match_value gives us that for free.
>
> Cc: Connor Abbott <cwabbott0 at gmail.com>
> ---
>  src/glsl/nir/nir_search.c | 16 ++++++++--------
>  1 file changed, 8 insertions(+), 8 deletions(-)
>
> diff --git a/src/glsl/nir/nir_search.c b/src/glsl/nir/nir_search.c
> index 5ba0160..821b86d 100644
> --- a/src/glsl/nir/nir_search.c
> +++ b/src/glsl/nir/nir_search.c
> @@ -73,6 +73,14 @@ match_value(const nir_search_value *value, nir_alu_instr *instr, unsigned src,
>  {
>     uint8_t new_swizzle[4];
>
> +   /* If the source is an explicitly sized source, then we need to reset
> +    * both the number of components and the swizzle.
> +    */
> +   if (nir_op_infos[instr->op].input_sizes[src] != 0) {
> +      num_components = nir_op_infos[instr->op].input_sizes[src];
> +      swizzle = identity_swizzle;
> +   }
> +
>     for (int i = 0; i < num_components; ++i)
>        new_swizzle[i] = instr->src[src].swizzle[swizzle[i]];
>
> @@ -200,14 +208,6 @@ match_expression(const nir_search_expression *expr, nir_alu_instr *instr,
>
>     bool matched = true;
>     for (unsigned i = 0; i < nir_op_infos[instr->op].num_inputs; i++) {
> -      /* If the source is an explicitly sized source, then we need to reset
> -       * both the number of components and the swizzle.
> -       */
> -      if (nir_op_infos[instr->op].input_sizes[i] != 0) {
> -         num_components = nir_op_infos[instr->op].input_sizes[i];
> -         swizzle = identity_swizzle;
> -      }
> -
>        if (!match_value(expr->srcs[i], instr, i, num_components,
>                         swizzle, state)) {
>           matched = false;
> --
> 2.4.0
>


More information about the mesa-dev mailing list