From 64bd81ad515abc5cecb614bb2217cba899cd808d Mon Sep 17 00:00:00 2001 From: Job Noorman Date: Wed, 6 Aug 2025 13:23:09 +0200 Subject: [PATCH] ir3: allow 2 const srcs in scalar cat2 This seems to work just fine. Totals: MaxWaves: 2377530 -> 2377514 (-0.00%); split: +0.00%, -0.00% Instrs: 48221829 -> 48205626 (-0.03%); split: -0.04%, +0.01% CodeSize: 101944616 -> 101899122 (-0.04%); split: -0.05%, +0.00% NOPs: 8386509 -> 8386158 (-0.00%); split: -0.04%, +0.04% MOVs: 1484811 -> 1468853 (-1.07%); split: -1.12%, +0.04% COVs: 823667 -> 823654 (-0.00%) Full: 1716521 -> 1716547 (+0.00%); split: -0.00%, +0.00% (ss): 1113051 -> 1113127 (+0.01%); split: -0.06%, +0.07% (sy): 552269 -> 552289 (+0.00%); split: -0.05%, +0.05% (ss)-stall: 4013412 -> 4013046 (-0.01%); split: -0.08%, +0.07% (sy)-stall: 16739271 -> 16740516 (+0.01%); split: -0.04%, +0.05% Preamble Instrs: 11509699 -> 11504511 (-0.05%); split: -0.06%, +0.01% Constlen: 6923600 -> 6923784 (+0.00%) Last helper: 11692084 -> 11684565 (-0.06%); split: -0.10%, +0.03% Subgroup size: 12950976 -> 12951168 (+0.00%); split: +0.00%, -0.00% Cat0: 9241711 -> 9241269 (-0.00%); split: -0.04%, +0.03% Cat1: 2369298 -> 2353341 (-0.67%); split: -0.70%, +0.03% Cat2: 17467491 -> 17467666 (+0.00%); split: -0.00%, +0.00% Cat7: 1637754 -> 1637775 (+0.00%); split: -0.03%, +0.03% Totals from 14684 (8.92% of 164705) affected shaders: MaxWaves: 162410 -> 162394 (-0.01%); split: +0.01%, -0.02% Instrs: 11911204 -> 11895001 (-0.14%); split: -0.16%, +0.03% CodeSize: 24105958 -> 24060464 (-0.19%); split: -0.21%, +0.02% NOPs: 2217604 -> 2217253 (-0.02%); split: -0.16%, +0.14% MOVs: 430148 -> 414190 (-3.71%); split: -3.85%, +0.14% COVs: 205173 -> 205160 (-0.01%) Full: 261857 -> 261883 (+0.01%); split: -0.00%, +0.01% (ss): 305909 -> 305985 (+0.02%); split: -0.24%, +0.26% (sy): 142011 -> 142031 (+0.01%); split: -0.19%, +0.20% (ss)-stall: 999663 -> 999297 (-0.04%); split: -0.31%, +0.27% (sy)-stall: 3848489 -> 3849734 (+0.03%); split: -0.18%, +0.22% Preamble Instrs: 2569260 -> 2564072 (-0.20%); split: -0.27%, +0.07% Constlen: 880848 -> 881032 (+0.02%) Last helper: 4053538 -> 4046019 (-0.19%); split: -0.27%, +0.09% Subgroup size: 1042368 -> 1042560 (+0.02%); split: +0.05%, -0.03% Cat0: 2460826 -> 2460384 (-0.02%); split: -0.14%, +0.13% Cat1: 640559 -> 624602 (-2.49%); split: -2.59%, +0.10% Cat2: 4299351 -> 4299526 (+0.00%); split: -0.00%, +0.01% Cat7: 727051 -> 727072 (+0.00%); split: -0.08%, +0.08% Signed-off-by: Job Noorman Part-of: --- src/freedreno/ir3/ir3.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/freedreno/ir3/ir3.c b/src/freedreno/ir3/ir3.c index a07f20b2666..04895c37af3 100644 --- a/src/freedreno/ir3/ir3.c +++ b/src/freedreno/ir3/ir3.c @@ -1760,10 +1760,7 @@ ir3_valid_flags(struct ir3_instruction *instr, unsigned n, unsigned flags) */ if (m < instr->srcs_count) { struct ir3_register *reg = instr->srcs[m]; - if (instr->dsts[0]->flags & IR3_REG_SHARED) { - if ((flags & IR3_REG_CONST) && (reg->flags & IR3_REG_CONST)) - return false; - } else { + if (!(instr->dsts[0]->flags & IR3_REG_SHARED)) { if ((flags & (IR3_REG_CONST | IR3_REG_SHARED)) && (reg->flags & (IR3_REG_CONST | IR3_REG_SHARED))) return false;