From eb3199db3e558672a332f9fcf26f90b9c3c04498 Mon Sep 17 00:00:00 2001 From: Gert Wollny Date: Sat, 19 Sep 2020 15:24:15 +0200 Subject: [PATCH] r600/sfn: make number of source components a local variable There is no need to keep that value as a member and it irritates Coverity. Fixes: 688680decce9 r600/nir: fetch sources and split uniforms before emittting alu instructions Signed-off-by: Gert Wollny Part-of: --- src/gallium/drivers/r600/sfn/sfn_emitaluinstruction.cpp | 10 +++++----- src/gallium/drivers/r600/sfn/sfn_emitaluinstruction.h | 3 +-- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/src/gallium/drivers/r600/sfn/sfn_emitaluinstruction.cpp b/src/gallium/drivers/r600/sfn/sfn_emitaluinstruction.cpp index 76d4993..b2da81f 100644 --- a/src/gallium/drivers/r600/sfn/sfn_emitaluinstruction.cpp +++ b/src/gallium/drivers/r600/sfn/sfn_emitaluinstruction.cpp @@ -189,10 +189,10 @@ void EmitAluInstruction::preload_src(const nir_alu_instr& instr) const nir_op_info *op_info = &nir_op_infos[instr.op]; assert(op_info->num_inputs <= 4); - m_num_src_comp = num_src_comp(instr); + unsigned nsrc_comp = num_src_comp(instr); sfn_log << SfnLog::reg << "Preload:\n"; for (unsigned i = 0; i < op_info->num_inputs; ++i) { - for (unsigned c = 0; c < m_num_src_comp; ++c) { + for (unsigned c = 0; c < nsrc_comp; ++c) { m_src[i][c] = from_nir(instr.src[i], c); sfn_log << SfnLog::reg << " " << *m_src[i][c]; } @@ -203,7 +203,7 @@ void EmitAluInstruction::preload_src(const nir_alu_instr& instr) sfn_log << SfnLog::reg << " extra:" << *m_src[1][3] << "\n"; } - split_constants(instr); + split_constants(instr, nsrc_comp); } unsigned EmitAluInstruction::num_src_comp(const nir_alu_instr& instr) @@ -244,7 +244,7 @@ unsigned EmitAluInstruction::num_src_comp(const nir_alu_instr& instr) -void EmitAluInstruction::split_constants(const nir_alu_instr& instr) +void EmitAluInstruction::split_constants(const nir_alu_instr& instr, unsigned nsrc_comp) { const nir_op_info *op_info = &nir_op_infos[instr.op]; if (op_info->num_inputs < 2) @@ -278,7 +278,7 @@ void EmitAluInstruction::split_constants(const nir_alu_instr& instr) if (c[i]->sel() != sel || c[i]->kcache_bank() != kcache) { AluInstruction *ir = nullptr; auto v = get_temp_vec4(); - for (unsigned k = 0; k < m_num_src_comp; ++k) { + for (unsigned k = 0; k < nsrc_comp; ++k) { ir = new AluInstruction(op1_mov, v[k], m_src[idx[i]][k], {write}); emit_instruction(ir); m_src[idx[i]][k] = v[k]; diff --git a/src/gallium/drivers/r600/sfn/sfn_emitaluinstruction.h b/src/gallium/drivers/r600/sfn/sfn_emitaluinstruction.h index 7cbdcfd..5c31b94 100644 --- a/src/gallium/drivers/r600/sfn/sfn_emitaluinstruction.h +++ b/src/gallium/drivers/r600/sfn/sfn_emitaluinstruction.h @@ -51,7 +51,7 @@ private: bool do_emit(nir_instr* instr) override; - void split_constants(const nir_alu_instr& instr); + void split_constants(const nir_alu_instr& instr, unsigned nsrc_comp); bool emit_mov(const nir_alu_instr& instr); bool emit_alu_op1(const nir_alu_instr& instr, EAluOp opcode, const AluOpFlags &flags = 0); @@ -108,7 +108,6 @@ private: using vreg = std::array; - unsigned m_num_src_comp; std::array m_src[4]; }; -- 2.7.4