mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-04 22:49:13 +02:00
freedreno/ir3/cp: fix cmps folding
When we start doing cp iteratively, we hit the case that we've already `cmps.s.*` into a `cmps.s.ne p0.x, ...`.. when we try to do that again we can invert the logic condition. So check specifically the condition to prevent this. TODO we could maybe be more clever about this to combine conditions. But why isn't that happening in nir? For example, see dEQP-GLES31.functional.ssbo.layout.single_basic_array.packed.bool Signed-off-by: Rob Clark <robdclark@chromium.org> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5048>
This commit is contained in:
parent
39de27d3b9
commit
16cd232dbc
1 changed files with 2 additions and 1 deletions
|
|
@ -696,7 +696,8 @@ instr_cp(struct ir3_cp_ctx *ctx, struct ir3_instruction *instr)
|
|||
(instr->regs[0]->num == regid(REG_P0, 0)) &&
|
||||
ssa(instr->regs[1]) &&
|
||||
(instr->regs[2]->flags & IR3_REG_IMMED) &&
|
||||
(instr->regs[2]->iim_val == 0)) {
|
||||
(instr->regs[2]->iim_val == 0) &&
|
||||
(instr->cat2.condition == IR3_COND_NE)) {
|
||||
struct ir3_instruction *cond = ssa(instr->regs[1]);
|
||||
switch (cond->opc) {
|
||||
case OPC_CMPS_S:
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue