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: 688680decc
  r600/nir: fetch sources and split uniforms before emittting alu instructions

Signed-off-by: Gert Wollny <gert.wollny@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/6787>
This commit is contained in:
Gert Wollny
2020-09-19 15:24:15 +02:00
committed by Marge Bot
parent d78e7b7aee
commit eb3199db3e
2 changed files with 6 additions and 7 deletions

View File

@@ -189,10 +189,10 @@ void EmitAluInstruction::preload_src(const nir_alu_instr& instr)
const nir_op_info *op_info = &nir_op_infos[instr.op]; const nir_op_info *op_info = &nir_op_infos[instr.op];
assert(op_info->num_inputs <= 4); 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"; sfn_log << SfnLog::reg << "Preload:\n";
for (unsigned i = 0; i < op_info->num_inputs; ++i) { 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); m_src[i][c] = from_nir(instr.src[i], c);
sfn_log << SfnLog::reg << " " << *m_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"; 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) 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]; const nir_op_info *op_info = &nir_op_infos[instr.op];
if (op_info->num_inputs < 2) 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) { if (c[i]->sel() != sel || c[i]->kcache_bank() != kcache) {
AluInstruction *ir = nullptr; AluInstruction *ir = nullptr;
auto v = get_temp_vec4(); 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}); ir = new AluInstruction(op1_mov, v[k], m_src[idx[i]][k], {write});
emit_instruction(ir); emit_instruction(ir);
m_src[idx[i]][k] = v[k]; m_src[idx[i]][k] = v[k];

View File

@@ -51,7 +51,7 @@ private:
bool do_emit(nir_instr* instr) override; 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_mov(const nir_alu_instr& instr);
bool emit_alu_op1(const nir_alu_instr& instr, EAluOp opcode, const AluOpFlags &flags = 0); bool emit_alu_op1(const nir_alu_instr& instr, EAluOp opcode, const AluOpFlags &flags = 0);
@@ -108,7 +108,6 @@ private:
using vreg = std::array<PValue, 4>; using vreg = std::array<PValue, 4>;
unsigned m_num_src_comp;
std::array<PValue, 4> m_src[4]; std::array<PValue, 4> m_src[4];
}; };