jay: do moves on the float pipe where possible

this allows us to use accumulators more.

Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@intel.com>
Reviewed-by: Kenneth Graunke <kenneth@whitecape.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/41398>
This commit is contained in:
Alyssa Rosenzweig 2026-04-30 09:39:17 -04:00 committed by Marge Bot
parent 6f2b1cece6
commit 712719a2ae
2 changed files with 13 additions and 1 deletions

View file

@ -78,6 +78,18 @@ lower(jay_builder *b, jay_inst *I)
}
}
/* Do moves on the float point to promote accumulator usage */
if (I->type == JAY_TYPE_U32 &&
I->dst.file == GPR &&
jay_def_stride(b->shader, I->dst) == JAY_STRIDE_4 &&
((I->src[0].file == GPR &&
jay_def_stride(b->shader, I->src[0]) == JAY_STRIDE_4) ||
I->src[0].file == UGPR ||
jay_is_imm(I->src[0]))) {
I->type = JAY_TYPE_F32;
}
return false;
}

View file

@ -77,6 +77,6 @@ TEST_F(LowerPostRA, RewriteToSel)
TEST_F(LowerPostRA, CopyUGPR)
{
NEGCASE(jay_MOV(b, x, u4));
CASE(jay_MOV(b, x, u4), jay_MOV(b, x, u4)->type = JAY_TYPE_F32);
NEGCASE(jay_MOV(b, u4, x));
}