[Mesa-dev] [PATCH 2/2] radv/ac: introduce i1true/i1false to contxet.

Bas Nieuwenhuizen bas at basnieuwenhuizen.nl
Mon Mar 6 08:02:53 UTC 2017


If you fix the title, this series is

Reviewed-by: Bas Nieuwenhuizen <bas at basnieuwenhuizen.nl>

On Mon, Mar 6, 2017 at 8:19 AM, Dave Airlie <airlied at gmail.com> wrote:
> From: Dave Airlie <airlied at redhat.com>
>
> This uses these in a few places, and fixes one or two
> cases which were using da as 32-bit instead of bool.
>
> Signed-off-by: Dave Airlie <airlied at redhat.com>
> ---
>  src/amd/common/ac_nir_to_llvm.c | 65 +++++++++++++++++++++--------------------
>  1 file changed, 33 insertions(+), 32 deletions(-)
>
> diff --git a/src/amd/common/ac_nir_to_llvm.c b/src/amd/common/ac_nir_to_llvm.c
> index b3fae26..e472408 100644
> --- a/src/amd/common/ac_nir_to_llvm.c
> +++ b/src/amd/common/ac_nir_to_llvm.c
> @@ -122,6 +122,8 @@ struct nir_to_llvm_context {
>         LLVMTypeRef v16i8;
>         LLVMTypeRef voidt;
>
> +       LLVMValueRef i1true;
> +       LLVMValueRef i1false;
>         LLVMValueRef i32zero;
>         LLVMValueRef i32one;
>         LLVMValueRef f32zero;
> @@ -688,6 +690,8 @@ static void setup_types(struct nir_to_llvm_context *ctx)
>         ctx->v4f32 = LLVMVectorType(ctx->f32, 4);
>         ctx->v16i8 = LLVMVectorType(ctx->i8, 16);
>
> +       ctx->i1false = LLVMConstInt(ctx->i1, 0, false);
> +       ctx->i1true = LLVMConstInt(ctx->i1, 1, false);
>         ctx->i32zero = LLVMConstInt(ctx->i32, 0, false);
>         ctx->i32one = LLVMConstInt(ctx->i32, 1, false);
>         ctx->f32zero = LLVMConstReal(ctx->f32, 0.0);
> @@ -1835,8 +1839,8 @@ static void visit_store_ssbo(struct nir_to_llvm_context *ctx,
>
>         params[1] = get_src(ctx, instr->src[1]);
>         params[2] = LLVMConstInt(ctx->i32, 0, false); /* vindex */
> -       params[4] = LLVMConstInt(ctx->i1, 0, false);  /* glc */
> -       params[5] = LLVMConstInt(ctx->i1, 0, false);  /* slc */
> +       params[4] = ctx->i1false;  /* glc */
> +       params[5] = ctx->i1false;  /* slc */
>
>         if (components_32bit > 1)
>                 data_type = LLVMVectorType(ctx->f32, components_32bit);
> @@ -1920,7 +1924,7 @@ static LLVMValueRef visit_atomic_ssbo(struct nir_to_llvm_context *ctx,
>         params[arg_count++] = get_src(ctx, instr->src[0]);
>         params[arg_count++] = LLVMConstInt(ctx->i32, 0, false); /* vindex */
>         params[arg_count++] = get_src(ctx, instr->src[1]);      /* voffset */
> -       params[arg_count++] = LLVMConstInt(ctx->i1, 0, false);  /* slc */
> +       params[arg_count++] = ctx->i1false;  /* slc */
>
>         switch (instr->intrinsic) {
>         case nir_intrinsic_ssbo_atomic_add:
> @@ -1994,8 +1998,8 @@ static LLVMValueRef visit_load_buffer(struct nir_to_llvm_context *ctx,
>                         get_src(ctx, instr->src[0]),
>                         LLVMConstInt(ctx->i32, 0, false),
>                         offset,
> -                       LLVMConstInt(ctx->i1, 0, false),
> -                       LLVMConstInt(ctx->i1, 0, false),
> +                       ctx->i1false,
> +                       ctx->i1false,
>                 };
>
>                 results[i] = ac_build_intrinsic(&ctx->ac, load_name, data_type, params, 5, 0);
> @@ -2415,9 +2419,9 @@ static LLVMValueRef adjust_sample_index_using_fmask(struct nir_to_llvm_context *
>                                                     LLVMValueRef fmask_desc_ptr)
>  {
>         LLVMValueRef fmask_load_address[4], params[7];
> -       LLVMValueRef glc = LLVMConstInt(ctx->i1, 0, false);
> -       LLVMValueRef slc = LLVMConstInt(ctx->i1, 0, false);
> -       LLVMValueRef da = coord_z ? ctx->i32one : ctx->i32zero;
> +       LLVMValueRef glc = ctx->i1false;
> +       LLVMValueRef slc = ctx->i1false;
> +       LLVMValueRef da = coord_z ? ctx->i1true : ctx->i1false;
>         LLVMValueRef res;
>         char intrinsic_name[64];
>
> @@ -2431,7 +2435,7 @@ static LLVMValueRef adjust_sample_index_using_fmask(struct nir_to_llvm_context *
>         params[0] = ac_build_gather_values(&ctx->ac, fmask_load_address, coord_z ? 4 : 2);
>         params[1] = fmask_desc_ptr;
>         params[2] = LLVMConstInt(ctx->i32, 15, false); /* dmask */
> -       LLVMValueRef lwe = LLVMConstInt(ctx->i1, 0, false);
> +       LLVMValueRef lwe = ctx->i1false;
>         params[3] = glc;
>         params[4] = slc;
>         params[5] = lwe;
> @@ -2578,8 +2582,8 @@ static LLVMValueRef visit_image_load(struct nir_to_llvm_context *ctx,
>                 params[1] = LLVMBuildExtractElement(ctx->builder, get_src(ctx, instr->src[0]),
>                                                     LLVMConstInt(ctx->i32, 0, false), ""); /* vindex */
>                 params[2] = LLVMConstInt(ctx->i32, 0, false); /* voffset */
> -               params[3] = LLVMConstInt(ctx->i1, 0, false);  /* glc */
> -               params[4] = LLVMConstInt(ctx->i1, 0, false);  /* slc */
> +               params[3] = ctx->i1false;  /* glc */
> +               params[4] = ctx->i1false;  /* slc */
>                 res = ac_build_intrinsic(&ctx->ac, "llvm.amdgcn.buffer.load.format.v4f32", ctx->v4f32,
>                                          params, 5, 0);
>
> @@ -2588,20 +2592,20 @@ static LLVMValueRef visit_image_load(struct nir_to_llvm_context *ctx,
>         } else {
>                 bool is_da = glsl_sampler_type_is_array(type) ||
>                              glsl_get_sampler_dim(type) == GLSL_SAMPLER_DIM_CUBE;
> -               LLVMValueRef da = is_da ? ctx->i32one : ctx->i32zero;
> -               LLVMValueRef glc = LLVMConstInt(ctx->i1, 0, false);
> -               LLVMValueRef slc = LLVMConstInt(ctx->i1, 0, false);
> +               LLVMValueRef da = is_da ? ctx->i1true : ctx->i1false;
> +               LLVMValueRef glc = ctx->i1false;
> +               LLVMValueRef slc = ctx->i1false;
>
>                 params[0] = get_image_coords(ctx, instr);
>                 params[1] = get_sampler_desc(ctx, instr->variables[0], DESC_IMAGE);
>                 params[2] = LLVMConstInt(ctx->i32, 15, false); /* dmask */
>                 if (HAVE_LLVM <= 0x0309) {
> -                       params[3] = LLVMConstInt(ctx->i1, 0, false);  /* r128 */
> +                       params[3] = ctx->i1false;  /* r128 */
>                         params[4] = da;
>                         params[5] = glc;
>                         params[6] = slc;
>                 } else {
> -                       LLVMValueRef lwe = LLVMConstInt(ctx->i1, 0, false);
> +                       LLVMValueRef lwe = ctx->i1false;
>                         params[3] = glc;
>                         params[4] = slc;
>                         params[5] = lwe;
> @@ -2626,8 +2630,6 @@ static void visit_image_store(struct nir_to_llvm_context *ctx,
>         LLVMValueRef params[8];
>         char intrinsic_name[64];
>         const nir_variable *var = instr->variables[0]->var;
> -       LLVMValueRef i1false = LLVMConstInt(ctx->i1, 0, 0);
> -       LLVMValueRef i1true = LLVMConstInt(ctx->i1, 1, 0);
>         const struct glsl_type *type = glsl_without_array(var->type);
>
>         if (ctx->stage == MESA_SHADER_FRAGMENT)
> @@ -2639,28 +2641,28 @@ static void visit_image_store(struct nir_to_llvm_context *ctx,
>                 params[2] = LLVMBuildExtractElement(ctx->builder, get_src(ctx, instr->src[0]),
>                                                     LLVMConstInt(ctx->i32, 0, false), ""); /* vindex */
>                 params[3] = LLVMConstInt(ctx->i32, 0, false); /* voffset */
> -               params[4] = i1false;  /* glc */
> -               params[5] = i1false;  /* slc */
> +               params[4] = ctx->i1false;  /* glc */
> +               params[5] = ctx->i1false;  /* slc */
>                 ac_build_intrinsic(&ctx->ac, "llvm.amdgcn.buffer.store.format.v4f32", ctx->voidt,
>                                    params, 6, 0);
>         } else {
>                 bool is_da = glsl_sampler_type_is_array(type) ||
>                              glsl_get_sampler_dim(type) == GLSL_SAMPLER_DIM_CUBE;
> -               LLVMValueRef da = is_da ? i1true : i1false;
> -               LLVMValueRef glc = i1false;
> -               LLVMValueRef slc = i1false;
> +               LLVMValueRef da = is_da ? ctx->i1true : ctx->i1false;
> +               LLVMValueRef glc = ctx->i1false;
> +               LLVMValueRef slc = ctx->i1false;
>
>                 params[0] = to_float(ctx, get_src(ctx, instr->src[2]));
>                 params[1] = get_image_coords(ctx, instr); /* coords */
>                 params[2] = get_sampler_desc(ctx, instr->variables[0], DESC_IMAGE);
>                 params[3] = LLVMConstInt(ctx->i32, 15, false); /* dmask */
>                 if (HAVE_LLVM <= 0x0309) {
> -                       params[4] = i1false;  /* r128 */
> +                       params[4] = ctx->i1false;  /* r128 */
>                         params[5] = da;
>                         params[6] = glc;
>                         params[7] = slc;
>                 } else {
> -                       LLVMValueRef lwe = i1false;
> +                       LLVMValueRef lwe = ctx->i1false;
>                         params[4] = glc;
>                         params[5] = slc;
>                         params[6] = lwe;
> @@ -2685,8 +2687,7 @@ static LLVMValueRef visit_image_atomic(struct nir_to_llvm_context *ctx,
>         LLVMValueRef params[6];
>         int param_count = 0;
>         const nir_variable *var = instr->variables[0]->var;
> -       LLVMValueRef i1false = LLVMConstInt(ctx->i1, 0, 0);
> -       LLVMValueRef i1true = LLVMConstInt(ctx->i1, 1, 0);
> +
>         const char *base_name = "llvm.amdgcn.image.atomic";
>         const char *atomic_name;
>         LLVMValueRef coords;
> @@ -2705,17 +2706,17 @@ static LLVMValueRef visit_image_atomic(struct nir_to_llvm_context *ctx,
>                 coords = params[param_count++] = LLVMBuildExtractElement(ctx->builder, get_src(ctx, instr->src[0]),
>                                                                         LLVMConstInt(ctx->i32, 0, false), ""); /* vindex */
>                 params[param_count++] = ctx->i32zero; /* voffset */
> -               params[param_count++] = i1false;  /* glc */
> -               params[param_count++] = i1false;  /* slc */
> +               params[param_count++] = ctx->i1false;  /* glc */
> +               params[param_count++] = ctx->i1false;  /* slc */
>         } else {
>                 bool da = glsl_sampler_type_is_array(type) ||
>                           glsl_get_sampler_dim(type) == GLSL_SAMPLER_DIM_CUBE;
>
>                 coords = params[param_count++] = get_image_coords(ctx, instr);
>                 params[param_count++] = get_sampler_desc(ctx, instr->variables[0], DESC_IMAGE);
> -               params[param_count++] = i1false; /* r128 */
> -               params[param_count++] = da ? i1true : i1false;      /* da */
> -               params[param_count++] = i1false;  /* slc */
> +               params[param_count++] = ctx->i1false; /* r128 */
> +               params[param_count++] = da ? ctx->i1true : ctx->i1false;      /* da */
> +               params[param_count++] = ctx->i1false;  /* slc */
>         }
>
>         switch (instr->intrinsic) {
> --
> 2.9.3
>
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list