aco/ra: fix get_reg_for_operand() with no free registers
fossil-db (Sienna Cichlid): Totals from 195 (0.13% of 149839) affected shaders: CodeSize: 2352160 -> 2356720 (+0.19%); split: -0.00%, +0.20% Instrs: 431976 -> 433124 (+0.27%); split: -0.00%, +0.27% Latency: 10174434 -> 10174897 (+0.00%); split: -0.00%, +0.00% InvThroughput: 4044388 -> 4044425 (+0.00%); split: -0.00%, +0.00% Copies: 67634 -> 68762 (+1.67%); split: -0.00%, +1.67% fossil-db (Polaris): Totals from 186 (0.12% of 151365) affected shaders: CodeSize: 2272356 -> 2276848 (+0.20%); split: -0.00%, +0.20% Instrs: 432390 -> 433513 (+0.26%); split: -0.00%, +0.26% Latency: 13153394 -> 13160194 (+0.05%); split: -0.00%, +0.05% InvThroughput: 10889509 -> 10889967 (+0.00%); split: -0.00%, +0.00% SClause: 12745 -> 12747 (+0.02%) Copies: 74832 -> 75945 (+1.49%); split: -0.01%, +1.50% 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/10459>
This commit is contained in:
@@ -77,3 +77,22 @@ BEGIN_TEST(regalloc.32bit_partial_write)
|
||||
|
||||
finish_ra_test(ra_test_policy());
|
||||
END_TEST
|
||||
|
||||
BEGIN_TEST(regalloc.precolor.swap)
|
||||
//>> s2: %op0:s[0-1] = p_startpgm
|
||||
if (!setup_cs("s2", GFX10))
|
||||
return;
|
||||
|
||||
program->dev.sgpr_limit = 4;
|
||||
|
||||
//! s2: %op1:s[2-3] = p_unit_test
|
||||
Temp op1 = bld.pseudo(aco_opcode::p_unit_test, bld.def(s2));
|
||||
|
||||
//! s2: %op1_2:s[0-1], s2: %op0_2:s[2-3] = p_parallelcopy %op1:s[2-3], %op0:s[0-1]
|
||||
//! p_unit_test %op0_2:s[2-3], %op1_2:s[0-1]
|
||||
Operand op(inputs[0]);
|
||||
op.setFixed(PhysReg(2));
|
||||
bld.pseudo(aco_opcode::p_unit_test, op, op1);
|
||||
|
||||
finish_ra_test(ra_test_policy());
|
||||
END_TEST
|
||||
|
||||
Reference in New Issue
Block a user