From adf02de9f4086ad83195463f66e125e7d0e36f4c Mon Sep 17 00:00:00 2001 From: Simon Perretta Date: Thu, 23 Jan 2025 18:57:10 +0000 Subject: [PATCH] pco: temporarily prevent shared mem (coeffs) and vregs from being copy proped Signed-off-by: Simon Perretta Acked-by: Erik Faye-Lund Part-of: --- src/imagination/pco/pco_opt.c | 3 --- src/imagination/pco/pco_trans_nir.c | 8 ++++---- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/src/imagination/pco/pco_opt.c b/src/imagination/pco/pco_opt.c index 7847d8f567c..3fd7ffd2dab 100644 --- a/src/imagination/pco/pco_opt.c +++ b/src/imagination/pco/pco_opt.c @@ -258,9 +258,6 @@ static inline bool try_back_prop_instr(struct pco_use *uses, pco_instr *instr) pco_ref *pdest_from = &use->instr->dest[0]; - if (pco_ref_is_vreg(*pdest_from)) - return false; - assert(pco_ref_get_bits(*pdest_from) == pco_ref_get_bits(*pdest_to)); assert(pco_ref_get_chans(*pdest_from) == pco_ref_get_chans(*pdest_to)); assert(!pco_ref_has_mods_set(*pdest_from) && diff --git a/src/imagination/pco/pco_trans_nir.c b/src/imagination/pco/pco_trans_nir.c index 85665dc32c8..a451d254882 100644 --- a/src/imagination/pco/pco_trans_nir.c +++ b/src/imagination/pco/pco_trans_nir.c @@ -481,7 +481,7 @@ static pco_instr *trans_load_common_store(trans_ctx *tctx, assert(offset < range->count); pco_ref src = pco_ref_hwreg_vec(range->start + offset, reg_class, chans); - return pco_mov(&tctx->b, dest, src, .rpt = chans); + return pco_mbyp(&tctx->b, dest, src, .rpt = chans); } pco_ref src_base = pco_ref_hwreg_vec(range->start, reg_class, chans); @@ -515,7 +515,7 @@ static pco_instr *trans_store_common_store(trans_ctx *tctx, assert(offset < range->count); pco_ref dest = pco_ref_hwreg_vec(range->start + offset, reg_class, chans); - return pco_mov(&tctx->b, dest, data, .rpt = chans); + return pco_mbyp(&tctx->b, dest, data, .rpt = chans); } pco_ref dest_base = pco_ref_hwreg_vec(range->start, reg_class, chans); @@ -1067,14 +1067,14 @@ static pco_instr *trans_reg_intr(trans_ctx *tctx, assert(!nir_intrinsic_legacy_fabs(intr)); assert(!nir_intrinsic_legacy_fneg(intr)); - return pco_mov(&tctx->b, dest, pco_ref_ssa_vreg(func, src0, reg_bits)); + return pco_mbyp(&tctx->b, dest, pco_ref_ssa_vreg(func, src0, reg_bits)); case nir_intrinsic_store_reg: assert(!nir_intrinsic_base(intr)); assert(nir_intrinsic_write_mask(intr) == 1); assert(!nir_intrinsic_legacy_fsat(intr)); - return pco_mov(&tctx->b, pco_ref_ssa_vreg(func, src1, reg_bits), src0); + return pco_mbyp(&tctx->b, pco_ref_ssa_vreg(func, src1, reg_bits), src0); default: break;