[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