Mesa (main): aco: use nir_ssa_def_is_unused() to determine if atomic dest is used
GitLab Mirror
gitlab-mirror at kemper.freedesktop.org
Fri Jul 9 12:30:24 UTC 2021
Module: Mesa
Branch: main
Commit: 543eb42c355798c26fb56b27a97ea1906116942e
URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=543eb42c355798c26fb56b27a97ea1906116942e
Author: Samuel Pitoiset <samuel.pitoiset at gmail.com>
Date: Fri Jul 9 11:21:01 2021 +0200
aco: use nir_ssa_def_is_unused() to determine if atomic dest is used
Instead of duplicating this chunk everywhere.
Signed-off-by: Samuel Pitoiset <samuel.pitoiset at gmail.com>
Reviewed-by: Rhys Perry <pendingchaos02 at gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11793>
---
src/amd/compiler/aco_instruction_selection.cpp | 47 +++-----------------------
1 file changed, 4 insertions(+), 43 deletions(-)
diff --git a/src/amd/compiler/aco_instruction_selection.cpp b/src/amd/compiler/aco_instruction_selection.cpp
index 0001840c09f..219760d2d21 100644
--- a/src/amd/compiler/aco_instruction_selection.cpp
+++ b/src/amd/compiler/aco_instruction_selection.cpp
@@ -6045,17 +6045,7 @@ void visit_image_store(isel_context *ctx, nir_intrinsic_instr *instr)
void visit_image_atomic(isel_context *ctx, nir_intrinsic_instr *instr)
{
- /* return the previous value if dest is ever used */
- bool return_previous = false;
- nir_foreach_use_safe(use_src, &instr->dest.ssa) {
- return_previous = true;
- break;
- }
- nir_foreach_if_use_safe(use_src, &instr->dest.ssa) {
- return_previous = true;
- break;
- }
-
+ bool return_previous = !nir_ssa_def_is_unused(&instr->dest.ssa);
const nir_variable *var = nir_deref_instr_get_variable(nir_instr_as_deref(instr->src[0].ssa->parent_instr));
const struct glsl_type *type = glsl_without_array(var->type);
const enum glsl_sampler_dim dim = glsl_get_sampler_dim(type);
@@ -6349,18 +6339,8 @@ void visit_store_ssbo(isel_context *ctx, nir_intrinsic_instr *instr)
void visit_atomic_ssbo(isel_context *ctx, nir_intrinsic_instr *instr)
{
- /* return the previous value if dest is ever used */
- bool return_previous = false;
- nir_foreach_use_safe(use_src, &instr->dest.ssa) {
- return_previous = true;
- break;
- }
- nir_foreach_if_use_safe(use_src, &instr->dest.ssa) {
- return_previous = true;
- break;
- }
-
Builder bld(ctx->program, ctx->block);
+ bool return_previous = !nir_ssa_def_is_unused(&instr->dest.ssa);
Temp data = as_vgpr(ctx, get_ssa_temp(ctx, instr->src[2].ssa));
if (instr->intrinsic == nir_intrinsic_ssbo_atomic_comp_swap)
@@ -6584,18 +6564,8 @@ void visit_store_global(isel_context *ctx, nir_intrinsic_instr *instr)
void visit_global_atomic(isel_context *ctx, nir_intrinsic_instr *instr)
{
- /* return the previous value if dest is ever used */
- bool return_previous = false;
- nir_foreach_use_safe(use_src, &instr->dest.ssa) {
- return_previous = true;
- break;
- }
- nir_foreach_if_use_safe(use_src, &instr->dest.ssa) {
- return_previous = true;
- break;
- }
-
Builder bld(ctx->program, ctx->block);
+ bool return_previous = !nir_ssa_def_is_unused(&instr->dest.ssa);
Temp addr = get_ssa_temp(ctx, instr->src[0].ssa);
Temp data = as_vgpr(ctx, get_ssa_temp(ctx, instr->src[1].ssa));
@@ -6956,16 +6926,7 @@ void visit_shared_atomic(isel_context *ctx, nir_intrinsic_instr *instr)
unreachable("Unhandled shared atomic intrinsic");
}
- /* return the previous value if dest is ever used */
- bool return_previous = false;
- nir_foreach_use_safe(use_src, &instr->dest.ssa) {
- return_previous = true;
- break;
- }
- nir_foreach_if_use_safe(use_src, &instr->dest.ssa) {
- return_previous = true;
- break;
- }
+ bool return_previous = !nir_ssa_def_is_unused(&instr->dest.ssa);
aco_opcode op;
if (data.size() == 1) {
More information about the mesa-commit
mailing list