[Mesa-dev] [PATCH 3/3] nir/opt_constant_folding: fix folding of 8 and 16 bit ints

Jason Ekstrand jason at jlekstrand.net
Wed Apr 25 12:32:13 UTC 2018


Rb

On April 25, 2018 05:14:20 Karol Herbst <kherbst at redhat.com> wrote:

> Signed-off-by: Karol Herbst <kherbst at redhat.com>
> ---
> src/compiler/nir/nir_opt_constant_folding.c | 14 ++++++++++++--
> 1 file changed, 12 insertions(+), 2 deletions(-)
>
> diff --git a/src/compiler/nir/nir_opt_constant_folding.c 
> b/src/compiler/nir/nir_opt_constant_folding.c
> index d6be807b3dc..a848b145874 100644
> --- a/src/compiler/nir/nir_opt_constant_folding.c
> +++ b/src/compiler/nir/nir_opt_constant_folding.c
> @@ -76,10 +76,20 @@ constant_fold_alu_instr(nir_alu_instr *instr, void 
> *mem_ctx)
>
>       for (unsigned j = 0; j < nir_ssa_alu_instr_src_components(instr, i);
>            j++) {
> -         if (load_const->def.bit_size == 64)
> +         switch(load_const->def.bit_size) {
> +         case 64:
>             src[i].u64[j] = load_const->value.u64[instr->src[i].swizzle[j]];
> -         else
> +            break;
> +         case 32:
>             src[i].u32[j] = load_const->value.u32[instr->src[i].swizzle[j]];
> +            break;
> +         case 16:
> +            src[i].u16[j] = load_const->value.u16[instr->src[i].swizzle[j]];
> +            break;
> +         case 8:
> +            src[i].u8[j] = load_const->value.u8[instr->src[i].swizzle[j]];
> +            break;
> +         }
>       }
>
>       /* We shouldn't have any source modifiers in the optimization loop. */
> --
> 2.14.3





More information about the mesa-dev mailing list