mirror of
https://gitlab.freedesktop.org/mesa/mesa.git
synced 2026-05-07 07:08:04 +02:00
nir/builder: Teach nir_pack_bits and nir_unpack_bits about 32_4x8
Also teach it how to pack and unpack 32-bits to or from 32-bits. Reviewed-by: Alyssa Rosenzweig <alyssa@rosenzweig.io> Reviewed-by: Caio Oliveira <caio.oliveira@intel.com> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/24741>
This commit is contained in:
parent
25743209c4
commit
52ee4cf229
1 changed files with 15 additions and 5 deletions
|
|
@ -1122,8 +1122,13 @@ nir_pack_bits(nir_builder *b, nir_def *src, unsigned dest_bit_size)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 32:
|
case 32:
|
||||||
if (src->bit_size == 16)
|
switch (src->bit_size) {
|
||||||
return nir_pack_32_2x16(b, src);
|
case 32: return src;
|
||||||
|
case 16: return nir_pack_32_2x16(b, src);
|
||||||
|
case 8: return nir_pack_32_4x8(b, src);
|
||||||
|
default: break;
|
||||||
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
|
@ -1144,7 +1149,7 @@ static inline nir_def *
|
||||||
nir_unpack_bits(nir_builder *b, nir_def *src, unsigned dest_bit_size)
|
nir_unpack_bits(nir_builder *b, nir_def *src, unsigned dest_bit_size)
|
||||||
{
|
{
|
||||||
assert(src->num_components == 1);
|
assert(src->num_components == 1);
|
||||||
assert(src->bit_size > dest_bit_size);
|
assert(src->bit_size >= dest_bit_size);
|
||||||
const unsigned dest_num_components = src->bit_size / dest_bit_size;
|
const unsigned dest_num_components = src->bit_size / dest_bit_size;
|
||||||
assert(dest_num_components <= NIR_MAX_VEC_COMPONENTS);
|
assert(dest_num_components <= NIR_MAX_VEC_COMPONENTS);
|
||||||
|
|
||||||
|
|
@ -1161,8 +1166,13 @@ nir_unpack_bits(nir_builder *b, nir_def *src, unsigned dest_bit_size)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 32:
|
case 32:
|
||||||
if (dest_bit_size == 16)
|
switch (dest_bit_size) {
|
||||||
return nir_unpack_32_2x16(b, src);
|
case 32: return src;
|
||||||
|
case 16: return nir_unpack_32_2x16(b, src);
|
||||||
|
case 8: return nir_unpack_32_4x8(b, src);
|
||||||
|
default: break;
|
||||||
|
}
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue