aco: form export clauses

This is useful for the export priority workaround. It also moves
copy/conversion instructions up from in-between exports.

fossil-db (gfx1150):
Totals from 9974 (12.56% of 79395) affected shaders:
Instrs: 7038168 -> 6949186 (-1.26%)
CodeSize: 37988148 -> 37632220 (-0.94%)
Latency: 44759046 -> 44324922 (-0.97%); split: -0.97%, +0.00%
InvThroughput: 8213681 -> 8201222 (-0.15%); split: -0.15%, +0.00%

fossil-db (navi21):
Totals from 16785 (21.14% of 79395) affected shaders:
Instrs: 9282414 -> 9282302 (-0.00%)
CodeSize: 50252480 -> 50252032 (-0.00%)
Latency: 59716988 -> 59610334 (-0.18%); split: -0.18%, +0.00%
InvThroughput: 12681965 -> 12680380 (-0.01%); split: -0.01%, +0.00%

Signed-off-by: Rhys Perry <pendingchaos02@gmail.com>
Reviewed-by: Daniel Schürmann <daniel@schuermann.dev>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/30241>
This commit is contained in:
Rhys Perry
2024-07-17 14:43:40 +01:00
committed by Marge Bot
parent 08a4853ffd
commit 4574cd9fae

View File

@@ -305,7 +305,8 @@ is_memory_instr(const Instruction* const instr)
/* For memory instructions, we allow to reorder them with ALU if it helps
* to form larger clauses or to increase def-use distances.
*/
return instr->isVMEM() || instr->isFlatLike() || instr->isSMEM() || instr->accessesLDS();
return instr->isVMEM() || instr->isFlatLike() || instr->isSMEM() || instr->accessesLDS() ||
instr->isEXP();
}
constexpr unsigned max_sgpr = 128;