[Mesa-dev] [PATCH] nir/lower_vec_to_movs: Don't coalesce the mmove when src and dest are the same reg

Tapani Pälli tapani.palli at intel.com
Fri Mar 23 11:55:15 UTC 2018


ping Jason ..

On 22.03.2018 13:30, vadym.shovkoplias wrote:
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=105440
> Fixes: 2458ea95c56 "nir/lower_vec_to_movs: Coalesce movs on-the-fly when possible"
> Signed-off-by: Andriy Khulap <andriy.khulap at globallogic.com>
> Signed-off-by: Vadym Shovkoplias <vadym.shovkoplias at globallogic.com>
> ---
>   src/compiler/nir/nir_lower_vec_to_movs.c | 7 ++++++-
>   1 file changed, 6 insertions(+), 1 deletion(-)
> 
> diff --git a/src/compiler/nir/nir_lower_vec_to_movs.c b/src/compiler/nir/nir_lower_vec_to_movs.c
> index 711ddd3..4758f7d 100644
> --- a/src/compiler/nir/nir_lower_vec_to_movs.c
> +++ b/src/compiler/nir/nir_lower_vec_to_movs.c
> @@ -166,9 +166,14 @@ try_coalesce(nir_alu_instr *vec, unsigned start_idx)
>         /* If we are going to reswizzle the instruction, we can't have any
>          * non-per-component sources either.
>          */
> -      for (unsigned j = 0; j < nir_op_infos[src_alu->op].num_inputs; j++)
> +      for (unsigned j = 0; j < nir_op_infos[src_alu->op].num_inputs; j++) {
>            if (nir_op_infos[src_alu->op].input_sizes[j] != 0)
>               return 0;
> +
> +         /* Don't coalesce the mmove when src and dest are the same reg */
> +         if (src_matches_dest_reg(&vec->dest.dest, &src_alu->src[j].src))
> +            return 0;
> +      }
>      }
>   
>      /* Stash off all of the ALU instruction's swizzles. */
> 


More information about the mesa-dev mailing list