diff --git a/src/amd/llvm/ac_llvm_build.c b/src/amd/llvm/ac_llvm_build.c index e43f6d6dac1..bf7c25ccf3a 100644 --- a/src/amd/llvm/ac_llvm_build.c +++ b/src/amd/llvm/ac_llvm_build.c @@ -309,14 +309,14 @@ LLVMValueRef ac_build_intrinsic(struct ac_llvm_context *ctx, const char *name, call = LLVMBuildCall2(ctx->builder, function_type, function, params, param_count, ""); - if (attrib_mask & AC_FUNC_ATTR_READNONE) { + if (attrib_mask & AC_ATTR_INVARIANT_LOAD) { if (LLVM_VERSION_MAJOR >= 15) LLVMSetMetadata(call, ctx->invariant_load_md_kind, ctx->empty_md); else LLVMAddCallSiteAttribute(call, -1, ac_get_llvm_attribute(ctx->context, "readnone")); } - if (attrib_mask & AC_FUNC_ATTR_CONVERGENT) + if (attrib_mask & AC_ATTR_CONVERGENT) LLVMAddCallSiteAttribute(call, -1, ac_get_llvm_attribute(ctx->context, "convergent")); LLVMAddCallSiteAttribute(call, -1, ac_get_llvm_attribute(ctx->context, "nounwind")); @@ -1350,7 +1350,7 @@ LLVMValueRef ac_build_buffer_load(struct ac_llvm_context *ctx, LLVMValueRef rsrc LLVMConstInt(ctx->i32, get_load_cache_policy(ctx, cache_policy), 0), }; result[i] = ac_build_intrinsic(ctx, "llvm.amdgcn.s.buffer.load.f32", ctx->f32, args, 3, - AC_FUNC_ATTR_READNONE); + AC_ATTR_INVARIANT_LOAD); } if (num_channels == 1) return result[0]; @@ -3150,7 +3150,7 @@ void ac_apply_fmask_to_sample(struct ac_llvm_context *ac, LLVMValueRef fmask, LL fmask_load.resource = fmask; fmask_load.dmask = 0xf; fmask_load.dim = is_array_tex ? ac_image_2darray : ac_image_2d; - fmask_load.attributes = AC_FUNC_ATTR_READNONE; + fmask_load.attributes = AC_ATTR_INVARIANT_LOAD; fmask_load.coords[0] = addr[0]; fmask_load.coords[1] = addr[1]; diff --git a/src/amd/llvm/ac_llvm_util.h b/src/amd/llvm/ac_llvm_util.h index efd9aa82820..c8bd6e7667e 100644 --- a/src/amd/llvm/ac_llvm_util.h +++ b/src/amd/llvm/ac_llvm_util.h @@ -40,11 +40,10 @@ extern "C" { struct ac_compiler_passes; struct ac_llvm_context; -enum ac_func_attr -{ - /* Call attributes. */ - AC_FUNC_ATTR_READNONE = (1 << 3), - AC_FUNC_ATTR_CONVERGENT = (1 << 4), +/* Attributes at call sites of intrinsics. */ +enum ac_call_site_attr { + AC_ATTR_INVARIANT_LOAD = 1 << 0, + AC_ATTR_CONVERGENT = 1 << 1, }; enum ac_target_machine_options @@ -99,7 +98,7 @@ void ac_llvm_set_target_features(LLVMValueRef F, struct ac_llvm_context *ctx); static inline unsigned ac_get_load_intr_attribs(bool can_speculate) { - return can_speculate ? AC_FUNC_ATTR_READNONE : 0; + return can_speculate ? AC_ATTR_INVARIANT_LOAD : 0; } LLVMTargetLibraryInfoRef ac_create_target_library_info(const char *triple); diff --git a/src/amd/llvm/ac_nir_to_llvm.c b/src/amd/llvm/ac_nir_to_llvm.c index 252f54316bd..8522b03b2ee 100644 --- a/src/amd/llvm/ac_nir_to_llvm.c +++ b/src/amd/llvm/ac_nir_to_llvm.c @@ -1497,7 +1497,7 @@ static LLVMValueRef lower_gather4_integer(struct ac_llvm_context *ctx, struct ac resinfo.dmask = 0xf; resinfo.lod = ctx->i32_0; resinfo.resource = args->resource; - resinfo.attributes = AC_FUNC_ATTR_READNONE; + resinfo.attributes = AC_ATTR_INVARIANT_LOAD; LLVMValueRef size = ac_build_image_opcode(ctx, &resinfo); /* Compute -0.5 / size. */ @@ -1526,7 +1526,7 @@ static LLVMValueRef lower_gather4_integer(struct ac_llvm_context *ctx, struct ac args->coords[c] = LLVMBuildFAdd(ctx->builder, tmp, half_texel[c], ""); } - args->attributes = AC_FUNC_ATTR_READNONE; + args->attributes = AC_ATTR_INVARIANT_LOAD; result = ac_build_image_opcode(ctx, args); if (instr->sampler_dim == GLSL_SAMPLER_DIM_CUBE) { @@ -1627,7 +1627,7 @@ static LLVMValueRef build_tex_intrinsic(struct ac_nir_context *ctx, const nir_te } } - args->attributes = AC_FUNC_ATTR_READNONE; + args->attributes = AC_ATTR_INVARIANT_LOAD; bool cs_derivs = ctx->stage == MESA_SHADER_COMPUTE && ctx->info->cs.derivative_group != DERIVATIVE_GROUP_NONE; if (ctx->stage == MESA_SHADER_FRAGMENT || cs_derivs) { @@ -1637,7 +1637,7 @@ static LLVMValueRef build_tex_intrinsic(struct ac_nir_context *ctx, const nir_te case nir_texop_tex: case nir_texop_txb: case nir_texop_lod: - args->attributes |= AC_FUNC_ATTR_CONVERGENT; + args->attributes |= AC_ATTR_CONVERGENT; break; default: break; @@ -2648,7 +2648,7 @@ static LLVMValueRef visit_image_load(struct ac_nir_context *ctx, const nir_intri get_image_coords(ctx, instr, dynamic_index, &args, GLSL_SAMPLER_DIM_2D, is_array); args.dmask = 0xf; args.dim = is_array ? ac_image_2darray : ac_image_2d; - args.attributes = AC_FUNC_ATTR_READNONE; + args.attributes = AC_ATTR_INVARIANT_LOAD; args.a16 = ac_get_elem_bits(&ctx->ac, LLVMTypeOf(args.coords[0])) == 16; res = ac_build_image_opcode(&ctx->ac, &args); diff --git a/src/gallium/drivers/radeonsi/si_shader_llvm_ps.c b/src/gallium/drivers/radeonsi/si_shader_llvm_ps.c index 9e8d9fa50d9..9ea75d44fc8 100644 --- a/src/gallium/drivers/radeonsi/si_shader_llvm_ps.c +++ b/src/gallium/drivers/radeonsi/si_shader_llvm_ps.c @@ -99,7 +99,7 @@ static LLVMValueRef si_nir_emit_fbfetch(struct ac_shader_abi *abi) args.opcode = ac_image_load; args.resource = image; args.dmask = 0xf; - args.attributes = AC_FUNC_ATTR_READNONE; + args.attributes = AC_ATTR_INVARIANT_LOAD; if (ctx->shader->key.ps.mono.fbfetch_msaa) args.dim =