From 13a0ee8a516a1208ffeeba0227f2061a6444e602 Mon Sep 17 00:00:00 2001 From: Jason Ekstrand Date: Wed, 3 Mar 2021 00:01:15 -0600 Subject: [PATCH] nir: Add and use a new nir_ssa_def_rewrite_uses_src helper This is currently an alias for nir_ssa_def_rewrite_uses but we move all the instances which used it to write a non-SSA source to the newly named helper. Reviewed-by: Rhys Perry Acked-by: Alyssa Rosenzweig Acked-By: Mike Blumenkrantz Reviewed-by: Eric Anholt Part-of: --- src/compiler/nir/nir.c | 6 ++++++ src/compiler/nir/nir.h | 1 + src/compiler/nir/nir_from_ssa.c | 8 ++++---- src/compiler/nir/nir_lower_vec_to_movs.c | 2 +- src/freedreno/vulkan/tu_shader.c | 2 +- 5 files changed, 13 insertions(+), 6 deletions(-) diff --git a/src/compiler/nir/nir.c b/src/compiler/nir/nir.c index e1d18fdec02..91538adc781 100644 --- a/src/compiler/nir/nir.c +++ b/src/compiler/nir/nir.c @@ -1364,6 +1364,12 @@ nir_ssa_def_rewrite_uses_ssa(nir_ssa_def *def, nir_ssa_def *new_ssa) void nir_ssa_def_rewrite_uses(nir_ssa_def *def, nir_src new_src) +{ + nir_ssa_def_rewrite_uses_src(def, new_src); +} + +void +nir_ssa_def_rewrite_uses_src(nir_ssa_def *def, nir_src new_src) { if (new_src.is_ssa) { nir_ssa_def_rewrite_uses_ssa(def, new_src.ssa); diff --git a/src/compiler/nir/nir.h b/src/compiler/nir/nir.h index d8c32c46c54..e49480085a9 100644 --- a/src/compiler/nir/nir.h +++ b/src/compiler/nir/nir.h @@ -3947,6 +3947,7 @@ nir_ssa_dest_init_for_type(nir_instr *instr, nir_dest *dest, } void nir_ssa_def_rewrite_uses(nir_ssa_def *def, nir_src new_src); void nir_ssa_def_rewrite_uses_ssa(nir_ssa_def *def, nir_ssa_def *new_ssa); +void nir_ssa_def_rewrite_uses_src(nir_ssa_def *def, nir_src new_src); void nir_ssa_def_rewrite_uses_after(nir_ssa_def *def, nir_src new_src, nir_instr *after_me); diff --git a/src/compiler/nir/nir_from_ssa.c b/src/compiler/nir/nir_from_ssa.c index 86da6226aea..ad8df587eaf 100644 --- a/src/compiler/nir/nir_from_ssa.c +++ b/src/compiler/nir/nir_from_ssa.c @@ -547,7 +547,7 @@ rewrite_ssa_def(nir_ssa_def *def, void *void_state) reg = create_reg_for_ssa_def(def, state->builder.impl); } - nir_ssa_def_rewrite_uses(def, nir_src_for_reg(reg)); + nir_ssa_def_rewrite_uses_src(def, nir_src_for_reg(reg)); assert(nir_ssa_def_is_unused(def)); if (def->parent_instr->type == nir_instr_type_ssa_undef) { @@ -1000,7 +1000,7 @@ dest_replace_ssa_with_reg(nir_dest *dest, void *void_state) nir_register *reg = create_reg_for_ssa_def(&dest->ssa, state->impl); - nir_ssa_def_rewrite_uses(&dest->ssa, nir_src_for_reg(reg)); + nir_ssa_def_rewrite_uses_src(&dest->ssa, nir_src_for_reg(reg)); nir_instr *instr = dest->ssa.parent_instr; *dest = nir_dest_for_reg(reg); @@ -1052,12 +1052,12 @@ nir_lower_ssa_defs_to_regs_block(nir_block *block) /* Undefs are just a read of something never written. */ nir_ssa_undef_instr *undef = nir_instr_as_ssa_undef(instr); nir_register *reg = create_reg_for_ssa_def(&undef->def, state.impl); - nir_ssa_def_rewrite_uses(&undef->def, nir_src_for_reg(reg)); + nir_ssa_def_rewrite_uses_src(&undef->def, nir_src_for_reg(reg)); } else if (instr->type == nir_instr_type_load_const) { /* Constant loads are SSA-only, we need to insert a move */ nir_load_const_instr *load = nir_instr_as_load_const(instr); nir_register *reg = create_reg_for_ssa_def(&load->def, state.impl); - nir_ssa_def_rewrite_uses(&load->def, nir_src_for_reg(reg)); + nir_ssa_def_rewrite_uses_src(&load->def, nir_src_for_reg(reg)); nir_alu_instr *mov = nir_alu_instr_create(shader, nir_op_mov); mov->src[0].src = nir_src_for_ssa(&load->def); diff --git a/src/compiler/nir/nir_lower_vec_to_movs.c b/src/compiler/nir/nir_lower_vec_to_movs.c index c9572f604f8..bcad081b115 100644 --- a/src/compiler/nir/nir_lower_vec_to_movs.c +++ b/src/compiler/nir/nir_lower_vec_to_movs.c @@ -257,7 +257,7 @@ nir_lower_vec_to_movs_instr(nir_builder *b, nir_instr *instr, void *data) reg->num_components = vec->dest.dest.ssa.num_components; reg->bit_size = vec->dest.dest.ssa.bit_size; - nir_ssa_def_rewrite_uses(&vec->dest.dest.ssa, nir_src_for_reg(reg)); + nir_ssa_def_rewrite_uses_src(&vec->dest.dest.ssa, nir_src_for_reg(reg)); nir_instr_rewrite_dest(&vec->instr, &vec->dest.dest, nir_dest_for_reg(reg)); diff --git a/src/freedreno/vulkan/tu_shader.c b/src/freedreno/vulkan/tu_shader.c index 7dd90e125f3..8640f0107dd 100644 --- a/src/freedreno/vulkan/tu_shader.c +++ b/src/freedreno/vulkan/tu_shader.c @@ -245,7 +245,7 @@ lower_load_vulkan_descriptor(nir_intrinsic_instr *intrin) /* Loading the descriptor happens as part of the load/store instruction so * this is a no-op. */ - nir_ssa_def_rewrite_uses(&intrin->dest.ssa, intrin->src[0]); + nir_ssa_def_rewrite_uses_src(&intrin->dest.ssa, intrin->src[0]); nir_instr_remove(&intrin->instr); }