pan/bi: Remove shift lanes invalid encodings

We were wrongly defining values that select more than one byte.

The swizzle used for H01 was working fine for v9 and v10, but this
generate an invalid encoding on Avalon.

This fixes this by using B00 variant as we are only using 8-bit sources.

Fixes: f45654af59 ("pan/va: Add packing routines")
Signed-off-by: Mary Guillemard <mary.guillemard@collabora.com>
Reviewed-by: Lars-Ivar Hesselberg Simonsen <lars-ivar.simonsen@arm.com>
Reviewed-by: Boris Brezillon <boris.brezillon@collabora.com>
Reviewed-by: Erik Faye-Lund <erik.faye-lund@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/33371>
(cherry picked from commit 637cb0a993)
This commit is contained in:
Mary Guillemard 2025-01-30 11:56:15 +00:00 committed by Eric Engestrom
parent f5e6b891fa
commit ee5713a418
4 changed files with 5 additions and 7 deletions

View file

@ -154,7 +154,7 @@
"description": "pan/bi: Remove shift lanes invalid encodings",
"nominated": true,
"nomination_type": 2,
"resolution": 0,
"resolution": 1,
"main_sha": null,
"because_sha": "f45654af5953d86b4b82760b51a502fb25244073",
"notes": null

View file

@ -200,7 +200,7 @@
<enum name="Lanes (8-bit)">
<desc>Used to select the 2 bytes for shifts of 16-bit vectors</desc>
<value>b02</value>
<reserved/>
<reserved/>
<reserved/>
<reserved/>
@ -210,8 +210,8 @@
<value>b33</value>
<reserved/>
<reserved/>
<value>b01</value>
<value>b23</value>
<reserved/>
<reserved/>
<reserved/>
<reserved/>
<reserved/>

View file

@ -238,7 +238,7 @@ va_lower_constants(bi_context *ctx, bi_instr *I)
* applying the lane select puts the desired constant (at least) in the
* bottom byte, so we can always select the bottom byte.
*/
if (info.lane && I->src[s].swizzle == BI_SWIZZLE_H01) {
if ((info.lane || info.lanes) && I->src[s].swizzle == BI_SWIZZLE_H01) {
assert(info.size == VA_SIZE_8);
I->src[s] = bi_byte(I->src[s], 0);
}

View file

@ -349,8 +349,6 @@ static enum va_lanes_8_bit
va_pack_shift_lanes(const bi_instr *I, enum bi_swizzle swz)
{
switch (swz) {
case BI_SWIZZLE_H01:
return VA_LANES_8_BIT_B02;
case BI_SWIZZLE_B0000:
return VA_LANES_8_BIT_B00;
case BI_SWIZZLE_B1111: