mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-04 22:49:13 +02:00
aco: use new disable_wqm for flatlike
No Foz-DB changes on GFX1201. Reviewed-by: Daniel Schürmann <daniel@schuermann.dev> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/35970>
This commit is contained in:
parent
a4c537c5b3
commit
922f559c3c
2 changed files with 10 additions and 4 deletions
|
|
@ -64,8 +64,6 @@ needs_exact(aco_ptr<Instruction>& instr)
|
|||
{
|
||||
if (instr->isMIMG()) {
|
||||
return instr->mimg().disable_wqm;
|
||||
} else if (instr->isFlatLike()) {
|
||||
return instr->flatlike().disable_wqm;
|
||||
} else {
|
||||
return instr->isEXP() || instr->opcode == aco_opcode::p_dual_src_export_gfx11;
|
||||
}
|
||||
|
|
@ -420,6 +418,8 @@ remove_disable_wqm(Instruction* instr)
|
|||
instr->mubuf().disable_wqm = false;
|
||||
} else if (instr->isMTBUF()) {
|
||||
instr->mtbuf().disable_wqm = false;
|
||||
} else if (instr->isFlatLike()) {
|
||||
instr->flatlike().disable_wqm = false;
|
||||
}
|
||||
|
||||
/* Remove the two masks so that the assembler doesn't need to handle them. */
|
||||
|
|
@ -841,6 +841,8 @@ instr_disables_wqm(Instruction* instr)
|
|||
return instr->mubuf().disable_wqm;
|
||||
} else if (instr->isMTBUF()) {
|
||||
return instr->mtbuf().disable_wqm;
|
||||
} else if (instr->isFlatLike()) {
|
||||
return instr->flatlike().disable_wqm;
|
||||
}
|
||||
|
||||
return false;
|
||||
|
|
|
|||
|
|
@ -2622,7 +2622,7 @@ visit_store_global(isel_context* ctx, nir_intrinsic_instr* instr)
|
|||
default: UNREACHABLE("store_global not implemented for this size.");
|
||||
}
|
||||
|
||||
aco_ptr<Instruction> flat{create_instruction(op, format, 3, 0)};
|
||||
aco_ptr<Instruction> flat{create_instruction(op, format, 5, 0)};
|
||||
if (write_address.regClass() == s2) {
|
||||
assert(global && write_offset.id() && write_offset.type() == RegType::vgpr);
|
||||
flat->operands[0] = Operand(write_offset);
|
||||
|
|
@ -2633,6 +2633,8 @@ visit_store_global(isel_context* ctx, nir_intrinsic_instr* instr)
|
|||
flat->operands[1] = Operand(s1);
|
||||
}
|
||||
flat->operands[2] = Operand(write_datas[i]);
|
||||
flat->operands[3] = Operand();
|
||||
flat->operands[4] = Operand();
|
||||
flat->flatlike().cache = get_cache_flags(ctx, access);
|
||||
assert(global || !write_const_offset);
|
||||
flat->flatlike().offset = write_const_offset;
|
||||
|
|
@ -2759,7 +2761,7 @@ visit_global_atomic(isel_context* ctx, nir_intrinsic_instr* instr)
|
|||
}
|
||||
|
||||
aco_opcode op = instr->def.bit_size == 32 ? op32 : op64;
|
||||
aco_ptr<Instruction> flat{create_instruction(op, format, 3, return_previous ? 1 : 0)};
|
||||
aco_ptr<Instruction> flat{create_instruction(op, format, 5, return_previous ? 1 : 0)};
|
||||
if (addr.regClass() == s2) {
|
||||
assert(global && offset.id() && offset.type() == RegType::vgpr);
|
||||
flat->operands[0] = Operand(offset);
|
||||
|
|
@ -2770,6 +2772,8 @@ visit_global_atomic(isel_context* ctx, nir_intrinsic_instr* instr)
|
|||
flat->operands[1] = Operand(s1);
|
||||
}
|
||||
flat->operands[2] = Operand(data);
|
||||
flat->operands[3] = Operand();
|
||||
flat->operands[4] = Operand();
|
||||
if (return_previous)
|
||||
flat->definitions[0] = Definition(dst);
|
||||
flat->flatlike().cache = get_atomic_cache_flags(ctx, return_previous);
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue